首页 > 文章列表 > PHP 实现知识问答网站中的问题答案评论和点赞功能。

PHP 实现知识问答网站中的问题答案评论和点赞功能。

问答网站功能 问题答案评论 点赞功能
283 2023-07-04

PHP 实现知识问答网站中的问题答案评论和点赞功能

在知识问答网站中,问题的评论和答案的点赞功能是非常重要的交互功能。在本篇文章中,我将向大家介绍如何使用 PHP 实现这些功能,并提供相应的代码示例。

评论功能的实现:

首先,我们需要在数据库中创建一张评论表,存储评论的相关信息。表的结构可以包含以下字段:评论ID(comment_id)、问题或答案ID(question_id)、评论者ID(user_id)、评论内容(content)、评论时间(created_at)。这是一个简化的表结构,你可以根据自己的需求进行适当调整。

接下来,我们需要在页面上展示问题或答案的评论数量,并提供一个表单供用户输入评论内容。用户提交评论之后,我们将通过 PHP 将评论信息插入数据库中。

下面是一个示例的添加评论的代码:

// 连接数据库
$dsn = 'mysql:host=localhost;dbname=your_database';
$username = 'your_username';
$password = 'your_password';
$pdo = new PDO($dsn, $username, $password);

// 获取用户提交的评论内容
$content = isset($_POST['content']) ? $_POST['content'] : '';

// 如果评论内容不为空,则将评论插入数据库
if (!empty($content)) {
    $questionId = 1; // 问题或答案ID,这里假设为1
    $userId = 1; // 评论者ID,这里假设为1
    $createdAt = date('Y-m-d H:i:s'); // 获取当前时间
    
    // 插入评论数据
    $sql = "INSERT INTO comments (question_id, user_id, content, created_at) VALUES (:questionId, :userId, :content, :createdAt)";
    $stmt = $pdo->prepare($sql);
    $stmt->bindParam(':questionId', $questionId, PDO::PARAM_INT);
    $stmt->bindParam(':userId', $userId, PDO::PARAM_INT);
    $stmt->bindParam(':content', $content, PDO::PARAM_STR);
    $stmt->bindParam(':createdAt', $createdAt, PDO::PARAM_STR);
    $stmt->execute();
}

// 查询评论数量
$sql = "SELECT COUNT(comment_id) as comment_count FROM comments WHERE question_id = :questionId";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':questionId', $questionId, PDO::PARAM_INT);
$stmt->execute();
$row = $stmt->fetch(PDO::FETCH_ASSOC);
$commentCount = $row['comment_count'];

// 展示评论数量
echo "评论数量:" . $commentCount;

点赞功能的实现:

点赞功能与评论功能类似,同样需要一个点赞表来存储点赞相关的信息。点赞表的结构可以包含以下字段:点赞ID(like_id)、问题或答案ID(question_id)、点赞者ID(user_id)、点赞时间(created_at)。同样,你可以根据需求进行适当调整。

当用户点击“点赞”按钮时,我们将通过 PHP 将点赞信息插入点赞表中。下面是一个示例的点赞功能代码:

// 连接数据库
$dsn = 'mysql:host=localhost;dbname=your_database';
$username = 'your_username';
$password = 'your_password';
$pdo = new PDO($dsn, $username, $password);

// 获取用户点击点赞的问题或答案ID
$questionId = isset($_GET['question_id']) ? $_GET['question_id'] : '';

// 如果问题或答案ID不为空,则插入点赞数据
if (!empty($questionId)) {
    $userId = 1; // 点赞者ID,这里假设为1
    $createdAt = date('Y-m-d H:i:s'); // 获取当前时间
    
    // 插入点赞数据
    $sql = "INSERT INTO likes (question_id, user_id, created_at) VALUES (:questionId, :userId, :createdAt)";
    $stmt = $pdo->prepare($sql);
    $stmt->bindParam(':questionId', $questionId, PDO::PARAM_INT);
    $stmt->bindParam(':userId', $userId, PDO::PARAM_INT);
    $stmt->bindParam(':createdAt', $createdAt, PDO::PARAM_STR);
    $stmt->execute();
}

// 查询点赞数量
$sql = "SELECT COUNT(like_id) as like_count FROM likes WHERE question_id = :questionId";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':questionId', $questionId, PDO::PARAM_INT);
$stmt->execute();
$row = $stmt->fetch(PDO::FETCH_ASSOC);
$likeCount = $row['like_count'];

// 展示点赞数量
echo "点赞数量:" . $likeCount;

通过以上的代码示例,我们可以在知识问答网站中实现问题答案的评论和点赞功能。当用户提交评论或点赞后,相关信息将会被插入数据库中,并可以在页面上展示相应的评论数量和点赞数量。你可以根据自己的需求进行相应的调整和扩展,使其更好地适应实际应用场景。