表头:位置顺序

时间:2013-05-21 01:17:40

标签: php mysql forms

您好,我正在尝试将数据传输到mysql后重定向到下一页。我到目前为止

<?php
$name = "";
$email = "";
$msg_to_user = "";
if ($_POST['name'] != "") {
    include_once "newsletter/connect_to_mysql.php";

    // Be sure to filter this data to deter SQL injection, filter before querying database
    $name = $_POST['name'];
    $email = $_POST['email'];

    $sql = mysql_query("SELECT * FROM newsletter WHERE email='$email'");
    $numRows = mysql_num_rows($sql);

    if (!$email) {
      $msg_to_user = '<br /><br /><span style="font color="FF0000">Please type an email address ' . $name . '.</span>';

    } else if ($numRows > 0) {
      $msg_to_user = '<br /><br /><font color="FF0000">' . $email . ' is already in the system.</font>';

    } else {    
      $sql_insert = mysql_query("INSERT INTO newsletter (name, email, dateTime) 
        VALUES('$name','$email',now() )")  or die (mysql_error());
      $msg_to_user = '<br /><br /><div style="color=#F47926;">Thanks ' . $name . ', Now lets select what you need.</div>';
      $name = "";
      $email = "";
    }
    header("Location: order.php");
}
?>

这会将数据发送到我的数据库,一切都运行良好,但我想将它发送到order.php的另一个页面,已经创建了以继续。我现在得到的表格就在这里

<form style="border:0;padding-left:10px;" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  <fieldset style="text-align:left;" id="free"> 
  <span style="text-align:left;font-size:30px;color:#F47926;">
    Ready to get started?
  </span>
  <div class="centerForm">
    Name:<br />
    <input name="name" type="text" maxlength="36" size="35" value="" /><br /> 
    Email:<br />
    <input name="email" type="text" maxlength="36" size="35" value="" /><br />
    <br /><br /><div style="width:179px;margin-left:auto;margin-right:auto;"><input type="image" src="continue-to-selection.png" name="mySubmitBtn" alt="continue to selection" /></div>                        
  </fieldset> 
</form>

电子邮件功能之前有效,但在我开始更改时它停止了工作。我相信这很简单,我相信我能解决它。我的问题是我在向mysql提交数据后尝试重定向,用户转到页面order.php。我需要做的更改应该在表单内还是通过标题:我正在尝试使用的位置。谢谢 注意:我缩短了网址,以便在帖子预览中查看它,所以我知道order.php必须是完整路径。如果我错了,请纠正我,但只是让大家知道我知道,这不是问题。

2 个答案:

答案 0 :(得分:0)

我建议您尝试2个方法。 第一个(个人首选)是使用ajax和jquery提交表单,然后显示感谢信息而不刷新页面。之后使用settimeout函数延迟重定向x秒,然后重定向到订单页面。

第二个approche:数据在会话中保存在数据库存储中的成功消息之后。然后在订单页面的标题中,使用基于会话的if语句。如果成功或为真,则在订单页面中显示消息谢谢消息。

如果您想查看所提供解决方案的示例,请与我们联系。

感谢

答案 1 :(得分:0)

这是一个很好的规则 - 避免从php回显HTML。关闭脚本标记编写HTML并继续PHP

同样@vidit是对的。 试试这个

else {    
      $sql_insert = mysql_query("INSERT INTO newsletter (name, email, dateTime) 
        VALUES('$name','$email',now() )")  or die (mysql_error());
      $msg_to_user = '<br /><br /><div style="color=#F47926;">Thanks ' . $name . ', Now   
      lets select what you need.</div>';
      //$name = "";
      //$email = "";
      session_start();
      $_SESSION['name'] = $name;
      $_SESSION['email']=$email;
    }

在下一个文件中,您可以使用

获取电子邮件和名称
session_start();
$email = $_SESSION['email'];
$name= $_SESSION['name'];

如果您使用PHP&gt; 5.1

,还可以选择PDO作为替代方案

此外,添加一些您可以学习的会话处理也不会有什么坏处 这里

干杯!