获取PHP中未经检查和选中复选框的值

时间:2014-09-08 02:30:24

标签: php checkbox

概述:

这是html页面上的样子。

enter image description here

因此每行复选框都有不同的名称,例如name="doctor_0[]",它会递增每一行。因此,下一行将是name="doctor_1[]",其对应的默认值为0

因此,在眼睛友好的代码视图中,它将是

// First row
<td><input type="checkbox" name="doctor_0[]" class="day_cbox" value="0"></td>
<td><input type="checkbox" name="doctor_0[]" class="day_cbox" value="0"></td>

// Second row
<td><input type="checkbox" name="doctor_1[]" class="day_cbox" value="0"></td>
<td><input type="checkbox" name="doctor_1[]" class="day_cbox" value="0"></td>

依旧......

现在进入问题

我的问题是,如果未选中该复选框,则数据不会传递到$_POST

我知道通常它不会那样工作,所以不太好的替代方法是创建hidden的输入字段,以便在未选中复选框时获取值。但问题是,这是一个阵列。

我已经尝试了几个解决方案,这些解决方案在我的问题中与下面的相似,但它不会那样工作。好吧,它不是动态或使用数组。如果我错了,请纠正我,我对此不好。

那么,这些东西有什么解决方案吗?

帮助或建议或建议会很好。

感谢。

与此类似的问题。

Get values of unchecked checkboxes

Post the checkboxes that are unchecked

How get value for unchecked checkbox in checkbox elements when form posted?

how to get the unchecked value from checkbox?

http://www.webmasterworld.com/php/4449836.htm

1 个答案:

答案 0 :(得分:0)

感谢在我的问题的评论部分帮助过我的人。

这是我的代码的最终版本。

所以我正常做​​while loop以使用mysql检索数据。好吧,不要生我的气,我被分配到某个公司多年的网络应用程序。

无论如何,我用@ Bad_boy的逻辑来解决这个问题。

我的旧代码是,

注意: $ctr是每行的增量值y。

echo '
    <td>
        <input type="checkbox" name="doctor_'. $ctr .'[]" class="day_cbox" value="1">
    </td>
';

tada!我不擅长解释它是如何工作的但是,它有效!哈哈哈哈!谢谢!

while ($result = mysql_fetch_array($row)) {

    echo '
        <tr class="row-doctor">
            <td align="center">'. ucwords(strtolower($result['doctor_name'])) .'</td>
        ';

            for ($i = 1; $i <= 25; $i++) {

                echo '
                    <td>
                        <input type="hidden" name="doctor_'. $ctr .'['. $i .']" value="0">
                        <input type="checkbox" name="doctor_'. $ctr .'['. $i .']" class="day_cbox" value="1">
                    </td>
                ';
            }

    echo '
            <td align="center" class="blue strong"><span class="frequency_'. $ctr .'">0</span></td>
        </tr>
    ';

    $ctr++;
}