我在表单中有一个复选框,我需要根据数据库中的值禁用该复选框。我搜索了很多,但找不到任何有效的解决方案。这是示例代码:
<?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>
提前致谢。
答案 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()中,看看你得到了什么值。或者使用您正在触发的那个查询直接数据库查询,看看它是否不是一行。