php - 我应该如何在我的网站上实现 "like"计数器? (不是 Facebook )

标签 php mysql

在我的网站中,用户可以发表意见,我希望其他用户能够执行相当于 Facebook 的“点赞”操作。

但是我不知道如何实现这个。我的主要问题是我需要防止用户多次喜欢同一件事。

我计划在每次提交的数据库条目中添加一个长字符串,例如“userid: rating/userid: rating/userid: rating”。但我认为这效率非常低,因为每次有人按下按钮时我都需要解析字符串,并且如果有很多评分,那么我认为它必须做很多工作。

我应该为全局评级创建一个单独的表,并使用提交 ID 将它们链接到正确的内容,还是什么?我觉得让 mysql 挖掘整个数据库并在每次有人打开提交页面时查找具有匹配 ID 的所有单独评分条目是非常低效的...

最佳答案

您创建另一个表:submission_ rating。三列就足够了: ratingsubmission_iduser_id

有人按下类似的按钮,您执行INSERT。但是,在执行插入之前,您需要检查该特定用户是否已经喜欢此提交。如果用户有,您就删除类似的内容。如果没有,请插入评级。

编辑:正如下面两位先生建议的那样,不要依赖其他检查,而是选择 UNIQUE 索引。确保在尝试插入时捕获错误并正确显示它。大胆地说,if(!$insert) {}

关于php - 我应该如何在我的网站上实现 "like"计数器? (不是 Facebook ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20975810/

相关文章:

javascript - JS函数在隐身模式下自动执行?

php - 如何正确地将依赖项(服务)注入(inject) Symfony2 中的非服务类?

PHP - 比较时间

html - 从数据库获取 html 标记并显示在 div 中

php - Laravel 架构构建器主键作为外键

MySQL过滤可能的空值

php - Mysql查询日期格式、phpmailer

php - HMVC 和 HTML 组件化

php - Laravel 中的数据比较

php - MySQL 加入 PHP PDO 作为子对象