【问题标题】:Parsing multiple checkbox values into php array将多个复选框值解析为php数组
【发布时间】:2014-03-24 14:17:24
【问题描述】:

我有一个显示库存水平的表单,我希望用户能够删除多个产品,因此提供了复选框。代码如下:

echo "<form method='get'>
                        <input type='submit' name='removestock' value= 'Remove'>
                        <table class='display' border='0'>
                        <tr>
                        <th>Select</th>
                        <th>Name</th>
                        <th>Description</th>
                        <th>Price (£)</th>
                        <th>Quantity</th>
                        <th>Size</th>
                        </tr>";
                        echo "<tr>";
                        require ('connection.php');
                        $query = mysql_query("SELECT * FROM items")or die(mysql_error());
                        while($results = mysql_fetch_array($query)){
                            echo "<td> <input type='checkbox' name='item' value='".$results['item_id']."'></td>";
                            echo "<td>" . $results['name'] . "</td>";
                            echo "<td>" . $results['description'] . "</td>";
                            echo "<td>" . $results['price'] . "</td>";
                            echo "<td>" . $results['quantity'] . "</td>";
                            echo "<td>" . $results['size_id'] . "</td>";
                            echo "</tr>"; 
                        }
                        echo "</table></form>";

而我的解析代码是……

if(isset($_GET['removestock']) === true){
    $errors = array();
    $items = $_GET['item'];
    echo $items;
}

但由于某种原因,它只显示最后选择的 item_id。您的帮助将不胜感激! PS。我尝试将复选框名称更改为 name="items[]" 并实现了一个 foreach 循环来解析数据,但它仍然不起作用。

【问题讨论】:

    标签: php arrays forms checkbox


    【解决方案1】:

    这对我总是有效的:

        $i =0;
        while($results = mysql_fetch_array($query)){
            echo "<td> <input type='checkbox' name='item[".$i."]' value='".$results['item_id']."'></td>";
            echo "<td>" . $results['name'] . "</td>";
            echo "<td>" . $results['description'] . "</td>";
            echo "<td>" . $results['price'] . "</td>";
            echo "<td>" . $results['quantity'] . "</td>";
            echo "<td>" . $results['size_id'] . "</td>";
            echo "</tr>";
    
            $i++;
        }
    

    发布后,item[] 元素将是一个数组。

    【讨论】:

      【解决方案2】:

      复选框的名称应该是

      <input type='checkbox' name='item[]' value='".$results['item_id']."'>
      

      这会给你一个数组,你可以用 foreach 读取它

      【讨论】:

      • 谢谢。你的方法效果很好。只需要添加一个 foreach 循环来回显值:)
      【解决方案3】:

      改变这一行:

      "<td> <input type='checkbox' name='item' value='".$results['item_id']."'></td>";
      

      阅读:

      "<td> <input type='checkbox' name='item[" . $results['item_id'] . "]'></td>";
      

      你会在变量中得到你想要的数组。

      【讨论】:

      • 此方法有效...但该数组仅存储每个选中的复选框的值“on”。相反,我希望它存储所有“item_id”,以便我可以在数据库中搜索它们。
      【解决方案4】:

      为复选框使用name=item []。这将为您提供数组。

      然后使用var_export ($ items)

      【讨论】:

        猜你喜欢
        • 2014-03-28
        • 1970-01-01
        • 2019-06-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多