用于在数据库中插入数据的表单,但不显示成功页面

时间:2012-10-23 16:13:57

标签: php forms

我的网站上有一个简单的订单。如果单击提交按钮,表单将把数据发送到我的数据库。这有效。但它没有显示success.php - 它只显示了start.php。所以一定是个错误。在我以前的主机上它起作用了。但现在我有一个新的。

这是我的php脚本(start.php):

<?php
$con = mysql_connect("localhost", "user", "pw") or die ("No connection to db possible"); 
mysql_select_db("db", $con) or die ("No connection to db possible");
mysql_query("SET NAMES 'utf8'");

if (isset($_POST['button']))
{
foreach ($_POST AS $key => $postvar)
    $_POST[$key] = stripslashes($postvar);

$_POST['name'] = mysql_real_escape_string($_POST['name']);
$_POST['strasse'] = mysql_real_escape_string($_POST['strasse']);
$_POST['plz'] = mysql_real_escape_string($_POST['plz']);
$_POST['ort'] = mysql_real_escape_string($_POST['ort']);
$_POST['mail'] = mysql_real_escape_string($_POST['mail']);
$_POST['anzahl'] = mysql_real_escape_string($_POST['anzahl']);



$sql = "INSERT INTO `bestellungen` (`name`,`strasse`,`plz`,`ort`,`mail`,`anzahl`,`datetime`)
                VALUES ('".$_POST['name']."', '".$_POST['strasse']."', '".$_POST['plz']."', '".$_POST['ort']."', '".$_POST['mail']."', '".$_POST['anzahl']."', '".date("Y-m-d H:i:s")."');";

$result = mysql_query($sql,$con);
if (!$result) echo mysql_error();
mysql_close($con);

?> 

<?php Header("Location: success.php");
exit();
?>

<?php

} else { ?>

4 个答案:

答案 0 :(得分:2)

这不起作用,因为header('Location: success.php')需要在向浏览器输出任何内容之前发生。在调用之前你似乎有差距。

$result = mysql_query($sql,$con);
if (!$result) echo mysql_error();
mysql_close($con);

// Now its time for the header!
header("Location: success.php");
exit();

答案 1 :(得分:1)

在header()重定向之前,你不能有任何输出。

检查脚本是否存在可能的错误,警告或通知,其中任何一个都会输出文本,重定向也不会发生。

答案 2 :(得分:1)

到目前为止,每当我发现这种问题时;我经常有两个原因。要么我在标题函数之前打印任何html代码,要么我没有意识到我的success.php也重定向到start.php。

也许您可以检查代码中是否存在这两个中的任何一个。

答案 3 :(得分:0)

以这种方式格式化。

$result = mysql_query($sql,$con);
if (!$result) { 

    echo mysql_error();

} else {

   Header("Location: success.php");
}

mysql_close($con);

?>