2015-03-27 5 views
-1

Я создаю складскую форму, которая включает до 20 файлов изображений. При загрузке изображений на сервер мне нужно изменить имя, а также вставить их в базу данных, чтобы он работал на каруселях веб-сайтов. Название изменится как и загрузка. Проблема, которая, как мне кажется, связана с тем, что изображения имеют одно и то же имя в базе данных, но уникальны при загрузке. Вероятно, я смотрю на очевидное. Любая помощь - любые идеи?Вставка массива файлов изображений в MySql DB

Вот где я;

<?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()); 
     } 

    } 
} 
?> 

И макет формы;

<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(); ?>"> 

кто может помочь, SCRACTHING МОЕЙ ГОЛОВЫ ЗДЕСЬ :-(

ответ

0

Это потому, что вы вставляя их в базу данных за пределами foreach -loop. Когда вы делаете это вне цикла, $file_name_new -переменного значение всегда будет таким же

Try со следующим:.

<?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

Нет - это не сработает, все, что он сделает, это создать 20 строк в базе данных. Изображения столбцов все равно будут одинаковыми. – John

+0

Я думаю, что это связано с count(), может быть, $ i = 0; $ i <= count(); $ i ++ Возможно, что-то вроде этого, а также позиция в массиве, например $ file_name_new [0] $ file_name_new [1] и т. д. и т. д. – John

Смежные вопросы