2015-03-27 1 views
-1

Je crée un formulaire de stock qui comprend jusqu'à 20 fichiers image. Lors du téléchargement des images sur le serveur, j'ai besoin de changer le nom et également les insérer dans une base de données afin qu'il fonctionne sur le carrousel des sites Web. Le nom change aussi bien que le téléchargement. Le problème que je semble avoir est que les images sont le même nom dans la base de données, mais unique sur le téléchargement. Je suis probablement sur l'évidence. Toute aide - Des idées?Insérer un tableau de fichiers image dans une base de données MySql

Voici où je suis;

<?php 

if(Input::exists()) { 

    if(Token::check(Input::get('token'))) { 

     try { 

      if(!empty($_FILES['image']['name'][0])) { 

       $files = $_FILES['image']; 

       $uploaded = array(); 
       $failed = array(); 

       $allowed = array('gif', 'png', 'jpg', 'jpeg'); 

       foreach($files['name'] as $position => $file_name) { 

        $file_tmp = $files['tmp_name'][$position]; 
        $file_size = $files['size'][$position]; 
        $file_error = $files['error'][$position]; 

        $file_ext = explode('.', $file_name); 
        $file_ext = strtolower(end($file_ext)); 

        if(in_array($file_ext, $allowed)) { 

         if($file_error === 0) { 

          if($file_size <= 2097152) {// 2MB 

           $file_name_new = uniqid('', true) . '.' . $file_ext; 
           $file_destination = 'assets/uploads/' . $file_name_new; 


           if(move_uploaded_file($file_tmp, $file_destination)) { 
            $uploaded[$position] = $file_destination; 
           } else { 
            $failed[$position] = "[{$file_name}] failed to upload"; 
           } 

          } else { 
           $failed[$position] = "[{$file_name}] is too large"; 
          } 

         } else { 
          $failed[$position] = "[{$file_name}] errored with code [{$file_error}]"; 
         } 

        } else { 
         $failed[$position] = "[{$file_name}] file extension '{$file_ext}' is not allowed"; 
        } 

       } 

      } 

      $insert = DB::getInstance()->insert('stock', array(
        'image'   => $file_name_new, 
        'image_1'  => $file_name_new, 
        'image_2'  => $file_name_new, 
        'image_3'  => $file_name_new, 
        'image_4'  => $file_name_new, 
        'image_5'  => $file_name_new, 
        'image_6'  => $file_name_new, 
        'image_7'  => $file_name_new, 
        'image_8'  => $file_name_new, 
        'image_9'  => $file_name_new, 
        'image_10'  => $file_name_new, 
        'image_11'  => $file_name_new, 
        'image_12'  => $file_name_new, 
        'image_13'  => $file_name_new, 
        'image_14'  => $file_name_new, 
        'image_15'  => $file_name_new, 
        'image_16'  => $file_name_new, 
        'image_17'  => $file_name_new, 
        'image_18'  => $file_name_new, 
        'image_19'  => $file_name_new 
      )); 

     } catch(Exception $e) { 
      die($e->getMessage()); 
     } 

    } 
} 
?> 

Et la maquette de formulaire;

<form action="" method="post" enctype="multipart/form-data"> 

<div class="row"> 
    <div class="form-group"> 
     <div class="col-md-6"> 
      <label class="block"><strong>Upload Vehicle Images</strong><br>(Min = 1)<br>(Max = 20)</label><br><br> 
      <input type="file" name="image[]" id="file" class="form-control" tabindex="29"><br><br> 
      <input type="file" name="image[]" id="file" class="form-control" tabindex="30"><br><br> 
      <input type="file" name="image[]" id="file" class="form-control" tabindex="31"><br><br> 
      <input type="file" name="image[]" id="file" class="form-control" tabindex="32"><br><br> 
      <input type="file" name="image[]" id="file" class="form-control" tabindex="33"><br><br> 
      <input type="file" name="image[]" id="file" class="form-control" tabindex="34"><br><br> 
      <input type="file" name="image[]" id="file" class="form-control" tabindex="35"><br><br> 
      <input type="file" name="image[]" id="file" class="form-control" tabindex="36"><br><br> 
      <input type="file" name="image[]" id="file" class="form-control" tabindex="37"><br><br> 
      <input type="file" name="image[]" id="file" class="form-control" tabindex="38"><br><br> 
      <input type="file" name="image[]" id="file" class="form-control" tabindex="39"><br><br> 
      <input type="file" name="image[]" id="file" class="form-control" tabindex="40"><br><br> 
      <input type="file" name="image[]" id="file" class="form-control" tabindex="41"><br><br> 
      <input type="file" name="image[]" id="file" class="form-control" tabindex="42"><br><br> 
      <input type="file" name="image[]" id="file" class="form-control" tabindex="43"><br><br> 
      <input type="file" name="image[]" id="file" class="form-control" tabindex="44"><br><br> 
      <input type="file" name="image[]" id="file" class="form-control" tabindex="45"><br><br> 
      <input type="file" name="image[]" id="file" class="form-control" tabindex="46"><br><br> 
      <input type="file" name="image[]" id="file" class="form-control" tabindex="47"><br><br> 
      <input type="file" name="image[]" id="file" class="form-control" tabindex="48"><br> 
     </div> 
    </div> 
