PHP+MySQL+Ajax实现点赞功能及用户限制
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实现无刷新交互,确保用户只能对同一条内容点赞一次。这为用户提供了一种常见的社交网络互动体验,同时也保证了数据的准确性和一致性。
163 浏览量
点击了解资源详情
2021-01-20 上传
2023-07-14 上传
2020-10-23 上传
2015-09-22 上传
830 浏览量
2023-12-20 上传
weixin_38684743
- 粉丝: 6
- 资源: 960
最新资源
- SSM动力电池数据管理系统源码及数据库详解
- R语言桑基图绘制与SCI图输入文件代码分析
- Linux下Sakagari Hurricane翻译工作:cpktools的使用教程
- prettybench: 让 Go 基准测试结果更易读
- Python官方文档查询库,提升开发效率与时间节约
- 基于Django的Python就业系统毕设源码
- 高并发下的SpringBoot与Nginx+Redis会话共享解决方案
- 构建问答游戏:Node.js与Express.js实战教程
- MATLAB在旅行商问题中的应用与优化方法研究
- OMAPL138 DSP平台UPP接口编程实践
- 杰克逊维尔非营利地基工程的VMS项目介绍
- 宠物猫企业网站模板PHP源码下载
- 52简易计算器源码解析与下载指南
- 探索Node.js v6.2.1 - 事件驱动的高性能Web服务器环境
- 找回WinSCP密码的神器:winscppasswd工具介绍
- xctools:解析Xcode命令行工具输出的Ruby库