(Verimli PHP ve MySQL [1 table] ile) bir katmanlı yorum sistemini oluşturma

0 Cevap php

Ben yorum cevapları, a comment bölümü istiyorum. Cevaplar sadece bir seviye gidecek. Örneğin,.

Parent Comment

-- Here is a reply
-- Here is another reply
-- It won't go further than this one tier

MySQL bu gibi görünüyor:

comment_id, yorum, parents_id

parents_id 0 ise, bu üstüdür. bir numara varsa, bu sayı onun çocuğu olacak gibi, comment_id karşılık gelecektir.

Şimdi, ben aşağıda bu boktan kodu yaptık, ama ikinci döngü işler karışıyor ve sadece çocukları ile doğru ilk div görüntüler görünüyor. i iki kez mysql_fetch_row arıyorum çünkü öyle inanıyorum ...

$query_show_comments = "SELECT * FROM article_comments WHERE article_id = '$article_id'";
$results_show_comments = mysql_query($query_show_comments);
$num_rows_comments = mysql_num_rows($results_show_comments);

for ($i = 0; $i < $num_rows_comments; $i++) {
    $comment = mysql_fetch_row($results_show_comments);
    echo "<p>comment_id: $comment[0]</p>";

    if ($comment[5] == 0) {
echo <<<_HTML
    <div class="dispArticle">
        <p><strong>Commenter Name commented @ 11/22/10 10:10:10pm</strong></p>
        <p>$comment[2]</p>
_HTML;

        for ($j = 0; $j < $num_rows_comments; $j++) {
            $replies = mysql_fetch_row($results_show_comments);
            if ($replies[5] > 0 AND $replies[5] == $comment[0]) {
echo <<<_HTML
        <div class="comment"><p><strong>Reply Name replied @ 11/22/10 10:10:10pm</strong></p>
            <p>child_id: $replies[0]</p>
            <p>parent_id: $comment[0]</p>
            <p>$replies[2]</p>
        </div>
        <br />
_HTML;
            }
        }
    }
echo "</div>";
}

Saat arıyor ve bu ne buldum değil.

  1. Birden tabloları kullanın (tek bir tabloda tutmak istiyorum böylece daha az sorgular)
  2. Birden sorguları kullanın (aynı yukarıdaki gibi)
  3. Tüm dışarı sıralamak sonra ilk bir diziye Yem (ne yorum uzun ve orada bir sürü ... Ben sadece bir sorgu yaptım VE görüntüleyerek sonra sıralama, bir dizi besleyerek daha sunucu tarafında işlem yapmak zorunda? Iseniz)

0 Cevap