PHP-如果有任何行结果匹配,如何从While循环更改结果

时间:2019-03-14 21:15:54

标签: php mysql while-loop

我一直在寻找结果,似乎找不到任何可以解决这个特定问题的东西...

我正在使用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”。

再次感谢您的帮助!

2 个答案:

答案 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" : ""). "/> ";
}