Php 用于跟踪用户收藏夹的系统
在我的网站上,我有一个表Php 用于跟踪用户收藏夹的系统,php,system,favorites,Php,System,Favorites,在我的网站上,我有一个表电影和一个表用户 我正在尝试一个用户可以点击的“添加到favs”按钮,它将把电影添加到他的收藏夹中(目前不需要ajax/javascript,只需要php) 那么,我做这种事情最简单的方法是什么?我已经考虑过这个问题,但我似乎找不到解决办法(我所想到的是太复杂了,在我看来是不可能的) 你的想法是什么 我不需要一个现成的脚本,只是一个可以让我工作的想法(尽管如果你有这样一个脚本的例子,我很乐意看看) 谢谢 您需要创建一个新表: user_favorite_movies --
电影
和一个表用户
我正在尝试一个用户可以点击的“添加到favs”按钮,它将把电影添加到他的收藏夹中(目前不需要ajax/javascript,只需要php)
那么,我做这种事情最简单的方法是什么?我已经考虑过这个问题,但我似乎找不到解决办法(我所想到的是太复杂了,在我看来是不可能的)
你的想法是什么
我不需要一个现成的脚本,只是一个可以让我工作的想法(尽管如果你有这样一个脚本的例子,我很乐意看看)
谢谢 您需要创建一个新表:
user_favorite_movies
--------------------
ID (primary key)
userID (foreign key)
movieID (foreign key)
date
然后,当用户单击“添加收藏夹”按钮时,您只需使用用户表中的用户ID、电影表中的电影ID以及添加日期(便于以后排序)将新行插入到用户最喜爱的电影中
希望这有帮助
最好的
-Eric这是一种多对多关系。一个用户可以喜欢很多电影,而一部电影可以受到很多用户的青睐。在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请求。这意味着您需要使用
元素来提交POST请求,而不是
元素。您可以创建一个包含三列的表收藏夹
,mid
和uid
。要添加收藏夹,请执行以下操作:
INSERT INTO favourites (mid, uid) VALUES (3, 5)
要搜索一个用户的收藏夹,请执行以下操作:
SELECT * FROM favourites WHERE uid = 7
要搜索喜欢一部电影的人,请执行以下操作:
SELECT * FROM favourites WHERE mid = 9
添加第三个表:
CREATE TABLE user_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)
)
这称为交集表或联接表,因为它将users
表中的行联接到movies
表中的行(如您所见,每列都是外键)。它还定义了多对多关系,因为一个用户可以喜欢多部电影,而一部电影可以被多个用户喜欢
当您为用户添加最喜爱的电影时,只需在此表中插入一行,其中包含用户ID和电影ID:
INSERT INTO user_favorites(user_id, movie_id) VALUES([user ID], [movie ID])
要查看用户喜欢的电影,请执行以下操作:
SELECT movie_id FROM user_favorites WHERE user_id = [user ID]
就我所知,你仍然需要使用JavaScript或Ajax来完成这篇文章,除非你想在每次标记/取消标记收藏夹时刷新页面,同时添加/删除新的收藏夹指示器
还是我遗漏了什么 “收藏夹”是指用户的书签吗?如果是这样的话,你可能必须使用Javascript。不,他指的是MySQL服务器上用户帐户上的用户到电影书签列表。好的,完美的答案,非常详细,我现在就试试这个!非常感谢Eric的回答,看起来像上面的答案,但仍然非常有用!谢谢大牛,正如我上面所说的,基本上是一样的,但我正在考虑,所以谢谢你!现在只是一个小问题,我将如何继续将其发布到数据库中,我不知道为什么,通常我可以这样做,但现在我的“添加到收藏夹”将是一个链接而不是表单按钮,那么调用SQL语句的最佳方式是什么?@Alex我不确定它是链接还是按钮有什么关系。在目标页面上,只需准备
INSERT
查询并执行它。我是不是错过了你要问的问题?谢谢德兰,如上所述,非常感谢!虽然答案也是一样的。