php评论盖楼怎么实现,评论区设计(一):如何做好盖楼式评论?

本篇文章以网易新闻评论区为例,为大家讲解了五种评论区的设计模式,并且讲述了使用每种模式的原由,供大家参考。

eed8e7d60b8c8cd28f35087fa70ed264.png

评论区设计有多种模式,本文以网易新闻评论区为例,只讨论盖楼模式。

网易评论区,分三部分:热门跟帖——精彩盖楼——最新跟帖。有时没有“精彩盖楼”、“最新跟帖”部分,如果跟帖数超过7层,就会折叠。

如下图:

efeb49eee63d1979521ddf63a934bf25.png

和大多数评论区一样,“网易新闻评论区”采用的是头像(包含名字,时间)在左上角,点赞在右上角,评论文本在头像和点赞的下方。这种设计很常见,大家都很适应,也喜欢。

下文是我小改的五个样式:

样式一:

头像从评论文本的左上角移至右下角;头像从圆形变成方形;点赞从评论文本右上角移至中下边(评论文本的中间下边);删掉一些信息(地址等),只保留头像,名字,时间;每一条评论的都显示楼层。如下图:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现评论盖楼系统一般需要以下步骤: 1. 创建评论表:在MySQL中创建一个表来存储评论数据,包括评论内容、时间戳、用户ID、回复的评论ID等字段。例如: ``` CREATE TABLE comments ( id INT(11) NOT NULL AUTO_INCREMENT, user_id INT(11) NOT NULL, content TEXT NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, parent_id INT(11), PRIMARY KEY (id) ); ``` 2. 编写PHP脚本:编写PHP脚本来处理用户提交的评论,并将其保存到数据库表中。需要注意的是,当用户回复某条评论时,需要保存该评论的ID作为回复的评论ID。 ``` // 连接数据库 $conn = mysqli_connect($host, $username, $password, $dbname); // 处理用户提交的评论 if ($_SERVER['REQUEST_METHOD'] == 'POST') { $user_id = $_POST['user_id']; $content = $_POST['content']; $parent_id = $_POST['parent_id']; $sql = "INSERT INTO comments (user_id, content, parent_id) VALUES ('$user_id', '$content', '$parent_id')"; mysqli_query($conn, $sql); } ``` 3. 显示评论列表:编写PHP脚本来查询数据库中的评论数据,并将其显示在页面上。需要使用递归算法来处理评论的嵌套结构,并使用CSS和JavaScript来实现评论盖楼的效果。 ``` // 获取根评论列表 $sql = "SELECT * FROM comments WHERE parent_id IS NULL"; $result = mysqli_query($conn, $sql); // 递归处理子评论列表 function showComments($parent_id, $level) { global $conn; $sql = "SELECT * FROM comments WHERE parent_id=$parent_id"; $result = mysqli_query($conn, $sql); while ($row = mysqli_fetch_assoc($result)) { echo '<div style="margin-left: ' . ($level * 20) . 'px;">'; echo '<p>' . $row['content'] . '</p>'; echo '<small>' . $row['created_at'] . '</small>'; echo '<a href="#" onclick="showReplyForm(' . $row['id'] . ')">回复</a>'; echo '<div id="reply-form-' . $row['id'] . '" style="display: none;">'; echo '<form method="post" action="#">'; echo '<input type="hidden" name="parent_id" value="' . $row['id'] . '">'; echo '<input type="text" name="content">'; echo '<input type="submit" value="提交">'; echo '</form>'; echo '</div>'; showComments($row['id'], $level + 1); echo '</div>'; } } // 显示评论列表 while ($row = mysqli_fetch_assoc($result)) { echo '<div>'; echo '<p>' . $row['content'] . '</p>'; echo '<small>' . $row['created_at'] . '</small>'; echo '<a href="#" onclick="showReplyForm(' . $row['id'] . ')">回复</a>'; echo '<div id="reply-form-' . $row['id'] . '" style="display: none;">'; echo '<form method="post" action="#">'; echo '<input type="hidden" name="parent_id" value="' . $row['id'] . '">'; echo '<input type="text" name="content">'; echo '<input type="submit" value="提交">'; echo '</form>'; echo '</div>'; showComments($row['id'], 1); echo '</div>'; } ``` 需要注意的是,为了避免SQL注入攻击,需要使用参数化查询或预处理语句来处理用户提交的数据。另外,为了安全起见,还需要进行用户身份验证和数据过滤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值