【问题标题】:PHP checkbox value [duplicate]PHP复选框值[重复]
【发布时间】:2012-06-19 19:27:15
【问题描述】:

可能重复:
Submit an HTML form with empty checkboxes

我正在尝试向数据库提交一些数据。我正在尝试将表单中复选框的值提交到数据库,如下所示:

<input type='checkbox' name='continue' <?php if ($_POST[continue] == TRUE)  echo "value='y' checked='checked'"; else  echo "value='n'"; ?> />

当我在选中复选框时提交数据时,该值将是“y”。但是当复选框被选中时,没有数据发送到数据库。

请指教。

【问题讨论】:

标签: php mysql html


【解决方案1】:

解决方案 1:(更好的方法)

<input type="checkbox" name="continue"<?php echo (isset($_POST['continue']) ? ' checked="checked"' : ''); ?> />

在您的数据库 (?) 文件中:

$continue = isset($_POST['continue']) ? 'y' : 'n';

.

解决方案 2:(不推荐)

<input type="hidden" name="continue" value="<?php echo isset($_POST['continue']) ? 'y' : 'n'; ?>" />
<input type="checkbox" name="continue_x"<?php echo (isset($_POST['continue']) ? ' checked="checked"' : ''); ?> onclick="document.getElementsByName('continue')[0].value=this.checked?'y':'n';" />

【讨论】:

  • 好的..当我尝试提交表单并且框未选中时,值为'n'但未发送到数据库。但是当我选中该框时,值为'y'并发送到数据库。
  • 另一方面,如果我将值 'n' 切换为选中状态,将值 'y' 切换为未选中状态,则会将值 'n' 发送到数据库。
  • 数据库是什么意思?请尽量详细地表达自己。
【解决方案2】:

试试这个

<input type='checkbox' name='continue' <?php if ($_POST['continue']==TRUE) { echo "value='y' checked='checked'"; } else { echo "value='n'"; } ?> />

【讨论】:

  • 这个我试过了,还是不行。
  • 先告诉我$_POST['continue']是什么?它是来自数据库还是其他什么?
  • 我正在尝试将信息发送到数据库,它只接受“y”或“n”。
  • 好的,那个字段数据类型是什么?它必须是“varchar”或“text”
【解决方案3】:

选中的复选框成功(并提交它们的值),未选中的复选框不成功(也不会)。

您需要给复选框一个固定值,然后根据数据的存在(或不存在)来确定它是否被选中,而不是数据的具体值。

仅当您有多个具有相同名称的复选框时,该值才重要(例如,对于“勾选您经常使用的每种运输方式”类型的问题。)

【讨论】:

    【解决方案4】:

    首先,当您尝试使用 PHP 验证复选框时,不会像 JavaScript 那样进行实时检查,您可以立即进行检查,而无需与服务器端交互。

    那么你想做什么我假设你想将数据从表单插入到数据库中。

    <input type='checkbox' name='continue' <?php if (isset($_POST[continue])) echo 
    "checked='checked'"; ?> />
    

    因此,您对上述代码所做的是使用isset 函数检查复选框是否已选中并且您再次调用表单,该复选框仍将保留状态并且仍将被选中。

    现在来到您需要获取要插入数据库的值的部分。

    if (isset($_POST[continue])) 
        $cont = 'y';
        else $s = 's';
    

    在将值插入查询之前,您将需要它,而不是使用 $_POST[continue],现在只需在查询中使用 $cont 作为值,您将获得正确的值。

    【讨论】:

    • @ahmad 这与我在答案的解决方案 1 中所说的方式相同。
    猜你喜欢
    • 2018-09-25
    • 1970-01-01
    • 2017-12-26
    • 1970-01-01
    • 1970-01-01
    • 2020-10-10
    • 2013-05-21
    • 1970-01-01
    • 2017-07-27
    相关资源
    最近更新 更多