ホームページ > バックエンド開発 > PHPチュートリアル > Webサイト掲示板をPHPで実装する機能を詳しく解説

Webサイト掲示板をPHPで実装する機能を詳しく解説

*文
リリース: 2023-03-19 09:46:01
オリジナル
4109 人が閲覧しました

この記事では主に、PHP で Web サイトの掲示板機能を実装する方法を紹介します。主に Changyan 掲示板と NetEase の投稿スタイルをモデルにしています。興味のある方は参考にしてください。お役に立てれば幸いです。

私が実装したいのは下の図のスタイルです。実装原理は同じです

長岩の掲示板スタイル:

NetEase投稿スタイル:

原則

コメントテーブルに2つのメインフィールドidとpidを追加する必要があります。記事ID、返信時間、などの他のフィールドも自由に追加できます。返信内容、返信者は何ですか。 pid は現在返信されているコメントの ID です。 上の図からわかるように、各レイヤーの pid は前のレイヤーのコメントの ID です。上のレイアウトをよく見てください。 PHP の多次元配列に似ていますか?思いついたら簡単ですよ。 実装方法



1. フロント: これは比較的単純で、p に p を埋め込むだけです。次に、p

<p class="comment"> 
 <p class="comment"> 
  <p class="comment"> 
 
  </p> 
 </p> 
</p> 
 
<p class="comment"> 
 
</p>
ログイン後にコピー
のボーダーとマージンパディングを設定します。 バックエンド: 最初に再帰を使用してデータベース内の結果を再編成し、次に再帰を使用して上記のフロントエンドを出力します。コードは

コメントテーブルの構造と内容は次のとおりです

そして、このテーブル内のすべてのコメントを直接読み取ります。次の配列を取得できます

Array 
( 
 [0] => Array 
  ( 
   [id] => 1 
   [pid] => 
   [content] => 评论1 
  ) 
 
 [1] => Array 
  ( 
   [id] => 2 
   [pid] => 
   [content] => 评论2 
  ) 
 
 [2] => Array 
  ( 
   [id] => 3 
   [pid] => 
   [content] => 评论3 
  ) 
 
 [3] => Array 
  ( 
   [id] => 4 
   [pid] => 1 
   [content] => 评论4回复评论1 
  ) 
 
 [4] => Array 
  ( 
   [id] => 5 
   [pid] => 1 
   [content] => 评论5回复评论1 
  ) 
 
 [5] => Array 
  ( 
   [id] => 6 
   [pid] => 2 
   [content] => 评论6回复评论2 
  ) 
 
 [6] => Array 
  ( 
   [id] => 7 
   [pid] => 4 
   [content] => 评论7回复评论4 
  ) 
 
 [7] => Array 
  ( 
   [id] => 8 
   [pid] => 7 
   [content] => 评论8回复评论7 
  ) 
 
 [8] => Array 
  ( 
   [id] => 9 
   [pid] => 8 
   [content] => 评论9回复评论8 
  ) 
 
 [9] => Array 
  ( 
   [id] => 10 
   [pid] => 8 
   [content] => 评论10回复评论8 
  ) 
 
)
ログイン後にコピー

次に、この配列を上記の掲示板フォームに再編成する必要がありますここで、$array は上記で読み取った配列であり、最初にデフォルトで空である pid を取り出し、次に再帰して取り出します。現在のコメント ID の配列を再構成すると、以下の配列が得られます。この配列のスタイルは、前のコメント スタイル

public static function tree($array,$child="child", $pid = null) 
{ 
 $temp = []; 
 foreach ($array as $v) { 
  if ($v[&#39;pid&#39;] == $pid) { 
   $v[$child] = self::tree($array,$child,$v[&#39;id&#39;]); 
   $temp[] = $v; 
  } 
 } 
 return $temp; 
}
ログイン後にコピー
とよく似ていることがわかります。再帰出力を使用します

Array 
( 
 [0] => Array 
  ( 
   [id] => 1 
   [pid] => 
   [content] => 评论1 
   [child] => Array 
    ( 
     [0] => Array 
      ( 
       [id] => 4 
       [pid] => 1 
       [content] => 评论4回复评论1 
       [child] => Array 
        ( 
         [0] => Array 
          ( 
           [id] => 7 
           [pid] => 4 
           [content] => 评论7回复评论4 
           [child] => Array 
            ( 
             [0] => Array 
              ( 
               [id] => 8 
               [pid] => 7 
               [content] => 评论8回复评论7 
               [child] => Array 
                ( 
                 [0] => Array 
                  ( 
                   [id] => 9 
                   [pid] => 8 
                   [content] => 评论9回复评论8 
                   [child] => Array 
                    ( 
                    ) 
 
                  ) 
 
                 [1] => Array 
                  ( 
                   [id] => 10 
                   [pid] => 8 
                   [content] => 评论10回复评论8 
                   [child] => Array 
                    ( 
                    ) 
 
                  ) 
 
                ) 
 
              ) 
 
            ) 
 
          ) 
 
        ) 
 
      ) 
 
     [1] => Array 
      ( 
       [id] => 5 
       [pid] => 1 
       [content] => 评论5回复评论1 
       [child] => Array 
        ( 
        ) 
 
      ) 
 
    ) 
 
  ) 
 
 [1] => Array 
  ( 
   [id] => 2 
   [pid] => 
   [content] => 评论2 
   [child] => Array 
    ( 
     [0] => Array 
      ( 
       [id] => 6 
       [pid] => 2 
       [content] => 评论6回复评论2 
       [child] => Array 
        ( 
        ) 
 
      ) 
 
    ) 
 
  ) 
 
 [2] => Array 
  ( 
   [id] => 3 
   [pid] => 
   [content] => 评论3 
   [child] => Array 
    ( 
    ) 
 
  ) 
 
)
ログイン後にコピー

その後、


がわかります。原理は次のとおりです。配列を再編成し、出力を反復処理するだけです。


関連する推奨事項:

PHP が 16 進数の画像データを Web ページに表示する方法の詳細な説明

ThinkPHP の動作拡張機能とプラグインの詳細な説明

詳しいやり方の説明PHPはシンプルで簡単な検索ボックスの自動プロンプト機能を実装します

以上がWebサイト掲示板をPHPで実装する機能を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート