我在从table
获取正确值时遇到问题。
我遇到的问题:
checkbox
并输入quantity
时,它是未定义的偏移:0 但checkbox
的价值是正确的。
我期待的是当我选择第二个或其他checkbox
(排除第一个checkbox
)时,我应该得到该输入字段的值。
HTML
<?php foreach($results as $row) { ?>
<tr>
<td><input type="checkbox" name="products[]" value="<?php echo $row->items_id; ?>"></td>
<td><?php echo $row->item_name; ?></td>
<td><input type="number" name="quantity[]" class="form-control"></td>
</tr>
<?php } ?>
<input type="submit" name="process" class="btn btn-primary" value="Process">
PHP
$quantity = $_POST['quantity'];
$products = $_POST['products'];
$count_selected = count($products);
for($i=0; $i< $count_selected; $i++){
var_dump($quantity[$i]); exit;
}
答案 0 :(得分:1)
复选框的问题在于未经检查的复选框没有提交任何值,因此您的$_POST['products']
和$_POST['quantity']
数组可能会有不同的长度。
我使用hidden input与特定数组索引合并。
例如
<?php foreach($results as $row) : ?>
<tr>
<td>
<input type="hidden" name="products[<?= $row->items_id ?>]" value="0">
<input type="checkbox" name="products[<?= $row->items_id ?>]" value="1">
</td>
<td><?= htmlspecialchars($row->item_name) ?></td>
<td><input type="number" name="quantity[<?= $row->items_id ?>]" class="form-control"></td>
</tr>
<?php endforeach ?>
然后数组将具有相同的索引,您可以使用foreach
foreach ($_POST['products'] as $itemId => $checked) {
// $checked represents the state of the checkbox
// you can access quantity via $_POST['quantity'][$itemId]
}
您甚至可以通过
创建一个很好的过滤数量$selections = $_POST['products'];
$quantities = array_filter($_POST['quantity', function($itemId) use ($selections) {
return $selections[$itemId];
}, ARRAY_FILTER_USE_KEY);
答案 1 :(得分:-1)
首先,定义数组变量。 $ products = array(); $ quantity = array(); 其他明智的事情似乎很好。