Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > Запись значений массива в БД


Автор: tailer_derden 2.4.2011, 14:28
Добрый день, товарищи!
Столкнулся с проблемой, вообщем попробую описать:

Есть таблица в БД
-----------------------------------------
  id  |  userfile  |  name_photo  |
-----------------------------------------
   1  |   1.jpg    |    название     |
-----------------------------------------

Есть форма, которая отправляет несколько картинок и соответствующие им названия:

Код

<form enctype="multipart/form-data" method="post" name="objectform" onsubmit="return sendform();">
<table>
<tr>  
  <td><b>Фотография:</b><br>  
  <input name="userfile[]" class="inputadmin" type="file" value=""><br>
  <input name="userfile[]" class="inputadmin" type="file" value=""><br>
  <input name="userfile[]" class="inputadmin" type="file" value="">
  </td>
  <td><b>Название:</b><br>  
  <input type="text" class="inptd" style="width: 570px;" name="name_photo[]" value=""><br>
  <input type="text" class="inptd" style="width: 570px;" name="name_photo[]" value=""><br>
  <input type="text" class="inptd" style="width: 570px;" name="name_photo[]" value="">
  </td>     
</tr>
</table>
</form>


Далее, обработчик получает массив из всех загруженных изображений и посредвством foreach происходит запись в БД - каждой картинке своя запись.
Скрипт правильно срабатывает - загружаю три картинки - появляется 3 записи в БД, но описание картинки ($_POST['name_photo']) для всех изображений, записывается от последней картинки.
Вот обработчик

Код

foreach ($_FILES['userfile']['name'] as $k=>$v)
    { 
     if ($_FILES["userfile"]["tmp_name"][$k] != '') 
     {    
     copy($_FILES["userfile"]["tmp_name"][$k],"/images/".$v.".jpg");      
     $v_new = $v.".jpg";
     $query = "INSERT INTO gallery_photo 
                     (userfile, name_photo) 
                                      VALUES 
                     ('".$v_new."', '".$_POST['name_photo']."')"; 
       mysql_query($query, $link);   
    }
    } 


Как сделать, чтобы каждой картинке записалось свое название name_photo соответственно?

Автор: patap 2.4.2011, 18:41
Код

.......

$query = "INSERT INTO gallery_photo 
                     (userfile, name_photo) 
                                      VALUES 
                     ('".$v_new."', '".$_POST['name_photo'][$k]."')";
......

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)