本文主要介绍了php实现网站留言板功能,主要仿照了畅言留言板和网易跟帖样式进行制作,感兴趣的小伙伴们可以参考一下。希望对大家有所帮助。
我要实现的就是下图的这种样式,可参考下面这两个网站的留言板,他们的实现原理都是一样的
畅言留言板样式:
网易跟帖样式:
原理
需要在评论表添加两个主要字段 id 和 pid ,其他字段随意添加,比如文章id、回复时间、回复内容、回复人什么的。
其中pid就是当前已经回复过的评论的id。
从上图可以看出,里面每一层的pid就是就是他上一层评论的id。仔细观察下上面的布局。是不是很像PHP中的多维数组?如果你能想到,那么就简单了。
实现方法
1.前台:这个比较简单 就是p嵌p。然后设置p的border和margin padding就行了
<p class="comment"> <p class="comment"> <p class="comment"> </p> </p> </p> <p class="comment"> </p>
2、后台 :用到了两次递归,首先用递归把数据库中的结果重组下,重组之后,然后用递归输出上面的那种前台代码即可
comment表结构和内容如下
然后直接读出这个表中的所有评论。可以得到如下数组
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默认为空的,然后递归,在取出pid为当前评论id的数组
public static function tree($array,$child="child", $pid = null) { $temp = []; foreach ($array as $v) { if ($v['pid'] == $pid) { $v[$child] = self::tree($array,$child,$v['id']); $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 ( ) ) )
得到上面的数组后 ,再用递归输出即可
public static function traverseArray($array) { foreach ($array as $v) { echo "<p class='comment' style='width: 100%;margin: 10px;background: #EDEFF0;padding: 20px 10px;border: 1px solid #777;'>"; echo $v['content']; if ($v['child']) { self::traverseArray($v['child']); } echo "</p>"; } }
然后即可看到
原理就是这样,就是重组下数组,然后遍历输出就行了。
相关推荐:
Atas ialah kandungan terperinci 详解PHP实现网站留言板的功能. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Artikel ini menerangkan cara membuat, melaksanakan, dan menggunakan antara muka dalam PHP, memberi tumpuan kepada manfaat mereka untuk organisasi kod dan penyelenggaraan.

Artikel ini membincangkan perbezaan antara crypt () dan password_hash () dalam php untuk hashing kata laluan, memberi tumpuan kepada pelaksanaan, keselamatan, dan kesesuaian untuk aplikasi web moden.

Artikel membincangkan mencegah skrip lintas tapak (XSS) dalam PHP melalui pengesahan input, pengekodan output, dan menggunakan alat seperti OWASP ESAPI dan pembersih HTML.

Autoloading dalam PHP secara automatik memuat fail kelas apabila diperlukan, meningkatkan prestasi dengan mengurangkan penggunaan memori dan meningkatkan organisasi kod. Amalan terbaik termasuk menggunakan PSR-4 dan menganjurkan kod dengan berkesan.

Aliran PHP menyatukan pengendalian sumber seperti fail, soket rangkaian, dan format mampatan melalui API yang konsisten, abstrak kerumitan dan meningkatkan fleksibiliti dan kecekapan kod.

Artikel ini membincangkan menguruskan saiz muat naik fail dalam PHP, memberi tumpuan kepada had lalai 2MB dan bagaimana untuk meningkatkannya dengan mengubah suai tetapan php.ini.

Artikel ini membincangkan jenis yang boleh dibatalkan dalam PHP, yang diperkenalkan dalam Php 7.1, yang membolehkan pembolehubah atau parameter menjadi sama ada jenis atau null yang ditentukan. Ia menyoroti faedah seperti kebolehbacaan, keselamatan jenis, dan niat jelas, dan menerangkan cara mengisytiharkan

Artikel ini membincangkan perbezaan antara fungsi Unset () dan Unlink () dalam pengaturcaraan, memberi tumpuan kepada tujuan dan kes penggunaannya. Unset () membuang pembolehubah dari ingatan, sementara Unlink () memadam fail dari sistem fail. Kedua -duanya sangat penting untuk effec


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Pelayar Peperiksaan Selamat
Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.

EditPlus versi Cina retak
Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

SublimeText3 Linux versi baharu
SublimeText3 Linux versi terkini

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

PhpStorm versi Mac
Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).
