在我的网站上,我有一个表 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/