我已经四处寻找并找到了许多我的问题的解决方案,但我仍有一个问题。我正在尝试创建一个每行有四个图像的表。这已经完成了。我告诉脚本按照励赐进行分组,这样就可以了,所以现在没有出现重复的图像(我在网站上找到了这些步骤)。我遇到的问题是,我试图在每个图像下放一个乘数来计算每组中有多少。 (即让我说我有5枚奖牌。在我的页面上,它只显示一枚奖牌,但我真的有5枚,所以我想在图像下面说x5。)这是我到目前为止所拥有的:
print "<div class='style1'><br> <br><h2>User Medals</div></h3><br />
<table width='80%' class='table' border='0' cellspacing='1'><tr bgcolor='gray'><th></th><th></th><th></th><th></th></tr>";
$result=mysql_query("SELECT * FROM awardsearned WHERE userid=$userid group by rewardid");
$count = 0;
while($res=mysql_fetch_array($result))
{
$award = $res['rewardpic'];
$award2 = $res['rewardid'];
$result2=mysql_query("SELECT awardid, count(rewardid) FROM awardsearned WHERE rewardid=$award2 AND userid=$userid");
$count2 = count($result2);
if($count==4) //three images per row
{
print "</tr>";
$count = 0;
}
if($count==0)
print "<tr>";
print "<td>";
print "<center><img src='$award' width='100' height='100'/><br />x$count2</center> ";
$count++;
print "</td>";
}
if($count>0)
print "</tr>";
print "
</table>";
很抱歉,如果这搞砸了,以前从未在这里发布过。如果需要http://pastebin.com/iAyuAAzV
,它就在pastebin上答案 0 :(得分:4)
像这样更新您的查询:
SELECT *,COUNT(rewardid) no_of_rewards
FROM awardsearned WHERE userid=$userid group by rewardid
$res['no_of_rewards']
会保留您的电话号码。
这也消除了对第二个查询的需要。
这些东西被称为“聚合函数”。更多内容见documentation。
答案 1 :(得分:0)
回答你的问题:
$ result2的值只能给出TRUE(1)或FALSE(0)。如果你的查询执行正确,$ count2将返回1,因此你的代码总是得到1。
尝试并更改
$result2=mysql_query("SELECT awardid, count(rewardid) FROM awardsearned WHERE rewardid=$award2 AND userid=$userid");
$count2 = count($result2);
以强>
$result = mysql_query("SELECT awardid, count(rewardid) FROM awardsearned WHERE rewardid=$award2 AND userid=$userid");
$arr = mysql_fetch_array($result);
$count2 = count($arr);
这应该为您提供结果集中实际记录的麻木。
有更好的方法可以做到这一点(看看Bart Friederichs的答案!),就像只做SELECT并循环遍历结果集一样。这将是性能和灵活性。
另外考虑一下我现在不推荐使用mysql_query,不应该使用它。 (预备方法是使用PDO或mysqli)