将动态数据从JavaScript传递到PHP

时间:2013-01-17 18:21:06

标签: php javascript html

我设置了一个“订单”页面,允许人们选择要购买的商品。当他们点击“订单”时,它会将他们带到一个页面,允许他们为每个项目动态填充的下拉菜单选择详细信息。这些下拉是循环的,因此每个项目都有自己的集合。

这是我的问题开始的地方。如果订单页面上只有一个项目,则表现完美。下拉列表中的所有选定信息都会被提取到我的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("~~~@gmail.com", "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新手,如果有更好的方法可以做到这一点,我会很感激你的建议。

1 个答案:

答案 0 :(得分:0)

我建议将所有$ body值放入一个字符串中。因此,首先遍历每个项目,然后使用PHP连接($ body。=)添加到字符串$ body。目前,您只检索一个值。也许更改字段的名称是通过循环遍历它们有多少项目有一个数字跟在名称后面的数字,以便循环通过那些_REQUESTS,将那些字段放入你的$ body。= string for email。