<?php include("database/connect.php"); ?>
<form action="" method="post">
<?php
$q = mysqli_query($con,"select * from tbl_user");
while($f=mysqli_fetch_array($q))
{
?>
<input type="checkbox" name="ch[]" value="<?php echo $f['id'];?>"/>
<input type="number" name="qty[]"/><br>
<?php
}
?>
<input type="submit" name="yy" value="Submit"/>
</form>
从上面的代码中,如果复选框已选中,我想要数量的值。
如果有人知道逻辑然后发表评论,我会像array_combine
和foreach
一样尝试。谢谢。
答案 0 :(得分:1)
您可以在该复选框中关联一个onclick
处理函数,并使onclick
函数仅在选中时为您提供qty[]
的值。为此,发送对元素的引用和对onclick
函数的索引,并使用相同的索引来命名元素ch
和qty
:
function cbClick(e, index) {
if (e.checked) {
var qty = document.querySelector('input[name="qty['+index+']"]').value;
console.log('cb value '+ e.value);
console.log('qty value' + qty);
}
}
<!-- You will loop the PHP code to give the name to each elements with 0, 1, 2..-->
<input type="checkbox" name="ch[0]" onclick="cbClick(this, 0)" value="cb9" />
<input type="number" name="qty[0]" /><br>
<input type="checkbox" name="ch[1]" onclick="cbClick(this, 1)" value="cb10" />
<input type="number" name="qty[1]" /><br>
答案 1 :(得分:1)
数字输入(除非被禁用或没有名称)将总是成功并出现在数据中。
只有选中该复选框,该复选框才会成功。
这意味着使用PHP的简单数组语法将导致您的输入彼此不同步。输入的第一个数字将与第一个已选中复选框具有相同的索引,依此类推。
要解决此问题:给输入提供显式索引。
例如:
<input type="checkbox" name="ch[]" value="<?php echo $f['id'];?>"/>
<input type="number" name="qty[<?php echo $f['id'];?>]"/><br>
然后在PHP中,您可以:
foreach ($_POST[ch] as $ch_value) {
do_something_with($_POST['qty'][$ch_value]);
}