我一直在寻找结果,似乎找不到任何可以解决这个特定问题的东西...
我正在使用while循环从MySQL表中制作HTML模板。
一切正常,但我不知道如何说“如果任何行导致while循环的返回结果等于” true”,则将其更改为” checked”。
所以我举个例子:
$result = mysqli_query($conn, "SELECT * FROM hardware_requests");
while($row = mysqli_fetch_array($result)) {
echo "<input type='checkbox' " . $row["checkbox1"] . "/>
<input type='checkbox' " . $row["checkbox2"] . "/> ";
}
$ row [checkbox1]的结果为'true',$ row [checkbox2]的结果为null(该表中没有该单元格的条目)
对于我的一生,我无法弄清楚在while循环内如何执行以下操作:
if ($row[] == 'true') {
$row[] = 'checked';
}
使用$ row []检查数据库中的每条记录。
...
我已经对此进行了编辑(HTML中最初在“ checkbox1”和“ checkbox2”周围的引号不见了...
为了阐明更多信息,最初设置代码的开发人员在前端将复选框打勾号输入为“ true”(现在有一个相当强大的数据库,其中包含已填写的复选框)。
我要完成的某些部分具有30多个复选框,并且我希望能够为输入的HTML代码设置“已选中”属性(在设置将成为跟踪系统的内容时)根据数据库的输入完成的操作。
因此,不必单独设置每个复选框,即
$row["checkbox1"] = 'checked',
$row["checkbox2"] = 'checked'
多达30多个复选框,我希望只遍历每一行并使用if语句找出当前等于“ true”的代码,如果是,则更改为“ checked”。
再次感谢您的帮助!
答案 0 :(得分:1)
一种可能性是在查询中将布尔值转换为字符串。
$result = mysqli_query($conn,
"SELECT
IF(checkbox1,'checked','') AS checkbox1,
IF(checkbox2,'checked','') AS checkbox2
FROM hardware_requests");
然后,您的模板可以保持不变。不过,您应该引用这些数组键。
while($row = mysqli_fetch_array($result)) {
echo "<input type='checkbox' " . $row['checkbox1'] . "/>
<input type='checkbox' " . $row['checkbox2'] . "/> ";
}
答案 1 :(得分:0)
您可以使用条件表达式。
while($row = mysqli_fetch_array($result)) {
echo "<input type='checkbox' " . ($row['checkbox1'] == "true" ? "checked" : "") . "/>
<input type='checkbox' " . ($row['checkbox2'] == "true" ? "checked" : ""). "/> ";
}