【问题标题】:Creating a Like function php mysql ajax创建一个 Like 函数 php mysql ajax
【发布时间】: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 教程。但我在将它们结合起来时遇到了问题。

这就是我想要做的:

  1. 统计当前点赞数
  2. 检查用户之前是否喜欢过它
  3. 让用户可以选择喜欢(如果以前喜欢,则可以不喜欢)

使用 ajax 和 like.php

谁能帮我解决这个问题,我将非常感激!

【问题讨论】:

  • 你应该把它分成两个问题
  • 为什么不能让外键为空?如果您喜欢帖子,则评论将为空。反之亦然。

标签: php jquery mysql ajax


【解决方案1】:

最好把表格分开。 创建 post_likes 表和 cmets_likes 表。 这样一来,您不仅可以摆脱现有问题,而且结构更加解耦和可重用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-30
    • 2016-08-08
    • 2011-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多