我有一个从sql查询显示的按钮:
$username = new User();
$name = $username->data()->username;
$sql1 = DB::getInstance()->query("SELECT names FROM list WHERE username = '$name'");
if (!$sql1->count()) {
echo 'No data';
} else {
foreach ($sql1->results() as $sql1) {
?>
<p><button class="" > <?php echo $sql1->names; ?></button></p>
<?php
}
}
这会显示两个与查询条件匹配的按钮,因此如果它与其他条件不匹配,我会尝试禁用其中一个显示的按钮。 例如,有两个按钮,约翰和贵宾犬。如果其中一个按钮是动物,则匹配一个查询。
因此,如果按钮john与查询不匹配,则应禁用它。
答案 0 :(得分:1)
我会尝试在问题的评论中表达这个想法,正如你要我一步一步地解释它:
foreach ($sql1->results() as $set) {
echo sprintf('<p><button %s>%s</button></p>'."\n",
in_array($set->name, array('poodle','cat','sheep')) ? 'disabled' : '',
$set->name);
}
这里$set
是foreach循环的每次迭代的不同对象(属性集)。您说在查询结果中有两个条目,因此生成了两个按钮。如果您理解您的代码正确(我不知道您的数据库......),则每个$set
都有一个名称($set->name
)。此名称用于两次以生成每个按钮:首先,该名称用作按钮中的文本,然后在条件中使用该名称来决定是否应禁用该按钮。该条件实现为三元表达式,在上面的示例中为第3行。在该行中,调用一个函数:in_array()
。返回true或false。如果为true,则属性&#34;禁用&#34;添加到按钮,如果为false,则添加空字符串(&#39;&#39;),因此按钮不具有disabled属性。
这显然没有完成代码。这是为了给你这个想法,所以你应该理解它,而不仅仅是复制并尝试它。如果出现问题,请随时询问!
答案 1 :(得分:0)
尝试以下方法:
<button class="<?php if($sql1->names != "required_name") echo "disabled" ?>">
<?php echo $sql1->names; ?>
</button>
答案 2 :(得分:0)
要禁用php + html按钮,您可以尝试使用返回“已禁用”的查询值。 例如:在查询中使用CASE WHEN语句在定义条件时返回禁用值:
SELECT filed1,
CASE
WHEN field1= '19' THEN 'disabled'
WHEN field1='20' THEN ''
WHEN filed1='21' THEN ''
WHEN field1='22' THEN ''
ELSE 'disabled'
END AS for_button
FROM table1 AS tbl1
WHERE tbl1.field1_param = '$param'
输入HTML TAG按钮:
<input type="submit" value="Button OnOff" <?=$disableButton['for_button']; ?>>
如果返回的值是禁用,则在for_button变量中,写入从查询返回的valure,该按钮将被禁用。