目前我用php创建了一个博客系统。管理员可以创建x帖子,每个帖子下面都应该是评论功能。我怎么能意识到这样的事情呢?我不知道数据库的结构,因为它必须是很多表(对于每个帖子(?))。也许你们中的某个人有很好的联系。我已经搜索过,但没有找到我的问题。
答案 0 :(得分:0)
您不需要很多桌子。你可以有这样的帖子表:
id INT(10)
title TEXT
content TEXT
评论的表格,如下:
id INT(10)
postId INT(10) // this links to the column post.id
content TEXT
当然,如有必要,您可以向两个表添加更多列,例如添加时间戳等。
现在,当你有一个id为7的帖子时,你要确保该帖子的所有评论都获得postId 7.这样,当你在网站上显示帖子7时,你可以搜索评论中的所有行tableId = 7,并准确显示链接到该帖子的那些评论。
我简化了这个例子。要优化表,您可以添加索引,主键等。
答案 1 :(得分:0)
@Skeptar,你可以通过多种方式实现这一目标。让我向你推荐一个。
Users table: (very obvious)
Columns: user_id (INTEGER(n) PRIMARY KEY), username (VARCHAR(n)), password (VARCHAR(32) for md5), level (INTEGER Example: 1 for admin, 3 for regular user)
Posts:
Columns: post_id (INTEGER(n) PRIMARY KEY), post_title (VARCHAR(n)), post (TEXT), user_id (INTEGER(n))
Comments:
Columns: comment_id (INTEGER(n)), comment(TEXT), post_id,(INTEGER FOREIGN KEY REFERENCES post(post_ID)) user_id(INTEGER(n) FOREIGN KEY REFERENCES users(user_id))
现在,我相信您可以让两个级别(管理员和常规用户)注册到您的系统中。
插入时,您会获取帖子标题和实际帖子,并借助SESSIONS
之类的用户识别机制,获取user_id并将其插入到帖子表中。
然后,对于每个注释,在插入时,您将获取用户正在评论的帖子的post_id,并将其与注释和user_id一起插入到注释表中。
如果您想要抓取所有帖子,这相当容易。
当您想要获取特定帖子的所有评论时,您可以将该帖子的post_id带到评论表中:
SELECT * FROM comments C, posts P WHERE C.post_id = C.post_id;
由于您针对每个帖子和评论插入了user_id,同样,您可以为每个评论获取相应的用户信息:
SELECT U.username FROM comments C, users U Where C.user_id = U.user_id
请记住,这只是为了给您和想法,而不是作为一个完整的工作解决方案。我写下了这个,可能会有一些错误。 此外,我在括号n(INTEGER(n))中指示的位置,表示您需要将n替换为所需的列大小。希望它有所帮助。