为离开系统的注释建立“帖子ID”值

问题描述:

我试图给注释添加一个数字“帖子ID”值,以便它们可以从数据库中检索并显示在适当的位置。我如何在我的html表单中建立这个数值作为发送到将其插入数据库的脚本的东西?我假设我需要使用GET或POST,但我不知道如何使用这些发送除用户输入的文本以外的任何内容。为离开系统的注释建立“帖子ID”值

这是我用来发送“名称”和“评论”的输入形式:

<div class="comments"> 
<form action="foxpost.php" method="post"> 

<label for="name">Name</label><br> 
<input id="name" name="name" type="text" /><br> 
<label for="message">Comment</label><br> 
<textarea class="message" id="message" name="message"></textarea><br><br> 

<input type="Submit" value="Post Comment" /> 
</form> 
</div> 

把ID在一个隐藏字段在您的形式:

<input type="hidden" name="post_id" value="id_goes_here" /> 
+0

@Jimmy:请记住,虽然该字段已隐藏,但用户*可以使用[Firebug](http://getfirebug.com/)等工具更改隐藏字段的值。 – 2010-08-06 21:44:43

+0

这是不安全的。如果你想从php生成id,你应该在发送sql之前完成它,当你解析$ _POST的注释并且创建一个值而不暴露给浏览器时。 – 2010-08-06 21:45:03

+1

OP希望将用户正在评论的帖子的ID传递回服务器,以便可以通过对帖子的引用来存储评论。 – mwittrock 2010-08-06 21:47:19

如果您使用mysql你不需要创建它,当你插入一个新的帖子时,mysql可以自动创建它。

例如,我们可以创建一个表

 
CREATE TABLE `student` ( 
`student_id` INT(3) NOT NULL AUTO_INCREMENT, 
`name` VARCHAR(25) NOT NULL , 
`email` VARCHAR(50) NOT NULL , 
UNIQUE (`student_id`) 
);

然后用下面的查询

INSERT INTO `student` (`name` , `email`) VALUES ('john', 'email');

正如你所看到的ID没有在指定的查询,但该领域具有AUTO_INCREMENT属性。当你插入一个没有ID的学生时,它会得到最高的ID并添加一个。所以,如果你有空表并运行上述插入查询,你会得到MySQL手册http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html

附注:3行ID为1,2和3



更多如果您使用的是其他数据库,请指定其中一个。

---编辑1 --- 可能误解了问题非常糟糕(这是过去的午夜,但是这不是借口)
您有几种选择,如果你想通过 1. hiddent场,那在这里提到 2. $ _GET [“帖子ID”]从类似comment.php?=帖子ID 13,如果你从另一个页面 3.双方

添加评论,但添加评论之前不要忘记,该帖子存在。

...我可以建议使用akismet库来减少垃圾邮件吗? http://www.achingbrain.net/stuff/php/akismet

当你在wordpress.com

+0

如果您使用MySQL,它将是mysql_insert_id()函数,正如在上面的@vlad所述的INSERT语句后调用的那样... http://us.php.net/manual/en/function.mysql -insert-id.php – Don 2010-08-06 21:48:45

+0

谢谢你,忘了提到这一点。 – 2010-08-06 22:12:04

我会建议没有ID为形式的一部分,只需使用你的数据库AUTO_INCREMENT功能寄存器你可以得到一个免费的关键。

既然你用PHP标记了这个问题,我猜这就是你用于你的后端的语言。我在做另一个假设是,你实际上格式与您的帖子ID查询字符串的要求,像“http://example.com/posts.php?postID=1212”,在查询字符串注意到帖子ID,你只是传递上,像这样:

<div class="comments"> 
<form action="foxpost.php?postID=<%= $_GET['postID'] %>" method="post"> 

<label for="name">Name</label><br> 
<input id="name" name="name" type="text" /><br> 
<label for="message">Comment</label><br> 
<textarea class="message" id="message" name="message"></textarea><br><br> 

<input type="Submit" value="Post Comment" /> 
</form> 
</div> 

使用

<%= $_GET['postID'] %> 

只会将查询字符串中的postID直接回显到HTML中,或者您可以将其分配给一个变量。