php评论后面的回复怎么做
-
在PHP中实现评论后的回复功能,可以借助数据库和前端技术来实现。
首先,需要一个数据库表来存储评论和回复的信息。可以创建一个名为comments的表,包含字段comment_id、content、parent_comment_id和create_time等字段,分别用于记录评论的ID、内容、父评论ID和创建时间。
在页面上显示评论列表时,可以按照一定的规则展示评论和回复的关系。可以使用递归函数来实现,逐层遍历评论和回复,并根据parent_comment_id字段来确定回复的目标。例如,可以使用以下代码:
“`
function displayComments($comments, $parent_id = 0) {
foreach ($comments as $comment) {
if ($comment[‘parent_comment_id’] == $parent_id) {
echo ‘‘;
}
}
}
“`在用户点击回复按钮时,可以通过Ajax请求向后端发送评论回复的数据。后端接收到请求后,将回复的内容和父评论的ID保存到数据库中,然后返回新添加的回复的信息给前端,在页面上显示新增的回复内容。
后端的代码示例:
“`
// 接收Ajax请求
if ($_SERVER[‘REQUEST_METHOD’] == ‘POST’) {
// 获取回复内容和父评论 ID
$reply_content = $_POST[‘content’];
$parent_comment_id = $_POST[‘parent_comment_id’];// 将回复信息保存到数据库中,略…
// 返回新增回复的信息给前端
$reply_id = // 获取新增回复的ID
$reply_time = // 获取新增回复的时间
$reply_info = array(
‘reply_id’ => $reply_id,
‘content’ => $reply_content,
‘create_time’ => $reply_time
);
echo json_encode($reply_info);
exit;
}
“`最后,通过前端的JavaScript代码将新添加的回复信息展示在页面上。可以使用jQuery的Ajax方法来发送请求和处理返回的数据。
前端的代码示例:
“`
$(document).ready(function() {
// 点击回复按钮时的事件处理
$(‘.reply-btn’).on(‘click’, function() {
var parent_comment_id = // 获取父评论 ID
var reply_content = // 获取回复内容// 发送Ajax请求
$.ajax({
url: ‘reply.php’,
type: ‘POST’,
data: {
parent_comment_id: parent_comment_id,
content: reply_content
},
dataType: ‘json’,
success: function(data) {
// 在页面上显示新增的回复内容
var reply_html = ‘‘;
reply_html += ‘‘ + data.content + ‘
‘;
reply_html += ‘‘;
// 将新回复追加到对应的父评论下
$(reply_html).appendTo($(this).parent().next(‘.comment’));
}
});
});
});
“`以上是一种基本的实现思路和示例代码,可以根据实际情况进行适当调整和扩展。在实际开发中,还可以考虑评论和回复的分页展示、用户登录验证等功能的实现。
2年前 -
在 PHP 中,实现评论后面的回复通常有几种方法。以下是其中的五种方法:
1. 使用数据库记录回复信息:在数据库中创建一个用于存储回复的表格,包含评论的ID作为外键关联。当用户提交回复时,将回复的内容、回复者的信息以及评论的ID存储到数据库中。可以使用 SQL 语句查询时,通过评论的ID来获取与其相关的回复。
“`php
// 建立数据库连接
$conn = new mysqli(“localhost”, “username”, “password”, “database”);// 插入回复数据
$comment_id = $_POST[‘comment_id’];
$comment_reply = $_POST[‘comment_reply’];$sql = “INSERT INTO replies (comment_id, reply_content) VALUES (‘$comment_id’, ‘$comment_reply’)”;
$result = $conn->query($sql);// 获取回复数据
$sql = “SELECT * FROM replies WHERE comment_id = ‘$comment_id'”;
$result = $conn->query($sql);// 处理回复数据
while($row = $result->fetch_assoc()) {
echo $row[‘reply_content’];
}
“`2. 使用数组嵌套的方式存储回复:当用户提交回复时,将回复的内容、回复者的信息以及评论的ID存储为一个数组,作为评论的一个属性。这样就可以将评论和它的回复一起存储,方便地显示和处理。
“`php
// 定义回复数组
$comment_replies = array();// 添加回复
$comment_id = $_POST[‘comment_id’];
$comment_reply = $_POST[‘comment_reply’];$comment_replies[$comment_id][] = $comment_reply;
// 获取回复
$replies = $comment_replies[$comment_id];// 处理回复数据
foreach ($replies as $reply) {
echo $reply;
}
“`3. 使用面向对象的方式实现评论和回复:创建一个 Comment 类,具有评论的属性和方法。在 Comment 类中,可以使用一个数组来存储回复。通过添加和获取回复的方法,可以很方便地实现评论后面的回复。
“`php
class Comment {
private $id;
private $content;
private $replies = array();public function __construct($id, $content) {
$this->id = $id;
$this->content = $content;
}public function addReply($reply) {
$this->replies[] = $reply;
}public function getReplies() {
return $this->replies;
}
}// 创建评论对象
$comment = new Comment(1, “这是一条评论”);// 添加回复
$comment_reply = $_POST[‘comment_reply’];
$comment->addReply($comment_reply);// 获取回复
$replies = $comment->getReplies();// 处理回复数据
foreach ($replies as $reply) {
echo $reply;
}
“`4. 使用文件存储回复:将回复内容存储在一个文件中,每一行代表一条回复。当用户提交回复时,将回复的内容追加到文件的末尾。通过读取该文件,可以获取所有的回复内容。
“`php
// 添加回复
$comment_id = $_POST[‘comment_id’];
$comment_reply = $_POST[‘comment_reply’];$file = fopen(“replies.txt”, “a”);
fwrite($file, “$comment_id,$comment_reply\n”);
fclose($file);// 获取回复
$file = fopen(“replies.txt”, “r”);
while(!feof($file)){
$line = fgets($file);
$data = explode(“,”, $line);if ($data[0] == $comment_id) {
echo $data[1];
}
}
fclose($file);
“`5. 使用 Session 存储回复:将回复内容存储在 Session 中,通过一个数组来保存评论和它的回复。当用户提交回复时,将回复的内容添加到 Session 的数组中。
“`php
// 启动 Session
session_start();// 添加回复
$comment_id = $_POST[‘comment_id’];
$comment_reply = $_POST[‘comment_reply’];$_SESSION[‘replies’][$comment_id][] = $comment_reply;
// 获取回复
$replies = $_SESSION[‘replies’][$comment_id];// 处理回复数据
foreach ($replies as $reply) {
echo $reply;
}
“`这些方法提供了不同的实现方式,选择适合您需求的方式来实现评论后面的回复。可以根据项目的规模、需求和个人喜好选择适合的方法。
2年前 -
在实现PHP评论系统中,为了让用户能够回复评论,可以采用以下几种方法来实现:
1. 嵌套评论表:通过在评论表中添加一个`parent_id`字段,用来表示该评论的父评论ID。当用户回复评论时,将父评论的ID存储到`parent_id`字段中。这样,可以通过查询父评论的ID来获取所有关联的回复评论。在显示评论时,可以按照父评论ID进行嵌套显示。
2. 无限层级评论:在评论表中除了`parent_id`字段外,还可以添加`level`字段,用来表示评论的层级。一般情况下,父评论的`level`为0,子评论的`level`为父评论的`level`加1。在显示评论时,可以根据评论的`level`值进行缩进显示,使其形成层级关系。
3. 使用树状结构:通过使用树状结构,将评论以树的形式存储在数据库中。可以在评论表中添加`left`和`right`字段,用来表示评论在树中的位置。当用户回复评论时,根据父评论的位置,将新的回复评论插入到相应位置。在显示评论时,可以通过查询树结构,并根据`left`和`right`字段进行排序和缩进显示。
4. 使用递归函数:通过递归函数来实现无限层级的评论回复。在显示评论时,使用递归函数遍历评论数据,并根据评论的层级在HTML中进行缩进显示。当用户回复评论时,递归函数会将回复的评论插入到对应的父评论下。
以上是几种常见的实现评论回复的方法。根据具体的需求和项目结构,选择适合的方法来实现评论系统中的回复功能。同时,为了保证系统的性能和可扩展性,可以对评论回复功能进行优化,如使用缓存技术、分页显示等。
2年前
echo ‘
‘ . $comment[‘content’] . ‘
‘;
echo ‘‘;
displayComments($comments, $comment[‘comment_id’]);
echo ‘