PHP+MySQL+Ajax实现点赞功能及用户限制

2 下载量 148 浏览量 更新于2024-08-30 1 收藏 96KB PDF 举报
本示例展示了如何使用PHP、MySQL和AJAX实现一个局部刷新的点赞/取消点赞功能,确保每个账号只能点赞一次。系统通过记录每个点赞的用户ID以及点赞数量来实现这一功能。 首先,我们需要两个数据库表:一个用于统计点赞数(如`zanCount`),另一个用于记录用户的点赞行为(如`zanRecord`)。 1. **点赞数统计表(zanCount)**: - `zanId`: 点赞内容的唯一标识 - `count`: 对应点赞内容的总点赞数 2. **用户点赞记录表(zanRecord)**: - `id`: 记录的唯一标识 - `uId`: 用户的唯一标识 - `zanId`: 点赞内容的唯一标识 接下来,我们需要连接到数据库: ```php $con = new mysqli('localhost', 'root', '', 'test'); if (!$con) { die('连接数据库失败,失败原因:' . mysqli_error()); } else { // echo "连接成功"; } ``` 然后,我们检查用户是否已经点赞: ```php // 假设用户编号为1,赞编号为1 $uId = "1"; $zanId = "1"; // 查找赞id为1的点赞数 $countResult = mysqli_query($con, "SELECT count FROM zanCount WHERE zanId=$zanId"); $countZan = $countResult['count']; // 查找改用户是否对赞id为1点赞 $result = mysqli_fetch_array(mysqli_query($con, "SELECT * FROM zanRecord WHERE uId=$uId AND zanId=$zanId")); ``` 基于查询结果,我们可以判断用户是否已点赞,并输出相应的HTML: - 如果已点赞,显示已点赞的HTML并提供取消点赞操作: ```html <div class="dolikeDIV" id="dolikeDIV"> <button id="dolike" onclick="zanDel()">取消点赞</button> </div> ``` - 如果未点赞,显示未点赞的HTML并提供点赞操作: ```html <div class="dolikeDIV" id="dolikeDIV"> <button id="dolike" onclick="zanAdd()">点赞</button> </div> ``` 当用户点击按钮时,AJAX会发送请求到服务器进行点赞或取消点赞的操作: ```javascript function zanAdd() { // 发送请求,增加点赞数并记录用户点赞 } function zanDel() { // 发送请求,减少点赞数并删除用户点赞记录 } ``` 在服务器端,我们需要处理这些请求,更新数据库中的数据: - 对于点赞操作,向`zanCount`表增加点赞数,并在`zanRecord`表中添加新记录。 - 对于取消点赞操作,从`zanCount`表中减少点赞数,并在`zanRecord`表中删除对应的点赞记录。 最后,返回更新后的点赞数给前端,前端通过局部刷新显示最新的点赞状态。 总结,这个功能的关键在于通过数据库记录用户点赞行为,结合PHP处理请求,使用AJAX实现无刷新交互,确保用户只能对同一条内容点赞一次。这为用户提供了一种常见的社交网络互动体验,同时也保证了数据的准确性和一致性。