php - 用于跟踪用户收藏夹的系统

标签 php system favorites

在我的网站上,我有一个表 movies 和一个表 users

我正在尝试创建一个用户可以单击的“添加到收藏夹”按钮,该按钮会将那部电影添加到他的收藏夹中(目前不需要 ajax/javascript,只需 php)。

那么我可以做这样的事情的最简单方法是什么?我已经考虑过这个问题,但我似乎找不到解决方案(我所想到的一切都太复杂了,而且在我看来是不可能的)。

你有什么想法?

我不需要现成的脚本,只需要一个可以让我工作的想法(尽管如果您有此类脚本的示例,我很乐意查看)。

谢谢!

最佳答案

这是一个多对多的关系。一个用户可以收藏多部电影,一部电影可以被很多用户喜欢。在 RDBMS 中,您表示与第三个表的多对多关系。我称其为交叉表,但它也有其他名称。

创建一个包含两列的表格。这些列都是外键,分别引用电影和用户。

CREATE TABLE Favorites (
  user_id INT NOT NULL,
  movie_id INT NOT NULL,
  PRIMARY KEY (user_id, movie_id),
  FOREIGN KEY (user_id) REFERENCES Users(user_id),
  FOREIGN KEY (movie_id) REFERENCES Movies(movie_id)
); 

当用户选择收藏一部电影时:

INSERT INTO Favorites (user_id, movie_id) VALUES (?, ?)

当用户决定不再喜欢某部电影时,删除相应的行:

DELETE FROM Favorites WHERE (user_id, movie_id) = (?, ?)

获取给定用户喜欢的电影集:

SELECT movie_id FROM Favorites WHERE user_id = ?

获取喜欢给定电影的用户集:

SELECT user_id FROM Favorites WHERE movie_id = ?

关于您的评论之一:

您不应该将“添加到收藏夹”作为链接。像谷歌这样的索引器会跟踪链接,然后在你知道之前,每个用户都喜欢了每部电影。

一般的最佳实践是只读操作可以是 GET 请求,而写入数据库的操作可以是 POST 请求。这意味着您需要使用 <form>提交 POST 请求的元素,而不是 <a href="...">元素。

关于php - 用于跟踪用户收藏夹的系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3722242/

相关文章:

php - 在 php 中按升序排列的最后 20 个数据

php - 将 json_encode 作为数组返回不起作用

android - 是否可以更换电话应用程序或锁屏?

ios - 如何确定CNContact是收藏夹?

php - Magento 2 - 当用户点击 "Go To Checkout"时调度事件

php - 如果使用 "a href"提交页面,则不会发布隐藏字段?

c++ - 如何在运行时编译 C++ 代码(如 Python 中的 eval)?

perl - 将 "$?"传递给子例程是否安全?

debugging - 使用 DataExtender 扩展收藏夹以及如何调试它?

ios - 无需等待 API 响应即可更改图标状态。 (标记为最喜欢的功能)