2012-04-06 3 views
0

**こんにちは 私はこのPHPコードを作成しています。チェックボックスに基づいてデータベースをテキストボックスで更新します

このチェックボックスに属する数量を更新したいとします。 私のコードの正確な問題は:たとえば、私は3つのチェックボックスを持っていて、同時にそれらの数量を入力すると、更新が正しく行われ、他の2つの更新しかし、私が2番目または3番目のものだけを同時に更新するのではなく、最初のものの古い値の量を取ります: ""( どのようにしてコードを変更してすべてのアイテムを更新できますか? 。のみチェックされた項目ここ

は、チェックボックスの数量を表示するための私のコードであるファイルmanage_items.phpで

:**

<?php 
$DB_HOST ='localhost'; 
$DB_USER ='root'; 
$DB_PASSWORD=''; 
$DB_DATABASE='dks'; 

$con= mysql_connect($DB_HOST ,$DB_USER , $DB_PASSWORD); 
if(!$con){ 
die('Failed to connect to server :'.mysql_error()); 
} 

$db=mysql_select_db($DB_DATABASE); 
if(!$db){ 
die("unable to select database"); 
}?> 

$qry="SELECT * FROM catalog"; 
$result= mysql_query($qry); 
if($result){ 
while($info = mysql_fetch_array($result)) 
{ 

print "<h3><a href=\"\#\"> cat:".$info['name']."</a></h3><div>"; 


$qryitem="SELECT * FROM item WHERE Id=". $info['Cid']; 
$resultitem=mysql_query($qryitem); 
if($resultitem){ 

?> 

<form method="post" action="manage_item_action.php"> 
<?php 
while($info=mysql_fetch_array($resultitem)) 
{ 
?> 
<input type="checkbox" name="op[]" value="<?php echo $info['Id'];?>"/><?php echo $info['name'];?> 
<label> Quantity <input type="text" name="Quantity[]" value="<?php echo $info['Quantity'];?>"/></label> 
<br/> 

     <?php 
     } 
    } 


    else echo "There are no items."; 


    print "</div>"; 

} 
} 

?> 

</div> 

<input type="submit" value="update" name="submit"/> 
</form> 

、ここで更新 のexcutionは、ファイルmanage_item_action.phpに

<?php 
$DB_HOST ='localhost'; 
$DB_USER ='root'; 
$DB_PASSWORD=''; 
$DB_DATABASE='dks'; 

$con= mysql_connect($DB_HOST ,$DB_USER , $DB_PASSWORD); 
if(!$con){ 
die('Failed to connect to server :'.mysql_error()); 
} 

$db=mysql_select_db($DB_DATABASE); 
if(!$db){ 
die("unable to select database"); 
} 

$options=$_POST['op']; 
$qun=$_POST['Quantity']; 
$size =count($options); 
for($i =0; $i<$size; $i++) 
{ 

//$qryop="UPDATE item SET Quantity =".$qun."WHERE Id =".$options[$i]."';"; 
$resultop=mysql_query("update item set Quantity='".$qun[i]."'where Id='".$options[$i]."'"); 


} 
if($resultop){ 
header("location: manage_items.php");} 
else echo "there was an error" 

?> 

である私は、問題を解決する方法を知りません! しかし、私の主な問題は、すべてのテキストボックスの名前が同じだと思います。 私はecutionのためにそれを他のファイルに送信するとき、それは最後のものとしてそれを取る。

私を助けてください:$

* は* *

を更新しましソリューション *

ので、私は自分のコードの問題を解決し、その唯一のテキストボックスを必要配列がヌルインデックスを持たないようにチェックボックスをチェックインする前に無効にする必要があります。ヌルなしで入力した値だけを持ちます :))

+0

:、あなたの更新用クエリで、その後に変更を

<!-- This will forward an array to php script --> Quantity <input type="text" name="Quantity[]"... 

と:その代わり、これにこのフォーム入力を変更"$ qun [i]。" 'Id =' "。$ options [$ i]。" '";'そして出力も質問に入れます。 – hjpotter92

答えて

0

「数量」入力フィールドに一意の名前を付けるか、リストされたすべてのチェックボックスの配列としてキャストする必要があります。受信フォームが送信されると、最終的に「数量」の値がゴスペルになります。あなたの入力フォームボックスであるためだ

0

は、あなたが持っている:

Quantity <input type="text" name="Quantity" ... 

ので、挿入された量のそれぞれに、転送の値が更新されています。 Quantityボックスに最後に挿入された値が更新されます。 `エコー「更新アイテムセット数量=」を使用し、代わりにクエリを実行する

$resultop=mysql_query("UPDATE item SET Quantity='" . $qun[$i] . "'where Id='".$options[$i]."'"); 
+0

私はあなたの答えをありがとうが、私は前にそれを試して、それは動作しませんでした: ""(..あなたは別の解決策を考えてくださいすることができます – proR

+0

こんにちは再び:私の質問にいくつかの変更.. – proR

関連する問題