2012-01-26 10 views
0

12行を一度に更新しようとしています。私はこれを行うさまざまな方法の周りを検索したが、彼らの誰も私と一緒に働いた。私は「送信」を押すと何も起こっていません。誰もが以下のスクリプトで間違っているものを見つけるのを手伝ってくれる:1つのフォームを使用して複数の行を更新する

<?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のとあなたの入力をエスケープすることを確認してください。ユーザーの値を直接DBに入れておくと、SQLインジェクション攻撃で捕まえることができます。

2)ループ内の入力配列の値を正しく参照していません。

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

EDIT: 場合は、あなたの更新ステートメントでは、このような配列を参照することができるように、変数の周り} {入れなど$数量[$ i]は、$のtprice [$ 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] . "' "; 
+0

返信ありがとうございます。他の問題が解決されたら、私はmysql_real_escape_stringを使用します。あなたが提案するように、私は[$ i]をループに入れましたが、それでもテーブルへの変更は転送しません。データ転送を妨げるものは他にありますか? –

+0

おそらく、{}構文を使用する代わりに。演算子を使用して文字列を結合します。 – davidethell

+0

上記の構文でクエリを更新しますが、それでも機能しません。他の提案はありますか? –

関連する問題