好吧,我一直在搜索并找到很多关于这个主题的信息,但没有什么令人满意的。
我想记录谁喜欢什么,而不仅仅是在表格上加一个+1。
我有三张表:帖子、评论和点赞。
目前的桌子设计是这样的
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,一个用于comments_id。
如果外键不存在,Mysql就不会接受它。如果我想"点赞"一条评论,它不会被允许,因为postidfk的外键。
如何解决这个数据库混乱?
还有类似AJAX的/delike问题:
我在搜索时发现了这个jQuery:用AJAX调用更改按钮类,它看起来很简单,也很好。我也遵循这个http://pluscss.com/tutorials/ajax-like-script-using-php-mysql-jquery辅导的但我遇到了问题,把它们结合在一起。
这就是我要做的:
- 计算当前点赞数
- 检查用户以前是否喜欢它
- 给用户一个喜欢的选项(或者如果以前喜欢,可以选择delike)
使用ajax和like.php
有人能帮我做这件事吗?我会非常感激的!
最好将表分开。创建一个post_likes表和comments_likes表。这样,您不仅可以摆脱现有的问题,而且结构更解耦,更可重用。