添加在数据库中发布主题的用户

时间:2012-10-11 08:11:34

标签: php database fetch

我的数据库中有一个表TOPICS,它没有说明哪个用户打开了它。但是,在我的MESSAGES表中,有一个USER列,显示哪个用户打开了它。我的问题是:如何为我的TOPICS表提供一个用户列并获取此信息?

现在,我在每个配置文件中都有用户的最后一条消息,但如上所述,我无法显示主题和主题名称的链接,因为{中没有此类列{1}}。我怎样才能做到这一点?

我用它来获取用户的最后一条消息:

TOPICS

现在我需要为这个主题做同样的事情。

2 个答案:

答案 0 :(得分:0)

我不知道我是否了解你的需求,但如果我错了就纠正我......

你可以......

1 - 在用户表'LastTopicId'中添加列

2-使用外键将新表'UserOpenTopic'设为User和Topic,使用日期...这样你就可以进行查询

$lastpost = query("SELECT topic.TopicName FROM UserOpenTopic INNER JOIN topic ON topic.ID = UserOpenTopic.TopicID where UserOpenTopic.userID='$who' Order by date desc");

你应该为主题上的每个用户提供最后一个主题(和整个历史记录)...

答案 1 :(得分:0)

我了解消息始终与主题相关,因此您应该从消息主题添加n:1关系。根据表模式中的字段类型和命名约定,它应该是这样的:

ALTER TABLE `messages` ADD `topicId` INT NOT NULL;

在这种情况下,关系实际上是作为外键构建到Id当然必须存在于表主题中。存储消息时,您还必须注意还要存储此相关的topicID(或表主题的相应主键)。在提取消息时,您必须加入它:

SELECT message,user FROM messages,topics WHERE messages.topicId = topics.Id AND messages.user='$who' ORDER BY messages.date DESC

请查看mysql文档(CREATE,ALTER和SELECT语法)以获取更详细的示例。使用ORM时,请查看构建和处理 hasMany 关系的示例。