2013-01-17 60 views
0

我有一些「訂單」頁面設置,允許用戶選擇要購買的商品。當他們點擊「訂單」時,他們會進入一個頁面,允許他們爲每個項目選擇動態填充下拉列表的詳細信息。這些下拉菜單處於循環狀態,因此每個項目都有自己的設置。將動態數據從JavaScript傳遞到PHP

這是我的問題開始的地方。如果訂單頁面上只有一個項目,它完美地工作。所有從下拉列表中選擇的信息都被拉到我的PHP腳本中,並將其格式化爲一封電子郵件並將訂單發送給我。如果訂單中有多個項目,它只會發送頁面上的最後一個項目。

下面是下拉列表中選擇代碼...

<form name="mediumselect"> 
<table> 
<tr> 
    <td> 
     <select name="sel" onchange="selFormat(this);" style="width:200px"> 
     <option value="">-Please select delivery format-</option> 
     <option value="File">File</option> 
     <option value="Tape">Tape</option> 
     <option value="Disc">Disc</option> 
     </select> 
    </td> 
    <td> 
     <select name="formats" onchange="selRate(this)" style="width:150px"> 
     </select> 
    </td> 
    <td> 
     <select name="framerate" onchange="selColor(this)" style="width:150px"> 
     </select> 
    </td> 
    <td> 
     <select name="color" style="width:150px"> 
     </select> 
    </td> 
</table> 
</form> 

這裏是PHP ...

<?php 

$asset = $_REQUEST['assetname']; 
$medium = $_REQUEST['sel']; 
$type = $_REQUEST['formats'] ; 
$framerate = $_REQUEST['framerate'] ; 
$color = $_REQUEST['color'] ; 
$body = <<<EOD 

Asset Name: $asset 
Asset format: $medium 
Format Type: $type 
Frame Rate/Resolution: $framerate 
Codec or Color Subsample: $color 
EOD; 

$results = <<<EOD 
<html> 
<head> 
<title>sent message</title> 
<style type="text/css"> 
</style> 
</head> 
<div align="center">One your order is submitted, a confirmation email will be sent to above email with order details.</div> 
</div> 
</body> 
</html> 
EOD; 
function spamcheck($field) 
{ 
    //filter_var() sanitizes the e-mail 
    //address using FILTER_SANITIZE_EMAIL 
    $field=filter_var($field, FILTER_SANITIZE_EMAIL); 

    //filter_var() validates the e-mail 
    //address using FILTER_VALIDATE_EMAIL 
    if(filter_var($field, FILTER_VALIDATE_EMAIL)) 
    { 
     return TRUE; 
    } 
    else 
    { 
     return FALSE; 
    } 
} 

if (isset($_REQUEST['email'])) 
{ 
    //if "email" is filled out, proceed 
    //check if the email address is invalid 
    $mailcheck = spamcheck($_REQUEST['email']); 
    if ($mailcheck==FALSE) 
    { 
     echo "Invalid input"; 
    } else { 
     //send email 
     global $body; 
     global $results; 
     $email = $_REQUEST['email'] ; 
     mail("[email protected]", "Subject: INCOMING ORDER", $body, "From: $email"); 
     echo "$results"; 
    } 
} else {//if "email" is not filled out, display the form 
    echo "<form method='post' action='mailform.php'> 
    Email: <input name='email' type='text'><br> 
    Subject: <input name='subject' type='text'><br> 
    Message:<br> 
    <textarea name='message' rows='15' cols='40'> 
    </textarea><br> 
    <input type='submit'> 
    </form>"; 
} 
?> 

我還是新的PHP,如果有一個更好的方式去關於這樣做,我會很感激這個建議。

回答

0

我建議把所有的$ body值放到一個字符串中。因此,首先循環每個項目,並使用PHP連接($ body。=)將其添加到字符串$ body中。目前您只能檢索一個值。也許改變你的字段的名稱,通過循環遍歷它們有多少個項目++是一個跟在名稱後面的數字,以便遍歷那些_REQUESTS,以便將這些字段放到你的$ body。= string for email中。

+0

我不知道你是如何理解這個問題的。 – Khez

+0

如果我不知道循環需要運行的確切次數,是否可以連接? – Peter