我想知道如何同时获取ID分配给它的复选框的值。
这是我的简要代码:
<table class="data" cellpadding="0" cellspacing="0">
<?php
$select=mysql_query("select * from products_list ORDER BY id ASC");
while($row=mysql_fetch_array($select)){
$class = ' class="new_arrival" ';
echo "<tr>
<td>".$row['id']."</td>
<input type='hidden' name='product_id' value='".$row['id']."' />
<input type='checkbox' name='product_new' checked='checked' onclick='document.product_listing.submit();' /></td></tr>";
?>
</table>
if (isset($_POST['product_new'])) {
$id = $_POST['product_id'];
echo ("<script language='JavaScript'>
window.alert('".$id."')
</script>");
}
我持续获取ID的结果是数据库中的最新记录,但该复选框的值工作正常。
我试过这个:
<input type='checkbox' name='product_new[".$row['id']."]' checked='checked' onclick='document.product_listing.submit();' />
foreach($_POST['product_category'] as $id => $value)
使用foreach循环,它确实以某种方式工作,但无论是选中还是取消选中,它都会遍历这些复选框。
希望你们明白,坚持了2天。我的目的是点击勾选或取消选中复选框,它将根据mysql show result分配的ID更新数据库。
任何帮助将不胜感激。谢谢!
答案 0 :(得分:1)
我不太明白你究竟想要使用复选框,但是这里有一些可以帮助你做任何你想做的事情:
如果未选中,则表单不会提交复选框的值,例如如果你有一个像我这样的复选框 并且如果您尝试访问chkbox1,则在未选中的情况下提交表单将会为null
如果您想查看是否选中了单击的复选框,您可以通过使每个onclick传递id的值来实现,如
<input type='checkbox' name='product_new[".$row['id']."]' checked='checked' onclick='setValueAndSubmit(<?=$row[id]?>)' />
并在js中编写函数,检查复选框的checked属性并相应地处理
OR
如果您希望查看提交中的所有复选框值,那么您可以简单地遍历复选框组,并且只会找到已选中的复选框的复选框名称,不会提交未选中的复选框。
编辑: 只需在每个复选框后删除onclick并放置一个提交按钮,一旦表单提交,您将获得已选中复选框的名称和值,以便设置这些,并取消设置所有其他复选框。
答案 1 :(得分:0)
如果我正确理解了这个问题......
这是因为有多个名为product_id的输入,所以按名称引用会产生一个,但不是你想要的。
因此,修复方法是将单个字段product_id添加到循环外部的表单中,并在复选框的onClick中更改该值。
示例onclick:
<input type='checkbox' name='product_new' checked='checked' onclick='document.product_listing['product_id'] = ".$row['id'].";document.product_listing.submit();' /></td></tr>";`
这样的事情应该有用。
答案 2 :(得分:0)
只需将ID放在复选框的value=
属性中即可。
生成HTML:
<table class="data" cellpadding="0" cellspacing="0">
<?php
$query = "
SELECT *
FROM products_list
ORDER BY id ASC
";
$result = mysql_query($query);
// What if the query fails? Handle error here!
while ($row = mysql_fetch_ssoc($result)) {
// ...
echo "
<tr>
<td>".htmlspecialchars($row['id'])."</td>
<td><!-- I'm guessing this open td tag was missing and should be added -->
<input type='checkbox' name='product_new[]' checked='checked' value='".htmlspecialchars($row['id'])."' />
<!-- You don't want the onclick for the checkbox to submit the form, or you will only ever get one result -->
</td>
</tr>";
// ...
}
?>
</table>
表格提交时:
if (isset($_POST['product_new'])) {
foreach ($_POST['product_new'] as $id) {
// Do stuff with $id here
}
}