Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php A';谁用过它';问题_Php_Mysql - Fatal编程技术网

Php A';谁用过它';问题

Php A';谁用过它';问题,php,mysql,Php,Mysql,好的。。。因此,我遇到了以下问题:我有一个工作正常的表-它保存用户ID、帖子ID、帖子内容、帖子发表时间 我用它来打印以下内容:文章的内容,谁是文章的作者,以及文章是什么时候写的。到目前为止一切正常 现在。。。我有一个按钮,允许用户投票给一个给定的职位-一切都很好,以及在这里工作。不过,现在我想再做一个功能,显示投票人和投票时间。你知道,这样每个帖子下面都会有一个喜欢帖子的人的列表,以及他们按下按钮的时间 我的想法是有两个表-一个保存帖子的info post_表,另一个包含用户id的投票表,按钮

好的。。。因此,我遇到了以下问题:我有一个工作正常的表-它保存用户ID、帖子ID、帖子内容、帖子发表时间

我用它来打印以下内容:文章的内容,谁是文章的作者,以及文章是什么时候写的。到目前为止一切正常

现在。。。我有一个按钮,允许用户投票给一个给定的职位-一切都很好,以及在这里工作。不过,现在我想再做一个功能,显示投票人和投票时间。你知道,这样每个帖子下面都会有一个喜欢帖子的人的列表,以及他们按下按钮的时间

我的想法是有两个表-一个保存帖子的info post_表,另一个包含用户id的投票表,按钮按下的时间和投票的post_id。。。但我不知道该怎么做。 所以我的问题是:


如何在表中插入来自另一个表的信息以及单击按钮后的其他信息?

如果您的数据库支持事务,则可以。在mysql中查找关键字begincommit和ABORT。但是,如果您这样做,您将在两个地方存储数据

或者,您可以将投票总数存储在“投票”表中,并且可以更改第一个查询以加入“投票”表以统计投票

select P.post_id, sum(V.votes) # add other post_table fields
from post_table as P, voted_table as V
where P.post_id=V.post_id
group by P.post_id #add other post_table fields you need here also
因此,使用上面的模式,我们可以执行以下操作

viewPost
页面的html/php中

<form name="vote_form" action="postVote.php" method="POST">
  <input type="hidden" name="post_id" value="1" />
  <input type="submit" value="Vote for this Post" />
</form>

这样mysql将为您处理时间戳。请注意,在将输入数据插入数据库和所有有趣的安全功能之前,您需要验证/验证输入数据(我在这里没有真正验证)。我还建议使用Mysqli或PDO-Mysql,而不是旧的Mysql库,并使用准备好的语句(它将自己处理大部分的值查询/转义功能)

在用户单击按钮时运行插入查询。您需要一对移动部件。首先,您需要添加一个带有按钮的表单。您需要使用“隐藏”字段(post_id和user_id,除非您可以从其他地方获得),向表单添加足够的信息。您必须将表单上的操作设置为另一个PHP页面。在第二个PHP页面上,获得指定的表单变量,并使用它生成insert查询。(有一些安全问题你应该考虑,比如信任UsRyID的值和检查用户输入,但是我不会这么做。)如果你在表单上使用了方法=“POST”,那么你就得到了$$POST[$ FieldField]的值。.

noob和新手的区别是什么:-)noob=问/做蠢事的人,新手=在某个方面对你很陌生的人,但如果只是关于mysql的部分,我就知道了。我的问题是如何在按钮的“点击到投票表”中插入投票用户id、投票时间和投票结果,以便稍后我可以打印出投票人和投票时间。这样,当我点击按钮时,它会自动将所需信息插入投票表,对吗?如何将此信息链接到post表中的post id?因为。。。每个投票都应该链接到post表中的给定帖子…定义“链接”-您是在db中讨论关系,还是在查询中拉出它,还是在
a
标记中讨论关系?所有这些信息(post\u id、user\u id、created\u at)都直接在我的投票表版本上,而不是在post表上。因此,我给你的代码按照你的要求执行-你只是将这些信息插入投票表而不是帖子-你根本不需要为你的投票机制触摸帖子表。你的
post\u id
应该自动生成(因此在create table查询中自动递增)-无论何时创建post,它都会自动为所有表上的主键获取一个
post\u id
。然后,此帖子id在
投票
表中作为
帖子id
引用。这意味着,一个职位必须存在,然后才能对其进行投票。。。但这不应该是一个问题……事实上,他们按照我的配置,用户只能为每个帖子投票一次——这个限制是由语句
UNIQUE KEY(`user\u id`,`post\u id`)定义的,这使得投票表上的每个用户/帖子组合只能发生一次。如果你想让人们投票不止一次,那么只需删除
唯一的
,或者像
键(`post\u id`)、键(`user\u id`)
<form name="vote_form" action="postVote.php" method="POST">
  <input type="hidden" name="post_id" value="1" />
  <input type="submit" value="Vote for this Post" />
</form>
if(isset($_SESSION['user']['user_id']))
{
   $userid = $_SESSION['user']['user_id'];
}
else
{
  // redirect to a login or something
}

$sql = "INSERT INTO vote (user_id, post_id) VALUES (%s,%s)"
$sql = sprintf($sql, $userid, $_POST['post_id']);
mysql_query($sql);