【问题标题】:Looping through Checkboxes PHP循环通过复选框 PHP
【发布时间】:2012-08-05 02:54:23
【问题描述】:

我想插入一个复选框是否选择到 MySQL 中,只需将 1 或 0 添加到对应于该值的列。我遇到了 0 的问题,详情如下。

这里是复选框的示例

<input type='checkbox' name='class[]' value='mathhl' id="mathhl">

为简单起见,我添加了这个

$classes = $_POST["class"];

这是检查复选框值的 foreach 循环。

foreach($classes as $value) {
    if (!isset($value)) {
        $value = 0;
    }
    else {
        $value = 1;
    }
    echo $value;
}

由于某种原因,它只返回 1,而不返回 0!我是 PHP 新手,所以我想知道我到底哪里出了问题,谢谢!

【问题讨论】:

    标签: php loops checkbox


    【解决方案1】:

    只有选中的复选框才会发送到服务器。因此,如果数组中不存在该值,那是因为未选中该框。

    您可以通过将值作为数组中的键来简化逻辑:

    <input type='checkbox' name='class[mathhl]' value='1' id="mathhl">
    

    现在,您不必循环访问 $_POST['class']。相反,您可以获取所有键的数组(您应该已经知道):

    $keys = array( 'mathh1', 'mathh2', 'mathh3');
    

    并用默认值(比如 0)组成一个数组:

    $defaults = array_combine( $keys, array_fill( 0, count( $keys), 0));
    

    并将$_POST 数组与默认数组合并:

    $results = array_merge( $defaults, $_POST['class']);
    

    现在,$results 将包含一个关联数组,键是列,值是 1 或 0,具体取决于是否选中了复选框。小心,因为有人可以发布他们想要的数据到$_POST,所以它可能不仅仅是 1 和 0。

    【讨论】:

    • 有什么方法可以将 0 分配给未选中的复选框?
    • @AlexCastro:复选框值是否遵循任何特定模式?它们需要预先设置,然后您可以检查它们是否存在。
    • 复选框被分成不同的组,您可以在这里看到:forhomework.info/valid.php
    猜你喜欢
    • 2016-04-10
    • 2020-12-02
    • 1970-01-01
    • 1970-01-01
    • 2015-10-29
    • 2014-06-29
    • 2021-03-05
    • 2015-05-09
    • 2019-05-29
    相关资源
    最近更新 更多