2013-05-21 27 views
0

嗨我試圖重定向到下一頁後,數據被sumbmitted到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。我需要進行的更改應該在表單內還是通過表頭:我嘗試使用的位置。謝謝 注意:我縮短了在這裏的預覽內查看它的URL,所以我意識到order.php必須是完整路徑。糾正我,如果我錯了,但讓你們都知道我知道,這不是問題。

+0

你永遠不會發送消息。然後你重定向到訂單。您是否期望維護第一頁上設置的變量?你看過$ _SESSION來存儲臨時值嗎? –

+0

嗨凱我還沒開始那部分。我現在唯一關心的是在mysql提交姓名和電子郵件後進入order.php頁面。除此之外,我可以做任何消息等。 –

回答

0

有兩種方法,我建議你試試。 第一個(個人首選)是使用ajax和jquery提交表單,然後顯示謝謝消息,而不刷新頁面。之後使用settimeout函數將重定向延遲x秒,然後重定向到訂單頁面。

第二次審批:數據在數據庫中保存成功消息之後。然後在訂單頁面的標題中,使用基於會話的if語句。如果成功或者真實,那麼在訂單頁面上顯示消息感謝消息。

如果您想查看所提供解決方案的示例,請告訴我。

謝謝

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']; 

還應考慮PDO作爲選擇,如果你正在使用PHP> 5.1

同樣,電子郵件,姓名等,它不會傷害增加一些會話處理,你可以學到 這裏

乾杯!

+0

我現在總是感到困惑....我仍然有同樣的問題,一旦我提交了表單,就進入order.php。你將郵件轉移到下一頁是否正確?會議。讓我們消除任何信息,以便我可以重新獲得支持。我只想將數據存儲到order.php中。我認爲那是我的主要問題。我想我可能能夠解決sesssion,但得到那個order.php是問題。 –

+0

@HireLogo:頁面是不是重定向或者是否引發某種錯誤? 另請嘗試刪除代碼中的**或die()**部分,並對輸出進行回顯以查看查詢是否正在執行某個錯誤。有時插入會發生,但仍然會有錯誤。 **編輯**此外,你可以嘗試使用PDO,它有自己的錯誤處理機制。這加上你可以相信它大部分是sql注入安全。 – Hanut