</div> 
<br> 
<button class="btn btn-primary disabled" type="submit">FORM SUBMIT</button> 
<input type="hidden" name="token" value="<?php echo Token::generate(); ?>"> 

CAN AIDE TOUTE PERSONNE, SCRACTHING MA TÊTE ICI :-(

Répondre

0

C'est parce que vous les insérer dans la base de données en dehors du foreach -loop. Lorsque vous le faites en dehors de la boucle, $file_name_new valeur -variable sera toujours le même

Essayez avec ce qui suit:.

<?php 

if(Input::exists()) { 

    if(Token::check(Input::get('token'))) { 

     try { 

      if(!empty($_FILES['image']['name'][0])) { 

       $files = $_FILES['image']; 

       $uploaded = array(); 
       $failed = array(); 

       $allowed = array('gif', 'png', 'jpg', 'jpeg'); 

       foreach($files['name'] as $position => $file_name) { 

        $file_tmp = $files['tmp_name'][$position]; 
        $file_size = $files['size'][$position]; 
        $file_error = $files['error'][$position]; 

        $file_ext = explode('.', $file_name); 
        $file_ext = strtolower(end($file_ext)); 

        if(in_array($file_ext, $allowed)) { 

         if($file_error === 0) { 

          if($file_size <= 2097152) {// 2MB 

           $file_name_new = uniqid('', true) . '.' . $file_ext; 
           $file_destination = 'assets/uploads/' . $file_name_new; 


           if(move_uploaded_file($file_tmp, $file_destination)) { 
            $uploaded[$position] = $file_destination; 
           } else { 
            $failed[$position] = "[{$file_name}] failed to upload"; 
           } 

          } else { 
           $failed[$position] = "[{$file_name}] is too large"; 
          } 

         } else { 
          $failed[$position] = "[{$file_name}] errored with code [{$file_error}]"; 
         } 

        } else { 
         $failed[$position] = "[{$file_name}] file extension '{$file_ext}' is not allowed"; 
        } 

        $insert = DB::getInstance()->insert('stock', array(
        'image'   => $file_name_new, 
        'image_1'  => $file_name_new, 
        'image_2'  => $file_name_new, 
        'image_3'  => $file_name_new, 
        'image_4'  => $file_name_new, 
        'image_5'  => $file_name_new, 
        'image_6'  => $file_name_new, 
        'image_7'  => $file_name_new, 
        'image_8'  => $file_name_new, 
        'image_9'  => $file_name_new, 
        'image_10'  => $file_name_new, 
        'image_11'  => $file_name_new, 
        'image_12'  => $file_name_new, 
        'image_13'  => $file_name_new, 
        'image_14'  => $file_name_new, 
        'image_15'  => $file_name_new, 
        'image_16'  => $file_name_new, 
        'image_17'  => $file_name_new, 
        'image_18'  => $file_name_new, 
        'image_19'  => $file_name_new 
      )); 

       } 

      } 

     } catch(Exception $e) { 
      die($e->getMessage()); 
     } 

    } 
} 
+0

Non - Cela ne fonctionnerait pas, tout ce qu'il fera est de créer 20 lignes dans la base de données. Les images des colonnes seraient toujours les mêmes – John

+0

Je pense que cela a à voir avec count() peut-être que $ i = 0; $ i <= count(); $ i ++ Peut-être quelque chose comme ça et aussi la position dans le tableau par exemple $ file_name_new [0] $ file_name_new [1] etc etc – John