获取复选框id和值同时php

时间:2012-07-27 10:15:14

标签: php mysql html forms

我想知道如何同时获取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更新数据库。

任何帮助将不胜感激。谢谢!

3 个答案:

答案 0 :(得分:1)

我不太明白你究竟想要使用复选框,但是这里有一些可以帮助你做任何你想做的事情:

  1. 如果未选中,则表单不会提交复选框的值,例如如果你有一个像我这样的复选框 并且如果您尝试访问chkbox1,则在未选中的情况下提交表单将会为null

  2. 如果您想查看是否选中了单击的复选框,您可以通过使每个onclick传递id的值来实现,如

  3. <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
  }
}