我正在尝试根据每个主题的评论数量订购商品列表,如下所示:
$page = $_GET['page'];
$query = mysql_query("SELECT * FROM topic WHERE cat_id='$page' LIMIT $start, $per_page");
if (mysql_num_rows($query)>=1)
{
while($rows = mysql_fetch_array($query))
{
$number = $rows['topic_id'];
$title = $rows['topic_title'];
$description = $rows['topic_description'];
//get topic total
$sqlcomment = mysql_query("SELECT * FROM comments WHERE topic_id='$number'");
$commentnumber = mysql_num_rows($sqlcomment);
// TRYING TO ORDER OUTPUT ECHO BY TOPIC TOTAL ASC OR DESC
echo "
<ul>
<li><h4>$number. $title</h4>
<p>$description</p>
<p>$topictime</p>
<p>$commentnumber</p>
</li>
</ul>
";
}
}
else
{
echo "<p>no records available.</p><br>";
}
通过$ num_rows(ASC / DESC值)订购每个回显的最佳方法是什么?注意:我已经更新了完整的代码 - 我试图通过$ commentnumber
订购输出答案 0 :(得分:3)
第一个查询应该是:
SELECT t.*, COUNT(c.topic_id) AS count
FROM topic AS t
LEFT JOIN comments AS c ON c.topic_id = t.topic_id
WHERE t.cat_id = '$page'
GROUP BY t.topic_id
ORDER BY count
LIMIT $start, $per_page
您可以通过以下方式获取$commentnumber
:
$commentnumber = $rows['count'];
根本不需要第二个查询。
答案 1 :(得分:0)
首先,你有错误
echo "divs in order from least to greatest "number = $num_rows"";
应该是
echo "divs in order from least to greatest number = " . $num_rows . "";
关于评论最多的尝试
$sql = "SELECT * FROM `table` WHERE `id` = '$id' ORDER BY column DESC/ASC";
如果没有计数栏,请尝试
$sql = "SELECT * FROM `table` WHERE `id` = '$id' ORDER BY COUNT(column) DESC/ASC";