【发布时间】:2014-03-27 08:57:55
【问题描述】:
我有两个生成留言板输出的表。第一个表使用 while 循环显示表 posts 中给定主题的所有答案。这很好用。
然后我有另一个名为 thumbsup 的表,当用户点击“竖起大拇指”图标到留言板中的帖子时收集该表。我只希望特定用户能够按一次“竖起大拇指”按钮。
我正在尝试从 thumbsup 表中获取数据,以确定用户是否为 posts 表中的每个帖子按下了按钮。
我试过下面的sql语句:
SELECT topic, user FROM thumbsup WHERE topic = ".$posts_row['id']." AND user = ".$_SESSION['username']."
表格thumbsup如下所示:
id | topic | user
1 | 1 | bill
2 | 3 | rachel
3 | 5 | bill
4 | 5 | rachel
5 | 7 | rachel
我的问题是我无法让 sql 按主题和用户名进行排序。我可以让它按主题排序,但它只输出给定帖子的第一个条目;在这种情况下,它会在 5 号帖子上输出“bill”。
我想我可能需要在现有的 while 循环中添加一个新的 while 循环,但我也没有让它工作。
非常感谢您的帮助!
编辑:
好的,所以我有这个查询来获取帖子,并检查用户是否有赞许记录:
"SELECT posts.topic, posts.id, posts.content, posts.date, posts.user, posts.moderation, thumbsup.topic, thumbsup.user FROM posts LEFT OUTER JOIN thumbsup ON posts.id = thumbsup.topic AND thumbsup.user = ".$_SESSION['username']." WHERE posts.topic = " . $mysqli->real_escape_string($_GET['id']).""
- 这会导致 while 循环中没有帖子,但如果我删除用户名,它会再次只显示帖子。我的查询有问题吗?
EDIT2 - 解决方案:
我终于做对了,非常感谢Kickstart。
这是我最后的 sql 查询:
SELECT posts.topic, posts.id, posts.content, posts.date, (posts.user) AS users, posts.moderation, thumbsup.topic, thumbsup.user FROM posts LEFT OUTER JOIN thumbsup ON posts.id = AA_forum_thumbsup.topic AND thumbsup.user = '".$_SESSION['username']."' WHERE posts.topic = " . $mysqli->real_escape_string($_GET['id'])."
正如 Kickstart 所提到的,我需要在用户名周围加上额外的引号,因为它是一个字符串,而且我还必须将帖子表中的用户定义为“用户”。否则结果只会输出用户名如 $_SESSION['username'] 的帖子上的数据。
非常感谢,我希望这对其他人也有用!
【问题讨论】:
-
您真正想要什么?看不懂举个例子。你想要什么主题没有 5
-
它会在某个
topic上输出username的第一个赞。如果您只想知道此人是否在该帖子上单击了竖起大拇指,则不需要 while 循环 -
加入两个表并在查询中使用排序(以逗号分隔对多个列进行排序)
-
其实你想要的输出是什么...?
-
我希望能够确定用户是否已经为帖子投票。如果用户已经投票,那么他将无法再次为该特定帖子投票。就像论坛的“点赞”或 Facebook 的“赞”按钮。
标签: php mysql loops while-loop