情况如下。我在网站的其他地方到处都加入,一切正常,只是这一次打嗝让我发疯。它可能很简单,我只是遗漏了一些东西。
这是一个用户可以登录并关注彼此博客的系统。
数据库 每个表都有不同数量的列,没有列使用相同的名称。
Table1 = userdetails(使用ID作为主要ID)
表2 =博客(使用BlogID作为主要ID) - 它有BlogID,WriterID blogtitle,blogtext,blogdate等作为行
表3 = blogFollowers(使用FollowingBlogID作为主要ID)这是tan; e,它保留关于谁在关注哪些博客的所有信息。 - 它有FollowBlogID,TheBlogID,ImFollowing,FollowOrNot - FollowOrNot必须为0或1 - 0等于以下1等于不跟随)
说明 用户已登录。$ LoggedInUser =登录时登录的人员的身份.SESSION
登录用户想要开始关注博客。用户单击StartFollowing博客链接。这会将信息发送到Table3中。它创建一个新行(分配一个唯一的id)并插入TheBlogId(与table1中的BlogID相同)ImFollowing(插入LoggedInUser)和FollowOrNot它插入一个0。
示例
问题:所以我无法弄明白。
登录后,用户会在页面上看到所有博客列表 - 博客页面(来自表2)。在每个博客标题旁边都有一个链接,其中显示StartFollowing(登录用户不关注此博客)或StopFollowing(登录用户IS跟随此博客)。我怎样才能实现这一目标。无论我尝试什么,我或者只是显示他们已经关注的登录用户的博客,或者我只看到正在关注的博客(表3)。
答案 0 :(得分:0)
所以这是我的看法:
首先,你说
登录用户想要开始关注博客。用户点击了 开始关注博客链接。这会将信息发送到Table3中。 它创建一个新行(分配一个唯一的id)并插入TheBlogId(是 与 table1 中的BlogID相同)ImFollowing(插入LoggedInUser)和 FollowOrNot它插入一个0。
不应该是 table2 (粗体)。
第二:table3应具有基于blogId
和userId
的复合主键。只有这样才能合乎逻辑,因为用户可以关注许多博客。
第三次,回答你的问题:
无论我尝试什么,我都要显示Logged 在他们已经关注的用户博客中,或者我只看到博客 正在遵循(表3)。
这是一般伪代码:
foreach( $allRowsOfTable2 as $row) { //each row for those blogs being displayed on page.
blogId = $row['blogId'];
blogAuthorId = $row['blogAuthorId'];
if( blogAuthorId != currentLoggedInUserID ) { //obviously why do you need to follow yourself right? :P
$sql = "SELECT * from table3 WHERE blogId=`$blogId` AND userId='$currentLoggedInUserID';";
$result = do_a_database_operation_here;
if(count($result) >0 ) { //yes he is following the blog
//display the "unfollow" link
}
else {
//display the "follow" link
}
}
}
PS:如果可以在sql中使用连接,则可以更好地执行此操作。如果您向表结构提供代码,则可以显示查询。