Как ограничить отображение многопоточных комментариев в php - PullRequest
1 голос
/ 09 февраля 2012

Я создаю резьбовой комментарий, используя php.Я использую этот код для отображения резьбовых комментариев. Может кто-нибудь сказать, как ограничить отображение индикации в резьбовых комментариях

Мне нужно вот так

comment 1
 -->comment 1.1
 -->comment 1.1.1
 -->comment 1.2
 -->comment 1.2.1
 -->comment 1.2.2
comment 2
  -->comment 2.1
  -->comment 2.1.2

но не так

comment 1
 -->comment 1.1
   -->comment 1.1.1
 -->comment 1.2
    -->comment 1.2.1
      -->comment 1.2.1.1
comment 2
  -->comment 2.1
    -->comment 2.1.2

Мой php-код такой

<div id='wrapper'>
<ul>
<?php
$q = "select idvideo,discussion from video_discussion where 
                     video_discussion.idvideo = 972 AND parent_id = 0
$r = mysql_query($q);
while($row = mysql_fetch_assoc($r)):
    getComments($row);
endwhile;
?>
</ul>

и на странице функций

<?php
function getComments($row) {
    echo "<li class='comment'>";
    echo "<div class='aut'>".$row['discussion']."</div>";       
    echo "<a href='#comment_form' class='reply' id='".$row['idvideo_discussion']."'>Reply</a>";

$q=" select idvideo,discussion from video_discussion where video_discussion.idvideo = 972 and  parent_id =".$row['idvideo_discussion'].";   

    $r = mysql_query($q);
    if(mysql_num_rows($r)>0)
        {
        echo "<ul>";
        while($row = mysql_fetch_assoc($r)) {
            getComments($row);
        }
        echo "</ul>";
        }
    echo "</li>";
}
?>

пожалуйста, предложите решение для этого

Ответы [ 2 ]

3 голосов
/ 09 февраля 2012

Вы можете добавить второй параметр в getComments с максимальной глубиной, которую вы хотите:

function getComments($row, $depth=3)
{
    echo ...

    if (0 === $depth) {
        return;
    }

    ...
        while($row = mysql_fetch_assoc($r)) {
            getComments($row, $depth - 1);
        }
    ...
}
0 голосов
/ 09 февраля 2012

Определить предел

$limit = 30; $count_displayed = 0;

В getComments ($ row) увеличьте отображаемое количество и проверьте, достигло ли оно предела.

function getComments($row) {
    $count_displayed++;
    if($count_displayed >= $limit) return;
    ...
}
...