我对PHP很新,所以我的努力可能看起来很奇怪,但我想在写这个问题之前尝试自己的实验。我目前的代码有助于展示我尝试做的事情,所以即使它不起作用,我也将其保留原样:
<?php
$mysqli = new mysqli('localhost', 'xxx', 'xxx', 'MLB');
if (mysqli_connect_errno()) {
echo '<p>Error: could not connect to database.</p>';
exit;
}
$sql = "SELECT rank, team_name, record, average, move, hi, lo FROM Rankings WHERE week_id = 4";
$result = $mysqli->query($sql);
if($result->num_rows > 0) {
echo "<table><tr><th style='text-align:left'>Rank</th><th style='text-align:left'>Team</th><th>Record</th><th>Average</th><th>Move</th><th>HiLo</th></tr>";
// output data in each row
while ($row = $result->fetch_assoc()) {
echo "<tr><td style='text-align:left'>".$row["rank"]."</td><td style='text-align:left'>".$row["team_name"]."</td><td>".$row["record"]."</td><td>".$row["average"]."</td><td ".if($row > 0) {echo 'style="color:green;"';}.">".$row["move"]."</td><td>".$row["hi"]."/".$row["lo"]."</td></tr>";
}
echo "</table>";
} else {
echo "0 results";
}
$mysqli->close();
?>
我通过PHP从MySQL数据库中提取数据并在HTML表格中显示数据库。这个过程很好。现在我想开始根据拉出的值做出格式化决策。在&#39;移动&#39;我的表格栏中,我想根据移动是正数还是负数来改变文本的颜色。我试过在我的WHILE中使用IF语句而没有运气。有什么建议?我甚至关闭了吗?
感谢您的帮助!
答案 0 :(得分:1)
未经测试,但我认为这样可行:
while ($row = $result->fetch_assoc()) {
echo "<tr><td style='text-align:left'>".$row["rank"]."</td><td style='text-align:left'>".$row["team_name"]."</td><td>".$row["record"]."</td><td>".$row["average"]."</td><td ".($row["move"] > 0 ? 'style="color:green;"' : '').">".$row["move"]."</td><td>".$row["hi"]."/".$row["lo"]."</td></tr>";
}
这个表达式:
($row["move"] > 0 ? 'style="color:green;"' : '')
如果'style="color:green"'
则返回$row["move"] > 0
,否则返回''
。 (它使用&#34;三元运算符。&#34;)
修改强>
根据@ chris85的评论更改为$row["move"]
以上。
答案 1 :(得分:1)
将if
移到echo
之外并将其分配给变量,然后使用echo
中的变量。我也会使用三元运算符。它看起来像是在比较完整数组,而不是您想要比较的索引。尝试:
while ($row = $result->fetch_assoc()) {
$style = $row['move'] > 0 ? ' style="color:green;"' : '';
$row['move'] = $row['move'] == 0 ? '-' : $row['move'];
echo "<tr><td style='text-align:left'>".$row["rank"]."</td><td style='text-align:left'>".$row["team_name"]."</td><td>".$row["record"]."</td><td>".$row["average"]."</td><td{$style}>".$row["move"]."</td><td>".$row["hi"]."/".$row["lo"]."</td></tr>";
}
?:
被称为ternary operator
,它是一种速记条件。您可以在此处阅读更多内容https://en.wikipedia.org/wiki/%3F:#PHP。
答案 2 :(得分:0)
尝试代替:
if($row > 0) {echo 'style="color:green;"';}
更短的if语句:
$Color = ($row > 0 )? "green" : "red";
echo 'style="color:'.$Color.';"';