php - 如何管理基于 AJAX 的 'like/dislike' 功能?

标签 php mysql ajax

我想为我正在编写的论坛脚本中的每个帖子添加一个喜欢/不喜欢-upvote/downovote 类型的功能(很像 SO 中的那个)。我在尝试弄清楚如何完成时遇到两个困难:

1) 我想不出一个可以有效执行此操作的数据库架构。我可以使用单独的 `likeordislike` 表来建立用户和帖子之间的关系(xyz 喜欢帖子 #123),或者我可以在 `posts` 表中使用类型为\'text\' 的列列出所有喜欢的用户喜欢(或不喜欢)该帖子。后者当然意味着我必须解析 userID 字段才能使用它。

2) 确保用户不会对一个帖子点赞/不点赞两次。

这可能是微不足道的,但我只能想到在服务器端进程上进行大量 mysql 调用的方法。谢谢。

最佳答案

制作一个单独的表格,您可以在其中跟踪谁喜欢某事,谁不喜欢。该表将用于检查用户是否已经做过某事,因此您可以防止他做两次。 然后添加另一个字段(如果你有投票)或两个(如果你有喜欢/不喜欢),你将在其中存储喜欢/不喜欢或得分的总数,所以你不必计算这个 -每次显示帖子时都会飞。当然,当有人对帖子投票时,您会更新这个(或多个)专栏。

不要费心禁用投票链接。只需在用户点击链接时检查他是否已经投票,如果他已经投票,则拒绝他投票。

关于php - 如何管理基于 AJAX 的 'like/dislike' 功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1935366/

相关文章:

php - 在 CodeIgniter session 中存储多个具有相同名称的输入

php7.3 : Compile error with two traits that define the same property

php - 使用 jquery validate 插件检查用户名

javascript - Codeigniter 在 ajax 调用上给出 404 错误

PHP CURL CURLOPT_SSL_VERIFYPEER 被忽略

php - 关于DomDocument效率的问题

mysql - 将数据从 My Sql 导入到 Sql Server 的最简单方法

php - 如何在mysql中对日期进行排序?

php - Laravel verifyCsrfToken 异常不起作用

jquery - Google Translate API : XMLHttpRequest cannot load. Origin http ://test. Access-Control-Allow-Origin 不允许 dyndns.org