【问题标题】:How do I grab, sort and display top commenters (PHP/MySQL)?如何抓取、排序和显示热门评论者 (PHP/MySQL)?
【发布时间】:2011-09-26 19:43:20
【问题描述】:

已经两天了,我仍然无法弄清楚:如何检索对给定文章发表评论的所有用户,按评论次数降序排列,然后显示他们的用户名和数量他们评论的次数(例如,michael (17)、laurie (14)、jenny (10)、dennis (6) 等)?

【问题讨论】:

  • 对于有问题的表,您的数据库结构是什么样的?
  • 您确实必须提供比这更多的信息。如前所述,您必须告诉我们您的尝试。
  • $query = $CI->db->query('SELECT users.username, comments.user_id FROM comments, topics, users WHERE topics.topic_id='.$topic_id.' AND comments.topic_id='.$topic_id.' AND comments.user_id=users.user_id ORDER BY comments.user_id DESC');$contributors_data['rows'] = $query->result();foreach ($contributors_data['rows'] as $r) { $contributors_count_data = array('username' => $r->username, 'user_id' => $r->user_id); }$contributors_count_data = array_count_values($contributors_count_data);return print_r($contributors_count_data);
  • 抱歉弄得一团糟,我不知道怎么换行

标签: php mysql arrays sorting


【解决方案1】:

不看数据库结构,很难说。但假设它是这样的:

文章

  • 身份证
  • 内容

评论

  • 身份证
  • 文章编号
  • 用户 ID
  • 评论

查询看起来像这样:

SELECT UserId, COUNT(*) as CommentCount FROM Comments WHERE ArticleId = 1 GROUP BY UserId ORDER BY CommentCount DESC;

然后你只需要在用户表上做一个JOIN 来获取用户的名字。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-21
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-26
    相关资源
    最近更新 更多