2013-02-25 2 views
0

У меня есть фотогалерея и вы хотите обновить сразу несколько подписей через ввод формы. Я попытался это исследовать, но я думаю, что у меня над головой. Это то, что у меня есть до сих пор, но оно не работает.Как обновить базу данных SQL с помощью цикла foreach?

Данные сохраняются в таблице SQL, называемой «галерея». Пример строка может выглядеть следующим образом:

gallery_id(key) = some number 
product_id  = 500 
photo   = photo.jpg 
caption   = 'look at this picture' 

Моих форма входов генерируются так:

$ SQL = mysql_query ("SELECT * FROM галереи WHERE product_id = 500");

while($row = mysql_fetch_array($sql)) { 
    $photo=$row['photo']; 
    $caption=$row['caption']; 
    echo '<img src="$photo"/>'; 
    echo '<input name="cap['.$caption.']" id="cap['.$caption.']" value="'.$caption.'" />'; 
    } 

Поэтому, как только я отправить форму я начинаю получить доступ к своим входы, как это, но я врезался в стену ..

if(isset($_POST['cap']) && is_array($_POST['cap'])) { 
     foreach($_POST['cap'] as $cap) { 
     mysql_query("UPDATE gallery 
        SET caption=$caption 
        WHERE ???????"); 
     } 

    } 

Я не знаю, как сказать, базу данных, где поставить эти входы, и, насколько я могу судить, вы не можете передавать более одной переменной в цикле foreach.

+2

вы нужду передать идентификатор исходной подписи, тоже. Таким образом, ваше утверждение будет соответствовать строкам 'UPDATE gallery SET caption = $ caption WHERE gallery_id = $ gallery_id' (я также надеюсь, что вы покажете сокращенный код, иначе вы откроете себе несколько SQL-инъекций). –

+1

Обратите внимание, что вы больше не должны использовать функции 'mysql_ *'. Весь диапазон [устарел] (http://www.php.net/manual/en/function.mysql-query.php). Он не обновлялся и не поддерживался в течение нескольких лет и существует только для обратной совместимости. Вы должны использовать методы 'mysqli_ *' или 'PDO'. –

ответ

0

$ _POST массив, если им не так (я не могу проверить это сейчас и им нового в PHP), вы можете сделать

foreach ($_POST as $p) { 
    $id=$p['id'];' 
    $cap=$p['caption']; 
mysql_query("UPDATE gallery 
       SET caption=$cap 
       WHERE photoid=$id"); 

} 
+0

Спасибо! Я даже не думал о массивах. Я собираюсь изучить их больше –

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