генерация, обработка форм циклом

Gibiskus

Новичок
Добрый день! Помогите пожалуйста разобраться с циклами. Есть допустим 10 инпутов для загрузки картинок и 10 инпутов для описания их. Картинки сделал, записываются правильно и в таблицу помещаеться ид, ид_обьекта, название картинки, и описание над которым бьюсь сейчас.
PHP:
<?php
for($i=1; $i<11; $i++) { ?>

<strong>Описание:</strong><input type="text" name="description[<?php echo $i ?>]"><input name="uploadedfile<?php echo $i ?>" type="file" /><br>

<?php } ?>
Хочу циклом добавить описание для каждой из картинок, т.е описание для description2 должно быть title[2] и т.д. Учась, изучая, пишу:

PHP:
foreach ($_POST['title'] as $val)
    if(!empty($value)) {

       mysql_query("UPDATE `images_projects` SET `image_description`= '" . $value . "' WHERE object_id = '" . project_id . "' ") or error(mysql_error());  

    }
}
таблица с столбцом image_description заполняется последней записью из массива описаний. Не могу допереть какие действия нужно произвести, для того что бы все разбилось на части и записалось соответствуя каждому инпуту с файлом.
Подскажите пожалуйста, что где и когда?
 

TutanXamoN

Новичок
PHP:
$val=>$value
 description[<?php echo $i ?>]=>title[2]
Подскажите пожалуйста, что где и когда?
Если выше указанные две строчки ничего не подсказали - сделай
PHP:
var_dump()
$_POST[title] и $value,
 

Gibiskus

Новичок
var_dump стоит, туда нормально все попадает, $_POST['title] array(10) { [1]=> string(18) "Описание 1" [2]=> string(18) "Описание 2" [3]=> string(18) "Описание 3" ....
это же верно все, да ведь?
вот разобраться бы как его записать в таблицу как положено, например загружаю 3 фотки похожим способом через foreach ($_FILES as file) нормально, а в этот столбик "image_description" 3 раза запишется "Описание 3" то беж последнее заполненное значение .
 

TutanXamoN

Новичок
Gibiskus
Да вроде верно.
Я не могу сказать что где неправильно лишь по той причине что я не вижу кода и в приведенных отрывках вижу крайне разные название переменных.
Выложи полный код страницы и формы обработки на какую-нибудь пастбину.
Ибо вроде все правильно, но где-то ты запутался и упорно не выкладываешь тот кусок кода в который тебя можно ткнуть носом.
 

TutanXamoN

Новичок
Достаточно нормальный код.
А теперь посмотри на участки кода и скажи почему ВСЕМ изображениям в рамках ТЕКУЩЕГО сабмита присваивается последнее описание:
1. тут ты получаешь id проекта/текущего сабмита
$project_id=mysql_insert_id();
он у тебя один для всего сабмита
2. а тут ты присваиваешь описание картинкам где в качествеwhere у тебя не идентификатор картинки а общий для всех картинок идентификатор сабмита
PHP:
#
  foreach ($_POST['title']  as $val => $value  ) {
#
 
#
               
#
                if(!empty($value)) {
#
                   
#
   
#
               $peremennaya .= $post. "->" . $value.'<br>';
#
                 mysql_query("UPDATE  `" . $config['db']['pre'] .
#
                    "images_projects` SET `image_description`= '" . $value . "' WHERE object_id = " . validate_input($project_id)) or
#
                    error(mysql_error());
#
 }
 

Gibiskus

Новичок
так вроде и правильно, $project_id это идентификатор обьекта картинки (у которой есть отдельный уникальный ид) благодаря которому можно сделать выборку из другой таблицы, иными словами я говорю что вот эти объекты с одинаковым идом_обьекта должны быть заполнены. Ведь картинки таким способом заливаются нормально.
id | object_id | file_name | image_description |
12 35 hdhdh Описание 3
11 35 utututy Описание 3
10 35 tewtwtw Описание 3

Может я и не прав, но $project_id там должен быть получается и нужно подстроится и что то дописать, не допру что =( хотя все возможно....
 

KorP

Новичок
[del]
прошу прощения, такая чехорда кода, что не заметил, цикл с описание вне цикла с картинками

тогда товарищ выше прав про id записи картинки - $project_id присваивается в предыдущем цикле, соответственно он будет всегда иметь id последней вставленной картинки
 

Gibiskus

Новичок
да это действительно так, спасибо за наводочку.
И нужно было все переделать т.е заменить :
PHP:
foreach ($_FILES as $file) {
        if ($file['name'] != "") { ....
на :
PHP:
for($i=1; $i<11; $i++)
Аплоад и пост одним запросом где $project_id, подправить переменные, подставить к ним $i и все пошло как надо. Спасибо
 
Сверху