单击HTML按钮和php更新SQL行

时间:2013-09-03 08:32:17

标签: php html mysql

我正在为每条评论制作一个简单的评论系统。

(你喜欢这个评论?)问题有两个按钮“”和“没有”。

我试图找到一种简单的方法,点击按钮时,如果是或否,它会在数据库中更新投票数。

我通过互联网查看了几个地方,但没有什么特别的,只是我知道这不是一个大问题,可以轻松完成。

应该是什么列类型以及如何在html按钮上编写查询?

3 个答案:

答案 0 :(得分:3)

你在这里提出了一些强调含义的不同问题。我会尽力帮你搞清楚。

首先是数据库。

这里有几点需要考虑:

  • 你有用户吗?如果这样做,您将必须创建一个投票表,将您的用户与他们的投票相关联,如上一个答案所示。你不想使用COUNT来知道有多少票。这对大型数据库来说非常耗时。只需在注释表中创建一个计数器字段并递增/递减它,这样您就不必每次都计数。
  • 如果您没有用户且任何人都可以在网站上投票,您可能需要考虑使用cookie或某种临时标识符(如他们的IP地址,即使它根本不可靠)来防止机器人发送垃圾邮件。这本身就是一个非常复杂的问题,我建议你限制对注册用户的投票。
  • “投票”字段本身就是TINYINT,如建议的那样。

现在查询本身。

再次,根据您的知识,有几种可能性。

  • 最简单的方法是创建一个表单,将结果发送到同一页面并进行php检查是否在加载页面时设置了发布数据。如果是,请发送包含发布数据的查询。有很多教程解释了如何正确地做到这一点(使用数据卫生等)。
  • 但是,上述解决方案将重新加载整个页面。这很麻烦而且没用。为了创造更流畅的用户体验,您应该在AJAX中执行此操作。如果你是新手,但想尝试一下,你应该看看jquery,这是一个很好的JavaScript库。

答案 1 :(得分:2)

我建议您创建两个表:

Comments

  • CommentId
  • CommentText
  • ......其他栏目

Votes

  • VoteId
  • CommentId(对此投票发表评论),
  • UserId(对评论的评价如何),
  • Liked(标志0(否)或1(是))。

单击HTML按钮时,在投票表中插入一个新行。

然后要获得多个投票,您可以加入这两个表并使用GROUP BY计算第二个表中的数字:

SELECT 
  c.CommentId,
  COUNT(COALESCE(v.VoteId, 0)) AS TotalVotes
FROM Comments AS c
LEFT JOIN votes AS v ON c.commentId = v.CommentId
GROUP BY c.CommentId;

如果需要,您还可以单独查询likes = 0或likes = 1,这只是一个示例。

答案 2 :(得分:0)

数据类型可以是您喜欢的任何内容。 CHAR,VARCHAR,TINYINT或BOOL都是popuar的选择。就个人而言,我会选择TINYINT。

正如你所说,这是一项简单的任务。我确信在那里有关于为按钮分配动作的讨论。