【发布时间】:2015-02-27 23:57:11
【问题描述】:
好的,我一直在搜索并找到很多关于这个主题的信息, 但没有什么令人满意的。
我想跟踪谁喜欢什么,而不仅仅是在表格中添加 +1。
我有三个表:posts、cmets 和 likes。
桌子的设计暂时是这样的
CREATE TABLE IF NOT EXISTS `likes` (
`like_id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
`post_id_fk` INT(11),
`comment_id_fk` INT(11),
`uid_fk` int(11) NOT NULL,
`date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`ip` varchar(39) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0.0.0.0',
FOREIGN KEY (uid_fk) REFERENCES users(uid),
FOREIGN KEY (post_id_fk) REFERENCES post(post_id),
FOREIGN KEY (comment_id_fk) REFERENCES comments(comments_id),
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1;
如您所见,我有三个不同的外键,uid_fk 用于用户 uid,因此我可以知道谁喜欢什么。现在问题来了,一个用于 post_id 的外键和一个用于 cmets_id 的外键。
如果外键不存在,Mysql 不会接受它。如果我想“点赞”一条评论,就不会因为 post_id_fk 的外键。
如何解决这个数据库混乱?
还有喜欢/不喜欢 AJAX 的问题:
我在搜索时发现了这个jQuery : Changing class of button with AJAX call,它看起来很简单而且非常漂亮。我也遵循了这个http://pluscss.com/tutorials/ajax-like-script-using-php-mysql-jquery 教程。但我在将它们结合起来时遇到了问题。
这就是我想要做的:
- 统计当前点赞数
- 检查用户之前是否喜欢过它
- 让用户可以选择喜欢(如果以前喜欢,则可以不喜欢)
使用 ajax 和 like.php
谁能帮我解决这个问题,我将非常感激!
【问题讨论】:
-
你应该把它分成两个问题
-
为什么不能让外键为空?如果您喜欢帖子,则评论将为空。反之亦然。