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>

在选择元素上选择 8 后,下面的 $ordqty 仍然输出 0。我认为它与循环和$_POST超全局有关,但是

检查项目[ ]

作品。帮助将不胜感激。谢谢。

$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

在我看来,如果您的数据库返回不止一行,那么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[]传递,但您将数量作为单个传递qty可能值得将数量选择的名称更改为qty[]

显然,您可能还需要更新代码以处理作为数组的 qty 并将其与 checkitem 值匹配。

于 2012-04-18T12:32:37.060 回答
1

问题应该是您有多个具有相同名称的选择,我假设 POST 变量将显示最后一个,该变量仍设置为 0。您可以为每个下拉列表使用 id 后缀,例如 qty_0、qty_1。

你能发布段生成的 HTML 代码吗?这可能会有所帮助。

于 2012-04-18T12:36:44.040 回答