2012-01-26 9 views
0

Я пытаюсь обновить сразу двенадцать строк. Я искал различные способы сделать это, но никто из них не работал со мной. Я не вижу никаких действий, когда я нажимаю «Отправить». Может кто-нибудь помочь мне найти то, что плохая в ниже сценарии:Обновление нескольких строк с использованием одной формы

<?php 
include 'connection.php'; 

$sql="SELECT * FROM tbl_maint_track1"; 
$result=mysql_query($sql); 

// Count table rows 
$count=mysql_num_rows($result); 
$sno = array(); 
?> 
<table width="500" border="0" cellspacing="1" cellpadding="0"> 

<form name="form1" method="post" action=""> 
<tr> 
<td> 
<table width="500" border="0" cellspacing="1" cellpadding="0"> 


<tr> 
<td align="center"><strong>S No</strong></td> 
<td align="center"><strong>Qty</strong></td> 
<td align="center"><strong>Maint Catgry</strong></td> 
<td align="center"><strong>Uprice</strong></td> 
<td align="center"><strong>Tprice</strong></td> 

</tr> 
<?php 
while($rows=mysql_fetch_array($result)){ 
?> 
<tr> 
<td align="center"><? $sno[]=$rows['sno']; ?><? echo $rows['sno']; ?></td> 
<td align="center"><input name="qty[]" type="text" id="qty" value="<? echo $rows['qty'];   ?>"></td> 
<td align="center"><input name="maint_catgry[]" type="text" id="maint_catgry" value="<?  echo $rows['maint_catgry']; ?>"></td> 
<td align="center"><input name="uprice[]" type="text" id="uprice" value="<? echo  $rows['uprice']; ?>"></td> 
<td align="center"><input name="tprice[]" type="text" id="tprice" value="<? echo  $rows['tprice']; ?>"></td> 

</tr> 
<?php 
} 
?> 
<tr> 
<td colspan="4" align="center"><input type="submit" name="Submit" value="Submit"></td> 
</tr> 
</table> 
</td> 
</tr> 
</form> 
</table> 
<?php 

$sno = $_POST['sno']; 
$qty = $_POST['qty']; 
$maint_catgry = $_POST['maint_catgry']; 
$uprice = $_POST['uprice']; 
$tprice = $_POST['tprice']; 

// Check if button name "Submit" is active, do this 
if(isset($_POST["$Submit"])){ 
for($i=0;$i<$count;$i++){ 
$sql1= "UPDATE tbl_maint_track1 SET qty = '{$qty[$i]}', maint_catgry = '{$maint_catgry[$i]}', uprice   = '{$uprice[$i]}', tprice = '{$tprice[$i]}' WHERE sno = '{$sno[$i]}' "; 
$result1=mysql_query($sql1); 
} 
} 

if($result1){ 
echo "Thanks, $count records updated"; 
} 
else 
{ 
echo "No record updated"; 
} 
close_conn(); 
?> 

есть лучший способ обновить несколько записи с одной формой?

Заранее спасибо.

ответ

0

Пара вещей:

1) Убедитесь, что вы убегаете ввод с mysql_real_escape_string. Ввод пользовательских значений непосредственно в БД может привести вас к атакам SQL-инъекций.

2) Вы неправильно ссылаетесь на свои значения входного массива в своем цикле. Вы должны использовать $ шт [$ я], $ tprice [$ я] и т.д. Помещенный {} вокруг переменных, чтобы иметь возможность ссылаться на массивы, как это в вашем заявлении обновление:

SET qty = '{$qty[$i]}', ... 

EDIT: If у вас возникли проблемы с приведенным выше синтаксисом:

$sql1= "UPDATE tbl_maint_track1 SET qty = '" . $qty[$i] . "', maint_catgry = '" . $maint_catgry[$i] . "', uprice = '" . $uprice[$i] . "', tprice = '" . $tprice[$i] . "' WHERE sno = '" . $sno[$i] . "' "; 
+0

Спасибо, Дэвид за ответ. Я буду использовать mysql_real_escape_string, как только будут решены другие проблемы. Как вы полагаете, я поставил [$ i] в цикле, но все же он не переносит изменения в таблицу. Есть ли что-то еще, препятствующее передаче данных? –

+0

Возможно, попробуйте обновленный синтаксис, где вместо синтаксиса {} вы просто используете. оператора, чтобы присоединиться к строкам. – davidethell

+0

Я обновляю запрос с помощью синтаксиса выше, однако он все еще не работает. Любое другое предложение? –

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