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>

そして、これがファイル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 のために他のファイルに送信すると、最後のファイルとして取得されます。

助けてください:$

*更新*

*解決策*

だから私は自分のコードの問題を解決し、チェックボックスをチェックインする前にテキストボックスを無効にする必要があるだけなので、配列にはヌルインデックスがありません..ヌルなしで入力された値のみを持ちます:))

4

2 に答える 2

0

「数量」入力フィールドに一意の名前を付けるか、リストされているすべてのチェックボックスの配列としてキャストする必要があります。そうしないと、受信フォームを送信すると、「数量」の最後の値が福音として取得されます。

于 2012-04-06T16:19:59.697 に答える
0

これは、入力フォーム ボックスに次のものがあるためです。

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

そのため、数量が挿入されるたびに、転送された値が更新されます。そして、ボックスに挿入された最後の値Quantityが更新されます。代わりに、このフォーム入力を次のように変更します。

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

次に、更新クエリで次のように変更します。

$resultop=mysql_query("UPDATE item SET Quantity='" . $qun[$i] . "'where Id='".$options[$i]."'");
于 2012-04-06T16:20:13.593 に答える