sql >> データベース >  >> RDS >> Mysql

コメントと返信のPHPアプリケーションの再帰関数

    問題の核心はこれです:

    $comments = $commentClass->fetch_article_comments($article_id);
    

    この関数はどこかでSQLを作成して実行すると思います。これは、SELECT ... WHERE comments.article_id=$article_idに似ています。 。これでは不十分です-

    のようなものが必要です
    $comments = $commentClass->fetch_article_comments($article_id, $parent_id);
    

    これは、SELECT ... WHERE comments.article_id=$article_id AND comments.comment_parent ($parent_id>0)?"=$parent_id":"IS NULL"と同様のSQLに変換されます。

    これで、PHP関数を記述できます:

    function display_comments ($article_id, $parent_id=0, $level=0) {
      $comments = $commentClass->fetch_article_comments($article_id, $parent_id);
      foreach($comments as $comment) {
            $comment_id = $comment['comment_id'];   
            $member_id = $comment['member_id'];
            $comment_text = $comment['comment_text'];
            $comment_timestamp = timeAgo($comment['comment_timestamp']);  //get time ago
    
            //render comment using above variables
            //Use $level to render the intendation level
    
            //Recurse
            display_comments ($article_id, $comment_id, $level+1);
        }
    }
    

    そして最後にdisplay_comments ($article_id);で呼び出します



    1. 1つの列からページをグループ化する

    2. データベース列のビットフラグに不利な点はありますか?

    3. 日付範囲を対応する週に分割

    4. MyIsamエンジントランザクションのサポート