php while while循环 - 如果声明为mysql查询的每一行

时间:2014-08-19 18:44:11

标签: php mysql

我正在研究一个查询mysql数据库并在html表中显示结果的程序。我希望基于其中一个字段值进行条件格式化。如果查询返回单词“In”,我希望表格单元格背景颜色为绿色;如果出现“Out”字样,则为红色。我已经到了为单元格着色的地步,但它似乎是使用第一行的单词的颜色作为第一行和所有后续行。例如,假设第一行的单词是“In”,那么该单元格将为绿色,以及其下方的所有单元格,即使其他单元格具有单词“Out”。以下是代码的相关部分:

...

while($row = mysqli_fetch_array($result)) {     

            echo "<tr>";
            echo "<td>" . $row['Employee'] . "</td>";
            $color_test = $row['Status'];
            if ($color_test = "In") {
                echo "<td bgcolor=#00FF00>" . $row['Status'] . "</td>";
                }
            elseif ($color_test = "Out") {
                echo "<td bgcolor=#FF0000>" . $row['Status'] . "</td>";
                }
            else {}

            echo "<td>" . $row['Return'] . "</td>";
...

我唯一能想到的是if语句没有应用于所有行。我不确定如何做到这一点。我没有用PHP编写太多程序。

4 个答案:

答案 0 :(得分:5)

if($color_test = "In")

应该是

if($color_test == "In")

现在,您将“In”字符串分配给变量$color_test,但您应该检查与==运算符的相等性。

答案 1 :(得分:2)

如果要在if语句中进行比较,则需要使用==

答案 2 :(得分:0)

while块应该是这样的。

   while($row = mysqli_fetch_array($result)) {     

        echo "<tr>";
        echo "<td>" . $row['Employee'] . "</td>";
        $color_test = $row['Status'];
        if ($color_test == "In") {
            echo "<td bgcolor=#00FF00>" . $row['Status'] . "</td>";
            }
        elseif ($color_test == "Out") {
            echo "<td bgcolor=#FF0000>" . $row['Status'] . "</td>";
            }
        else {
              echo "<td>" . $row['Return'] . "</td>";
          }
     }

答案 3 :(得分:0)

一些更正:

当您尝试获取行时,您正在使用mysqli_fetch_array() - 请改用mysqli_fetch_assoc()。

while($row = mysqli_fetch_assoc($result)) {  

在if谓词中,你只使用一个=,用于赋值,使用==代替。

if( $color_test == "In" )
if( $color_test == "Out" )

只是一个小评论,你已经分配了一个名为$ color_test的变量,如果你在打印时使用这个变量而不是在打印时使用$ row []会更好。

我认为的全部