我是PHP的初学者,只知道基础知识。我想做我的第一件更高级的事情,但一直没能想出怎么做。
我从mysql数据库中获取数据,然后创建一个html表。
while($row = $queryresult->fetch_assoc()) {
echo "<tr><td>".$row['col1']."</td><td>".$row['col2']."</td></tr>";}
我想根据单元格的内容将css类添加到单元格中。所以如果第一行的col1是"foo",那么我想要<td class="foo">
如果col1在表的第2行是"bar",那么我想要<td class="bar">
我试过
if ($row['col1'] == "foo") {
$classvar = " class=foo";
} elseif ($row['col1'] == "bar") {
$classvar = " class=bar";
}
echo "<tr><td".$classvar.">";
但这会根据迭代的第一行将所有行设置为相同的行。因此,如果第一行有col1="foo",那么所有行都有$classvar="class=foo"。如何分别评估每个表行?
根据您的条件将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['col1']
既不是foo
也不是bar
的情况,首先将$classvar
初始化为零也是一个好主意
保持字符串连接易于阅读的一个好方法是在{$array['key']}
周围使用{}
,这样你就不必一直与点连接
正如其他人提到的,类名必须在""
或''
中
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>";
}
更换
echo "<tr><td>",$row['col1'],"</td><td>",$row['col2'],"</td></tr>";
至
echo "<tr><td ".$classvar.">".$row['col1']."</td><td>".$row['col2']."</td></tr>";
我更喜欢模板化方法:
<?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 } ?>
首先包括此功能:
function html($str){
return htmlspecialchars($str, ENT_QUOTES);
}
正如您在上面看到的,我使用的是<?='string'?>
的组合,它是<?php echo 'string' ?>
的简写。
我还使用了三元运算符:statement ? if_true : if_false
。