0

我想加载一个评级图像,该图像取决于用户在某些测试中的平均分数。例如,如果用户得分在 5(不包括 5 )和 6(包括 6)之间,他应该得到图像 6.png,这是一个 3 星评级。

到目前为止,我尝试了这个,但它不起作用,似乎某处有错误。

Rating: 
<? if ($row['AVG(answer)'] < 1): ?><img src='images/rating/0.png' hspace='3'   style='vertical-align:middle;'><? endif;?> 
<? if ($row['AVG(answer)'] == 1): ?><img src='images/rating/1.png' hspace='3' style='vertical-align:middle;'><? endif;?>
<? if ($row['AVG(answer)'] > 1 && <= 2): ?><img src='images/rating/2.png' hspace='3' style='vertical-align:middle;'><? endif;?>
<? if ($row['AVG(answer)'] > 2 && <= 3): ?><img src='images/rating/3.png' hspace='3' style='vertical-align:middle;'><? endif;?>
<? if ($row['AVG(answer)'] > 3 && <= 4): ?><img src='images/rating/4.png' hspace='3' style='vertical-align:middle;'><? endif;?>
<? if ($row['AVG(answer)'] > 4 && <= 5): ?><img src='images/rating/5.png' hspace='3' style='vertical-align:middle;'><? endif;?>
<? if ($row['AVG(answer)'] > 5 && <= 6): ?><img src='images/rating/6.png' hspace='3' style='vertical-align:middle;'><? endif;?>
<? if ($row['AVG(answer)'] > 6 && <= 7): ?><img src='images/rating/7.png' hspace='3' style='vertical-align:middle;'><? endif;?>
<? if ($row['AVG(answer)'] > 7 && <= 8): ?><img src='images/rating/8.png' hspace='3' style='vertical-align:middle;'><? endif;?>
<? if ($row['AVG(answer)'] > 8 && <= 9): ?><img src='images/rating/9.png' hspace='3' style='vertical-align:middle;'><? endif;?>
<? if ($row['AVG(answer)'] > 9 && <= 10): ?><img src='images/rating/10.png' hspace='3' style='vertical-align:middle;'><? endif;?>

有什么想法吗?

4

3 回答 3

1

如果$row['AVG(answer)']只能是 0 到 9 那为什么不干脆做

<img src='images/rating/<?php echo ceil($row['AVG(answer)']); ?>.png' hspace='3' style='vertical-align:middle;'>

此外,您的查询中可能有错误(应该做类似SELECT AVG(answer) as avg_answer ...then echoing$row['avg_answer']

于 2013-11-06T23:48:34.263 回答
1

其他人的回答很好。但这是您的代码的真正问题:

你写了:

if ($row['AVG(answer)'] > 3 && <= 4)

但正确的是:

if ($row['AVG(answer)'] > 3 && $row['AVG(answer)'] <= 4)
于 2013-11-06T23:58:57.893 回答
0

您可以简单地使用 ceil 语句来简化此操作:

<?php
    echo "<img src='images/rating/".ceil($row['AVG(answer)']).".png' hspace='3'   style='vertical-align:middle;'>";
?>

这将适用于您拥有的所有数据。不需要所有这些多个 if 语句。

你只希望事情被四舍五入,所以这对所有情况都适用。

于 2013-11-06T23:50:47.633 回答