当while循环使用PHP创建表行时,如何根据内容更改表单元格的属性

当while循环使用PHP创建表行时,如何根据内容更改表单元格的属性,php,html,css,Php,Html,Css,我是PHP的初学者,只知道基础知识。我想做我的第一件更高级的事情,但一直没能弄明白怎么做 我从mysql数据库中获取数据,然后创建一个html表 while($row = $queryresult->fetch_assoc()) { echo "<tr><td>".$row['col1']."</td><td>".$row['col2']."</td></tr>";} while($row=$queryresult-

我是PHP的初学者,只知道基础知识。我想做我的第一件更高级的事情,但一直没能弄明白怎么做

我从mysql数据库中获取数据,然后创建一个html表

while($row = $queryresult->fetch_assoc()) {
echo "<tr><td>".$row['col1']."</td><td>".$row['col2']."</td></tr>";}
while($row=$queryresult->fetch_assoc()){
回显“$row['col1']”。$row['col2']”;}
我想根据单元格的内容向其添加css类。所以,如果第一行的col1是“foo”,那么我想要
如果col1在表的第2行是“bar”,那么我想要

while($row = $queryresult->fetch_assoc()) {
    $classvar = '';
    if ($row['col1'] == "foo") {
        $classvar = 'class="foo"';
    } 
    if ($row['col1'] == "bar") {
        $classvar = 'class="bar"' ;
    }
    echo "<tr><td {$classvar}>{$row['col1']}</td><td>{$row['col2']}</td></tr>";
}
我试过了

if ($row['col1'] == "foo") {
        $classvar = " class=foo";
    } elseif ($row['col1'] == "bar") {
        $classvar = " class=bar";
    }
echo "<tr><td".$classvar.">";
if($row['col1']==“foo”){
$classvar=“class=foo”;
}elseif($row['col1']==“bar”){
$classvar=“class=bar”;
}
回声“;
但这会根据迭代的第一行将所有行设置为相同的内容。因此,如果第一行有col1=“foo”,那么所有行上都有$classvar=“class=foo”。如何单独评估每个表行?

替换

echo "<tr><td>",$row['col1'],"</td><td>",$row['col2'],"</td></tr>";
echo“$row['col1'],”,$row['col2'],”;

echo“$row['col1']”和“$row['col2']”;

将测试放在while循环中

如果
$row['col1']
既不是
foo
也不是
bar

另一个保持字符串连接易于阅读的好方法是在
{$array['key']}
周围使用
{}
,这样就不必一直与点连接

正如其他人提到的,类名必须位于

while($row=$queryresult->fetch_assoc()){
$classvar='';
如果($row['col1']==“foo”){
$classvar='class=“foo”';
} 
如果($row['col1']==“bar”){
$classvar='class=“bar”';
}
回显“{$row['col1']}{$row['col2']}”;
}

我更喜欢模板方法:

<?php while($row = $queryresult->fetch_assoc()) { ?>
  <tr>
    <td class="<?=($row['col1'] == "foo") ? 'foo' : 'bar'?>"><?=html($row['col1'])?></td>
    <td><?=html($row['col2'])?></td>
  </tr>
<?php } ?>
正如您在上面看到的,我使用了
的组合,这是
的缩写


我还使用了三元运算符:
语句?如果为真:如果为假

根据您的情况将elseif更改为if

while($row = $queryresult->fetch_assoc()) {

     if ($row['col1'] == "foo") {
         $classvar = " class=foo";
     } 
     if ($row['col1'] == "bar") {
         $classvar = " class=bar";
     }

        echo "<tr><td",$classvar,">",$row['col1'],"</td><td>",$row['col2'],"</td></tr>";
}
while($row=$queryresult->fetch_assoc()){
如果($row['col1']==“foo”){
$classvar=“class=foo”;
} 
如果($row['col1']==“bar”){
$classvar=“class=bar”;
}
回显“$row['col1'],”,$row['col2'],”;
}

您应该使用
htmlspecialchars()
。看看我的答案。
function html($str){
  return htmlspecialchars($str, ENT_QUOTES);
}
while($row = $queryresult->fetch_assoc()) {

     if ($row['col1'] == "foo") {
         $classvar = " class=foo";
     } 
     if ($row['col1'] == "bar") {
         $classvar = " class=bar";
     }

        echo "<tr><td",$classvar,">",$row['col1'],"</td><td>",$row['col2'],"</td></tr>";
}