0

以下のコードで数量を選択し、選択した数量のアイテムを確認してから、追加ボタンをクリックしてフォームを送信します。

<form name="addtocart" method="post" action="checkbox.php"> 

//foreach loop below loops through array of items fetched from the db
<?php foreach($result2 as $row) { ?>

<select name="qty">
<?php for ($i=0; $i < $row['prd_quantity'] + 1 ; $i++) { ?>
<option value = "<?php echo $i; ?>" ><?php echo $i; ?></option>;    
<?php }?>
</select>

<input type="checkbox" name="checkitem[]" id="addtocart"  value="<?php echo   $row['prd_id'] ?>" optional /></p>

<?php } ?>
enter code here
<input type="submit" value="Make Order"/>

</form>

$_POST選択した後、たとえばselect要素で8とすると、以下の$ ordqtyはまだ0を出力します。ループとスーパーグローバルに関係があると考えていますが、

チェックアイテム[]

動作します。助けていただければ幸いです。ありがとう。

$ordqty = $_POST['qty'];
//$ordqty returns 0.

以下は、最初のアイテムに対して生成されたHTMLです$row['prd_quantity'] = 8

<select name = "qty">

<option value="0">0</option>
;
<option value="1">1</option>
;
<option value="2">2</option>
;
<option value="3">3</option>
;
<option value="4">4</option>
;
<option value="5">5</option>
;
<option value="6">6</option>
;
<option value="7">7</option>
;
<option value="8">8</option>
;
</select>
4

3 に答える 3

2

DBから返される行が複数ある場合はselect、応答内に複数の要素があり、すべてが。という名前になっているようqtyです。これは、フォームが正しい値を投稿していない理由を説明している可能性があります。確認しましたか?

次の線に沿って何かを試してください:

<select name="qty[<?php echo $row['prd_id']; ?>]">
    <?php for ($i=0; $i < $row['prd_quantity'] + 1 ; $i++) { ?>
        <option value = "<?php echo $i; ?>" ><?php echo $i; ?></option>;    
    <?php }?>
</select>

これにより、製品IDでキー設定された一連の選択が投稿されます。

アップデート

商品IDを使用して、選択したアイテムの数量の配列にインデックスを付けるというアイデアをありがとうございます。

そして、qty []配列の要素にアクセスするには、これがより良い可能性があることを私は知っていますが、私はそうしました:

//Array below holds the values of the quantities entered

$new_ord_qty = $_POST['qty'];

//Array below holds product ids -- in the HTML code -- prodid is the name of a hidden inputfield inside the foreach loop whose value i have set to $row['prd_id'] 

$prod_id_array = $_POST['prodid']; 

for($i=0; $i<count($checked_items_array);$i++) {

for ($i=0; $i < count($new_ord_qty); $i++) {

//Array below holds the values of the quantities entered with the prod_id_array elements as //the indices

$ord_qty = $new_ord_qty[$prod_id_array[$i]];

// Here echo will output an array of the quantities entered for the checked items
echo $ord_qty; 

}

}

皆さん、ありがとう。

于 2012-04-18T12:38:16.417 に答える
1

問題は、チェックボックスを配列として渡すことかもしれませんがcheckitems[]、数量を1つとして渡すことqtyは、数量選択の名前を次のように変更する価値があるかもしれません。qty[]

もちろん、配列である数量を処理し、それをcheckitem値に一致させるために、コードを更新する必要がある場合もあります。

于 2012-04-18T12:32:37.060 に答える
1

問題は、同じ名前の複数の選択があることです。POST変数には、まだ0に設定されている最後の選択が表示されると思います。各ドロップダウンリストにqty_0、qty_1などのidpostfixを使用できます。

セグメントが生成するHTMLコードを投稿できますか?それは役に立つかもしれません。

于 2012-04-18T12:36:44.040 に答える