checkbox数组,带有相应的输入值

时间:2017-11-12 06:13:57

标签: php mysql arrays

我从php中的mysql中获取数据。列出所有带有复选框和数量(rqty)的项目作为输入值,用户可以输入数量。但是我无法将复选框与数组中的相应输入值(rqty)相关联。如果我选择第一个复选框并输入数量它可以正常工作,但如果选择任何其他复选框并输入数量,则它不会在数据库中更新。我的代码如下:

<?php
If (isset($_REQUEST['submit1'])!='') {
foreach($_POST['itm'] as $key=>$itm) {
$odate=date("Y-m-d H:i:s");
$rqty=$_POST['rqty'][$key];
$itm=$_POST['itm'][$key]; 
$sql1="insert into table (itemtype,itemname,qty ,retdate,reason) select itemtype, itemname, '$rqty', '$odate', 'Return' from stock where itemname='$itm';
mysql_query($sql1);
}
}
?>
<p>
<form action="" method="post" name="form1">
<?php
$query3 = "SELECT id, category, itemtype, itemname, qty, status FROM stock where location='godown'";
$comments3 = mysql_query($query3);
$qty = mysql_num_rows($comments3);
echo "Consumable Items: " . $qty;
print "<table class='blue'>
  <thead>
<tr>
<td width=100>Return</td>
<td width=100>Category</td>
<td width=100>Item Type</td>
<td width=100>Item Name</td>
<td width=100>Available Qty.</td>
<td width=100>Return Qty.</td>
<td width=100>Status</td>
</tr>
</thead>";

while($row1 = mysql_fetch_assoc($comments3))
{
$it=$row1['itemname'];
print "<tbody>";
print "<tr>";
print "<td><input type='checkbox' name='itm[]' value='$it'></td>";
print "<td>" . $row1['category'] . "</td>";
print "<td>" . $row1['itemtype'] . "</td>";
print "<td>" . $row1['itemname'] . "</td>";
print "<td>" . $row1['qty'] . "</td>";
print "<td><input type='text' name='rqty[]' placeholder='Enter Qty' /></td>";
print "<td>" . $row1['status'] . "</td>";
print "</tr>";
print "</tbody>";
}
print "</table>";
?>
<input type='submit' name='submit1' value='Return' />

在检查中,我可以看到所有rqty []都会发布空白数据。但是在itm的情况下,只有选中的itm才会被发布,这是正确的。

enter image description here

2 个答案:

答案 0 :(得分:1)

由于我没有收到任何解决方案,我改变了方法。现在单独处理每个复选框而不使用任何数组。在表单列表中添加了提交按钮,并将所需的值发布到其他进一步处理的php页面。

答案 1 :(得分:0)

那是因为你的循环:

foreach($_POST['itm'] as $key=>$itm) {...

并输入&#34; itm&#34;是复选框:<input type='checkbox' name='itm[]' value='$it'></td>

例如,如果表单中有5个复选框,但只检查了其中的2个 - 那么您在数组$_POST['itm']中只有2个项目,而不是5个。

要解决此问题,您需要循环浏览$_POST['rqty']而不是$_POST['itm']