禁用基于db值的复选框

时间:2015-03-23 18:27:36

标签: php html mysql forms checkbox

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

<?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>

提前致谢。

2 个答案:

答案 0 :(得分:2)

我可以告诉你,似乎你可能已经将你的三元订单混淆了。

现在这条线是多余的:

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

你告诉它它始终等于TRUE。

只需将此行设置为:

$display = mysqli_num_rows($result);

然后三元运算符将处理如果找到它

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

...如果找到,请将其停用。

如果这不是您要做的,请将其更改回:

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

答案 1 :(得分:0)

$result= mysqli_query($con, "SELECT * FROM checkbox WHERE status=1");
$display = (mysqli_num_rows($result) == 1);

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

在进行HTML渲染之前,将$ disable变量包装在var_dump()中,看看你得到了什么值。或者使用您正在触发的那个查询直接数据库查询,看看它是否不是一行。