为了编辑我想要的条目:
<form id="pregunta" name="pregunta" class="form_pregunta" method="post" action="pregunta.php?id=26">
<h2>Titulo de la pregunta</h2><input name="q" id="q" class="q" value="este es mi títiulo " type="text">
<h2>Describe tu pregunta</h2>
<textarea name="texto" id="texto" style="width: 98%;"><p>esta es mi descripcion</p></textarea>
<h2>Etiquetas</h2>
<input name="tags" id="tags" onmouseover="mostrar_tooltip('nube_e','','0','70','')" onmouseout="ocultar_tooltip('nube_e')" value="dos,tres,una,">
<input name="responde_a" style="display: none;" id="responde_a" value="0">
<button name="pregunta" id="pregunta" type="submit">form_edit_question_button</button>
</form>
然后在file.php中
我想$_get['id']
和$_post['inputs']
但是当我走的时候:
if(isset($_POST['edit_pregunta'])){
echo 'lalalalalalalalalalalalalalala';
post_edit_pregunta();
}
它永远不会进入:S。这是正常的还是我错过了一些东西...我想不要有一个隐藏的输入与我要编辑的帖子的ID ..
答案 0 :(得分:4)
我不是百分百确定,但表单在提交时不会发送name
,更不用说id
了。
您可以执行以下操作:
<form id="edit_pregunta" method="post" action="file.php?id='$this->id'">
<input type="hidden" name="edit_pregunta" value="anything">
... //inputs here
</form>
,您的if
现在应该输入。
答案 1 :(得分:2)
看起来您正在检查表单的“id”属性。提交表单时不会发送此选项,只会发送<input>
,<select>
,<textarea>
和<button>
中的值。
你应该检查其中一个。
编辑:您的按钮名称是“pregunta”,因此这是您应该检查的POST变量,例如
if(isset($_POST['pregunta'])){
一般来说,只要表格的“动作”和输入中的混合参数,你可以混合它们,只要表格方法是“发布”。你不能在表单的动作中设置GET参数并使用“get”方法
<!-- Good -->
<form action="proc.php?id=123" method="post">
<input name="foo" value="foo">
<input type="submit">
</form>
<!-- Bad -->
<form action="proc.php?id=123" method="get">
<input name="foo" value="foo">
<input type="submit">
</form>
答案 2 :(得分:1)
在同一个请求中获取和发布变量应该没有问题,但是你确定你的语法是正确的吗?如果这是正常的PHP,你不应该写
<form id="edit_pregunta" method="post" action="file.php?id=<?php echo $this->id; ?>">
... //inputs here
</form>
问题是(如果我是正确的,这是标准的PHP),你生成一个看起来像这样的表单:
<form id="edit_pregunta" method="post" action="file.php?id='$this->id'">
... //inputs here
</form>
这会使id看起来像这样:'$this->id'
(包括'-signs)。当你想要的是这样的:
<form id="edit_pregunta" method="post" action="file.php?id=51">
... //inputs here
</form>
然后$_GET['id']
将为51
。
另外,我认为你需要改变
if(isset($_POST['edit_pregunta'])){
与
if(isset($_POST['pregunta'])){
如果我没有弄错,表单的名称不会被发送到服务器,但是,提交按钮的名称确实如此,但我可能错了。
答案 3 :(得分:0)
是的,你可以,我已经好几次了。 您的代码可能还有其他问题。
是否有任何名称=“edit_pregunta”的控件或者它只是表单的ID? ID不会发送到服务器。
答案 4 :(得分:0)
只需将id
添加到表单中,就无法创建您验证的$_POST['edit_pregunta']
。
相反,在表单标记内添加<input name="foo" />
;在php脚本中验证$_POST['foo']
答案 5 :(得分:0)
虽然HTTP规范不允许POST方法中的查询参数,但这有点不寻常。你最好在表单中使用隐藏的输入字段将任何非用户值传递给脚本。
也就是说,表单的语法错误。您需要使用“echo”将$ this-&gt; id的值插入到操作中。
答案 6 :(得分:0)
使用input type =“submit”代替按钮标记。 您需要表单提交的名称并激活PHP脚本!
HTML代码:
<form action="change.php" method="POST">
<input type="password" name="p1" class="change_text" placeholder="New Password"/></br>
<input type="password" name="p2" class="change_text" placeholder="Re-Password"/></br>
<input type="submit" name="change" value="Change Password" id="change" />
</form>
PHP代码:
<?php
if (isset($_POST['change']) {
$p1=$_POST['p1'];
}
?>