【问题标题】:How to output comments on comments in cycle? [duplicate]如何循环输出评论的评论? [复制]
【发布时间】:2013-12-20 01:47:59
【问题描述】:

结构表注释:

id (int 11)
NewsIdn (varchar 10)
CommentsIdn (varchar 10) //
ForCommentsIdn (varchar 10) //have CommentsIdn comments(answers) reply to which users 
Text (varchar 100)
DateCreate (datetime)

我想为 cmets 输出 cmets 和 cmets(answers),即。页面结构输出数据:

-- comment 1
-----answer on comment 1
--------answer on answer on comment 1 (№1)
--------answer on answer on comment 1 (№2)
--------answer on answer on comment 1 (№3)
----------answer on answer №3 on answer on comment 1
-------------
---------------N
                       ***
                       ***
                       ***
-- comment 2
-----answer on comment 2
--------answer on answer on comment 2 (№1)
--------answer on answer on comment 2 (№2)
--------answer on answer on comment 2 (№3)
----------answer on answer №3 on answer on comment 2
-------------
---------------N

                       ***
                       ***
                       ***
-- comment N
-----answer on comment N
--------answer on answer on comment N (№1)
--------answer on answer on comment N (№2)
--------answer on answer on comment N (№3)
----------answer on answer №3 on answer on comment N

AND IE.

我收到第一条评论:

SELECT * FROM COMMENTS WHERE NewsIdn='1122121' // value NewsIdn as example

但是如何在 cmets 上循环输出 cmets 呢?

请告诉我如何制作它?

【问题讨论】:

  • 这是只属于一个表吗?为什么不进行标准化!
  • @Nesmar 我不知道答案,如果您对其他表格有答案,请告诉我。
  • @jeroen 没关系

标签: php mysql


【解决方案1】:

是的,您必须需要标准化... 我为您创建了一些表格。

用户表

id(PK) 名称

新闻表

id (int 11) 文本 日期创建(日期时间) user_id(FK 与用户表)

评论表

id (int 11) 文本 日期创建(日期时间) news_id(int 11)(带有新闻表的外键) 用户身份

评论表的子 cmets

id (int 11) cmets_id(带有 cmets 表的 FK) 文本 user_id(int)(FK 与用户表) 日期创建(日期时间)

现在为每个评论编写以下查询

对于循环,只需在 cmets 表中使用一个循环。然后你会得到每个 cmets 的所有答案。

$query=query("select id from news");
while($q=mysql_fetch_assoc($query)){
//Here is each news
$query1=query("SELECT comments_id,comments FROM comments c WHERE c.news_id=$q['id']");
//Here is each comment
   while($q1=mysql_fetch_assoc($query1)){
   $query2=query("
                  SELECT sub.text,u.user_name FROM sub_comments AS sub
                  LEFT JOIN comments AS c
                  ON c.id=sub.comments_id
                  INNER JOIN user AS u
                  ON u.id=sub.user_id
                  WHERE c.id=$q1['comments_id']
                 ");
                 while($q2=mysql_fetch_assoc($query2)){
                    //Here are sub comments for each comments  
                    print $q2['text'];
                 }
    }
}

【讨论】:

  • 这个问题的答案有多准确?
  • 我正在为这个结构写查询。可能是 OP 可以理解“如何在循环中输出 cmets 上的 cmets?”我会尽快编辑我的答案
  • 你的答案在 cmets 1 级上得到答案,但有问题我问如何在 cmets 上获得所有答案,我在 cmets 上显示结构答案。我需要循环,它可以帮助输出具有 y 结构答案的所有答案。
  • 为什么在上面的查询中不使用 php 循环循环?
  • 请看我的更新
猜你喜欢
  • 2021-12-22
  • 1970-01-01
  • 1970-01-01
  • 2021-07-21
  • 1970-01-01
  • 2020-10-02
  • 2012-09-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多