我在论坛上进行了搜索,但没有得到权威的答案。我想以这种方式实现嵌套的注释结构:
<ul> <li>This is the parent first comment! <ul> <li>This is the reply for the first parent comment! <ul> <li>This is a reply for the first reply of the parent comment!</li> <li>This is a third reply for the first parent comment!</li> </ul> </li> <li>This is another reply for first parent comment!</li> </ul> </li> <li>This is gonna be parent second comment! <ul> <li>This is a reply for the second comment!</li> </ul> </li> <li>This is fourth parent comment!</li> </ul>
我的表的转储如下:
+----+------------------------------------------------------------+--------+ | id | text | parent | +----+------------------------------------------------------------+--------+ | 1 | This is the parent first comment! | 0 | | 2 | This is gonna be parent second comment! | 0 | | 3 | This is the reply for the first parent comment! | 1 | | 4 | This is another reply for first parent comment! | 1 | | 5 | This is a reply for the first reply of the parent comment! | 3 | | 6 | This is a reply for the second comment! | 2 | | 7 | This is a third reply for the first parent comment! | 3 | | 8 | This is fourth parent comment! | 0 | +----+------------------------------------------------------------+--------+
我知道如何使用mysql_query()和while()循环。PHP和MySQL的新手。请帮帮我。
mysql_query()
while()
我在博客文章中做了类似的事情。但是,我只是尝试了相同的数据。当您说 嵌套注释时 ,最好以这种方式使用 嵌套函数 :
function getComments($parent) { # Get the data from SQL. # Check if it has nested comments. if (hasComments()) getComments($child); # $child is the ID of the current comment. }
为此,我已将您的数据导入MySQL并尝试了以下操作:
<?php mysql_connect('localhost', 'root'); mysql_select_db('nestedcomments'); function getComments($parent) { $res = mysql_query("SELECT * FROM `nestcomm` WHERE `parent` = $parent"); if (mysql_num_rows($res)) { echo "<ul>\n"; while (($dat = mysql_fetch_array($res)) !== false) echo "<li>", $dat["text"], getComments($dat["id"]), "</li>\n"; echo "</ul>\n"; } else echo ($parent === 0) ? 'No Comments!' : ""; } getComments(0); ?>
就像我之前说过的那样,我使用了嵌套函数,并且正如您所问的那样,这种输出几乎是相同的(不带花括号):
<ul> <li>This is the parent first comment!<ul> <li>This is the reply for the first parent comment!<ul> <li>This is a reply for the first reply of the parent comment!</li> <li>This is a third reply for the first parent comment!</li> </ul> </li> <li>This is another reply for first parent comment!</li> </ul> </li> <li>This is gonna be parent second comment!<ul> <li>This is a reply for the second comment!</li> </ul> </li> <li>This is fourth parent comment!</li> </ul>
希望这会有所帮助。