【问题标题】:Disable checkbox based on db value根据 db 值禁用复选框
【发布时间】:2015-03-24 04:21:12
【问题描述】:

我有一个表单中的复选框,我需要根据数据库中的值禁用它。我搜索了很多,但找不到任何有效的解决方案。这是示例代码:

<?php
$server_name='localhost';
$username='root';
$password='';
$db_name='checkbox';
$con= mysqli_connect($server_name, $username, $password, $db_name);
if(mysqli_connect_errno())
{
    echo 'Failed..!!'.mysqli_connect_errno();
}    

$result= mysqli_query($con, "SELECT * FROM checkbox WHERE status=1");
$display = (mysqli_num_rows($result) == 1);
$disable = $display?'':'disabled="disabled"';
?>
<html>
<body>
    <form name="f1" method="post" action="test2.php">
        <input type="checkbox" name="A" value="" <?php echo $disable; ?> />     
    </form>
</body>
</html>

提前致谢。

【问题讨论】:

    标签: php html mysql forms checkbox


    【解决方案1】:

    据我所知,您似乎把三元的顺序搞混了。

    现在这一行是多余的:

    $display = (mysqli_num_rows($result) == 1);
    

    你告诉它它总是等于 TRUE。

    只需将此行设置为:

    $display = mysqli_num_rows($result);
    

    然后三元运算符会处理是否找到

    $disable = $display ? 'disabled="disabled"': '';
    

    ...如果找到,请禁用它。

    如果这不是您想要做的,那么将其改回:

    $disable = $display ? '': 'disabled="disabled"';
    

    【讨论】:

      【解决方案2】:
      $result= mysqli_query($con, "SELECT * FROM checkbox WHERE status=1");
      $display = (mysqli_num_rows($result) == 1);
      

      这很可能是您的问题的原因,尽管如果不查看数据库就不可能是 100%。该查询是否返回一行以外的内容?如果确实如此,您的 $display 变量将始终评估为 false 并且不会将该禁用文本添加到输入字段。

      在渲染 HTML 之前,将 $disable 变量包装在 var_dump() 中,然后查看获得的值。或者使用您要触发的数据库进行直接数据库查询,看看它是否不是一行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-02-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-04
        • 1970-01-01
        相关资源
        最近更新 更多