Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

php如何实现点赞

作者:浪子无家   发布日期:2024-05-17   浏览:896

在PHP中,可以通过以下步骤实现点赞功能:

  1. 创建一个数据库表来存储点赞信息,包括点赞的用户ID和被点赞的内容ID。
  2. 在用户点击点赞按钮时,发送一个AJAX请求到服务器端。
  3. 服务器端接收到请求后,首先检查用户是否已经点赞过该内容。如果已经点赞过,则取消点赞;如果没有点赞过,则将点赞信息插入到数据库表中。
  4. 根据点赞的状态,更新点赞按钮的显示样式。
  5. 在显示点赞数的地方,查询数据库表中对应内容ID的点赞数量,并将其显示在页面上。

以下是一个简单的示例代码:

  1. 创建数据库表:
CREATE TABLE likes (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT,
    content_id INT
);
  1. 前端代码:
<!-- HTML部分 -->
<button id="likeButton" onclick="likeContent(1)">点赞</button>
<span id="likeCount">0</span>

<!-- JavaScript部分 -->
<script>
function likeContent(contentId) {
    var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function() {
        if (xhr.readyState === XMLHttpRequest.DONE) {
            if (xhr.status === 200) {
                var response = JSON.parse(xhr.responseText);
                if (response.liked) {
                    document.getElementById('likeButton').innerHTML = '取消点赞';
                } else {
                    document.getElementById('likeButton').innerHTML = '点赞';
                }
                document.getElementById('likeCount').innerHTML = response.likeCount;
            } else {
                console.error('请求失败');
            }
        }
    };
    xhr.open('POST', 'like.php');
    xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xhr.send('contentId=' + encodeURIComponent(contentId));
}
</script>
  1. 后端代码(like.php):
<?php
// 连接数据库
$servername = 'localhost';
$username = 'username';
$password = 'password';
$dbname = 'database';
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
    die('数据库连接失败: ' . $conn->connect_error);
}

// 获取请求参数
$contentId = $_POST['contentId'];
$userId = 1; // 假设当前用户ID为1

// 检查用户是否已经点赞过该内容
$sql = "SELECT * FROM likes WHERE user_id = $userId AND content_id = $contentId";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
    // 用户已经点赞过该内容,取消点赞
    $sql = "DELETE FROM likes WHERE user_id = $userId AND content_id = $contentId";
    $conn->query($sql);
    $liked = false;
} else {
    // 用户没有点赞过该内容,进行点赞
    $sql = "INSERT INTO likes (user_id, content_id) VALUES ($userId, $contentId)";
    $conn->query($sql);
    $liked = true;
}

// 查询点赞数量
$sql = "SELECT COUNT(*) AS likeCount FROM likes WHERE content_id = $contentId";
$result = $conn->query($sql);
$row = $result->fetch_assoc();
$likeCount = $row['likeCount'];

// 返回结果
$response = [
    'liked' => $liked,
    'likeCount' => $likeCount
];
echo json_encode($response);

// 关闭数据库连接
$conn->close();
?>

以上代码仅为示例,实际项目中可能需要根据具体需求进行修改和完善。

上一篇:php rand() 函数返回随机整数。

下一篇:php中重写方法有什么规则

大家都在看

php session用法

php 定义常量

phpisset函数

php后端

php爬虫框架

php读取csv文件

php 三元表达式

php文件加密

php 拆分字符串

php pcntl

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站