Explication détaillée de la fonction de mise en œuvre du forum de discussion du site Web en PHP

*文
Libérer: 2023-03-19 09:46:01
original
3977 Les gens l'ont consulté

Cet article présente principalement comment implémenter la fonction de forum de discussion du site Web en PHP. Il est principalement calqué sur le forum de discussion de Changyan et les amis intéressés peuvent s'y référer. J'espère que cela aide tout le monde.

Ce que je souhaite obtenir, c'est le style indiqué ci-dessous. Vous pouvez vous référer aux forums de discussion des deux sites Web ci-dessous. Leurs principes de mise en œuvre sont les mêmes

Changer le message. style de tableau :

Style de publication NetEase :

Principe
Vous devez ajouter deux champs principaux id et pid dans la table des commentaires. D'autres champs peuvent être ajoutés à volonté, comme l'identifiant de l'article, la réponse. heure, contenu de la réponse, répondeurs, etc.
Le pid est l'identifiant du commentaire auquel on a actuellement répondu.
Comme vous pouvez le voir sur l'image ci-dessus, le pid de chaque calque est l'identifiant du commentaire sur le calque précédent. Regardez de plus près la mise en page ci-dessus. Est-ce similaire aux tableaux multidimensionnels en PHP ? Si vous y réfléchissez, c'est facile.
Méthode de mise en œuvre
1 Réception : C'est relativement simple, c'est p intégré dans p. Ensuite, définissez la bordure et le remplissage de la marge de p

<p class="comment"> 
 <p class="comment"> 
  <p class="comment"> 
 
  </p> 
 </p> 
</p> 
 
<p class="comment"> 
 
</p>
Copier après la connexion

2. Dans les coulisses : deux récursions sont utilisées. Premièrement, la récursivité est utilisée pour réorganiser les résultats dans le fichier. Ensuite, après réorganisation, utilisez la récursion pour générer le code frontal ci-dessus
La structure et le contenu de la table de commentaires sont les suivants

Lisez ensuite directement tous les commentaires de ce tableau. Vous pouvez obtenir le tableau suivant

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 
  ) 
 
)
Copier après la connexion

Ensuite, nous devons réorganiser ce tableau dans le formulaire de forum ci-dessus
où $array est le tableau lu ci-dessus. Tout d'abord, retirez le pid, qui est vide. par défaut. , puis récursivement, après avoir retiré le tableau

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; 
}
Copier après la connexion

dont le pid est l'identifiant du commentaire actuel et l'avoir réorganisé, vous pouvez obtenir le tableau suivant. Vous pouvez voir que le style de ce tableau est. très similaire au style de commentaire avant

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 
    ( 
    ) 
 
  ) 
 
)
Copier après la connexion

Après avoir obtenu le tableau ci-dessus, utilisez la récursivité pour le sortir

public static function traverseArray($array) 
{ 
 foreach ($array as $v) { 
  echo "<p class=&#39;comment&#39; style=&#39;width: 100%;margin: 10px;background: #EDEFF0;padding: 20px 10px;border: 1px solid #777;&#39;>"; 
  echo $v[&#39;content&#39;]; 
  if ($v[&#39;child&#39;]) { 
   self::traverseArray($v[&#39;child&#39;]); 
  } 
  echo "</p>"; 
 
 } 
 
}
Copier après la connexion

Ensuite, vous pouvez voir

Le principe est le suivant, il suffit de réorganiser le tableau puis de parcourir la sortie.

Recommandations associées :

Explication détaillée de la façon dont PHP affiche les données d'image hexadécimales sur la page Web

Explication détaillée des extensions et plug-ins comportementaux de ThinkPHP

Explication détaillée de la façon dont PHP implémente un simple champ de recherche automatique fonction d'invite

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!