2014-02-19 35 views
0

我正在構建一個確認頁面和一個簡單的購物車腳本。但我無法通過郵件發送這些值,使用我已放在頁面末尾的「發送」按鈕。

如果我沒有將郵件程序部分包含在按鈕的「if」條件中,它將工作並在頁面加載時發送這些東西。但是,當我在「如果」條件下包裝它時,我只收到一封空白的電子郵件。


UPDATE: 前一頁裏面,至極有「訂購」的形式,我從法切換=「發帖」方法=「獲取」。

而在第二頁,

我已經改變了方法,在循環中從$ _ POST到$ _GET。至於按鈕保持$ _POST方法與表單內的方法=「後」(在底部)。現在它可以工作,但我不明白爲什麼。

與表格第一頁:

<!DOCTYPE html> 
<head> 
<title>Alm Chalet Menu</title> 
<link href="css/template.css" type="text/css" rel="stylesheet" /> 

</head> 
<body> 

<h2>Alm Chalet Menu</h2> 

<p>Biologische Säfte </p> 
<form method="get" action="order.php"> 
<p><input type="number" name="orange" min="0" value="0" class="count_style"> 
Orange</p> 
<p><input type="number" name="multivitamine" min="0" value="0" class="count_style">Multivitamine</p> 
<input type="submit" name="send" value="Send Menu" /> 
</form> 




</body> 
</html> 

其次,確認頁面:

<!DOCTYPE html> 
<head> 
<link href="css/template.css" type="text/css" rel="stylesheet" /> 
<title>Ordered Food</title> 
</head> 
<body> 

Your order the following: 

<table id="order_table"> 
<tbody> 

<?php 
$items = ''; 

foreach($_POST as $key => $value){ 
    if ($value == 0) { 
     continue; 
} 
    echo "<tr><td>$key</td><td class='value'>$value</td></tr>"; 
    $items .= "$key: $value\n"; 
} 

if (isset($_GET['send'])) { 
$message = $items; 
mail("****@yahoo.com", $subject, $message, $headers); 
echo "<p>Thanks for your order!</p>"; 
} 
?> 

</tbody> 
</table> 

<p> 
<form method="get"> 
<input name="send" type="submit" value="Send Order"> 
</form> 
</p> 

</body> 
</html> 
+2

PHP是一種鬆散類型的語言,所以'if($ value == 0){'可以滿足很多'$ value's'。嚴格(類型安全)比較使用'==='。 [見文檔](http://php.net/language.operators.comparison/)瞭解'=='和'==='之間的區別。 –

+0

嗨@shamil,即使我刪除了「if($ value == 0)」語句。沒有什麼變化...... :( –

+0

你的意思是@AmalMurali – bear

回答

1

我假設你是從其他頁面發送POST數據到這個網頁?如果是這樣,當你發佈到這個頁面,然後提交另一個表格使用get方法,$_POST變量將不再有任何內容,因爲你提交了另一個表格(通過get)。您需要某種方式保存發佈的數據(可能是php會話),以便當您單擊Send Order提交按鈕時,以前發佈的數據不會丟失。

+0

謝謝你的建議@ elitechief21,如果沒有其他簡單的解決方案,我會嘗試使用「PHP會話」。 –