在php中,为什么输入表单时提交需要2次按下

时间:2014-11-23 08:02:03

标签: php forms submit

    <?php
        if ($_POST['submit']) {
            mysql_connect ("localhost", "root", "swt") or die ('Error: ' . mysql_error());
            mysql_select_db("db") or die ('Data error:' . mysql_error());
            $text = mysql_real_escape_string($_POST['comments']); 
            $query="INSERT INTO greetings (msg) VALUES ('$text')";
            mysql_query($query) or die ('Error updating database' . mysql_error());
            $id= mysql_insert_id();
            $url = "preview.php?id=".$id;
        }
    ?>
<form method="post" action="<? echo $url ?>" enctype="multipart/form-data" >
    <textarea name="comments" placeholder="please input your message"></textarea>
    <input name="submit" type="submit" value="submit" />
</form>

你好,抱歉我是PHP的新手。 我想问一下,为什么我提交时必须按2次才能进入preview.php

感谢。

4 个答案:

答案 0 :(得分:0)

首先将<?更改为<?php,例如..

<form method="post" action="<?php echo $url ?>" enctype="multipart/form-data" >
<textarea name="comments" placeholder="please input your message"></textarea>
<input name="submit" type="submit" value="submit" />

我喜欢那样..

第二次打开firebug,点击按钮,看看你得到的错误是什么。有可能你在页面中有一些错误,或检查你的请求是否正在启动在第一次点击。 在第一次点击时,还要检查$url是否为空。

答案 1 :(得分:0)

第一次$url为空,因此浏览器请求相同的页面,然后更改$ url,然后注入表单,以便下一篇文章重定向到您的preview.php文件。
刚刚发送了重定向标题。

header("Location: /preview.php?id=".$id);

所以它将是:

  <?php
        if ($_POST['submit']) {
            mysql_connect ("localhost", "root", "swt") or die ('Error: ' . mysql_error());
            mysql_select_db("db") or die ('Data error:' . mysql_error());
            $text = mysql_real_escape_string($_POST['comments']); 
            $query="INSERT INTO greetings (msg) VALUES ('$text')";
            mysql_query($query) or die ('Error updating database' . mysql_error());
            $id= mysql_insert_id();
            $url = "preview.php?id=".$id;
            header("Location: $url");
        }
    ?>
<form method="post" enctype="multipart/form-data" >
    <textarea name="comments" placeholder="please input your message"></textarea>
    <input name="submit" type="submit" value="submit" />
</form>

当您想要将请求发送到同一页面时,请勿使用操作 (我假设你的代码片段中的php部分是同一个文件)

同样要发送重定向,您需要在发送标题之前没有html输出

答案 2 :(得分:0)

更改<?= $url?> to <?php echo $ url;?>.

您的服务器没有启用short_open_tags。

答案 3 :(得分:0)

您的表单操作值($ url)是在提交第一个帖子后生成的,这意味着在首次提交点击时它是空的。 更好的解决方案是将操作值保持为空,并且在后逻辑中,只需构建$ url值,您可以将用户转发到$ url:

...
  $id= mysql_insert_id();
  $url = "preview.php?id=".$id;
  header('Location: '.$url);
}