Войти

Показать полную графическую версию : [PHP,MySQL] множественный UPDATE


blackmane
23-02-2012, 16:01
Доброго времени суток!

Подскажите как сделать так, чтобы при изменении нескольких полей, из веб формы, изменения вносились в БД.
Все поля, а не только последняя строчка.
На одной странице выводится через цикл содержимое таблицы, при помощи checkbox отправляю запрос к файлу edit.php:

$firm = $_POST['firm'];
if(!empty($firm))
{
include "../../index.php";
$query = "(" ;
foreach($firm as $val) $query.= "$val,";
$query = substr($query, 0, strlen($query) - 1 ). ")" ;
$query = mysql_query("SELECT * FROM `firm_print` WHERE `id` IN ".$query);

$array = mysql_fetch_array($query);
echo (" <div style='width:100%%;'><br /> <!--DIV 25%% OPEN-->
<div style='text-align:center; background-color:#CCC'><strong>{$lang['p_add_firm_print']}<br />(DB firm_print)</strong></div>

<form name='myForm_4' action='update.php' method='post' onSubmit='return splash_4();'>
<input type='hidden' name='action_e' value='add'>
<table>
<tr><td>{$lang['firm']}</td></tr>");
do {
printf (
"

<tr><td><input type=hidden value='%s'><input name='firm_e' maxlength=60 size=30 value='%s'></td></tr>
"

,$array['id'],$array['firm']);
}
while ($array = mysql_fetch_array($query));

echo ("
<tr><td><input type='submit' value='{$lang['send']}'></td></tr>
</table>

</form>
</div><!--DIV 25%% CLOSED-->");
include "../../footer.php";
}


Где оно выводится и я изменяю поля, с одним полем проблем никаких нет, а вот несколько?, вычитал что нужно использовать foreach, но он мне вообще не понятен ((
update.php

include "../../data/dbconfig.php";
//print_r ($_POST);
$firm_e = $_POST['firm_e'];
$id_e = $_POST['id_e'];
$action_e=$_POST['action_e'];
if ($action_e=="add")
{
$sql="UPDATE `firm_print` SET `firm`='$firm_e' WHERE `id`='$id_e'";
$r=mysql_query ($sql);
header ("Location: ../insert_print.php");
}
else (mysql_error());

Предпринял жалкую попытку сделать через цикл, но результат равен нулю, также попробовал так:

include "../../data/dbconfig.php";
print_r ($_POST['firm_e']);
$firm_e = $_POST['firm_e'];
$id_e = $_POST['id_e'];
$action_e=$_POST['action_e'];
if ($action_e=="add")
{
foreach($firm_e as $id=>$firm_e) {
$q = mysql_query ("UPDATE `firm_print` SET `firm`='$firm_e' WHERE `id`='$id_e'");}

}
}
else (mysql_error());
+ <input name='firm_e[%s]' maxlength=60 size=30 value='%s'>

Как это реализовать?
Заранее благодарен.




© OSzone.net 2001-2012