发送PHP表单数据

时间:2012-08-20 04:41:40

标签: php html

我正在尝试使用PHP创建在线订单。

我已经使用PHP Checkboxes为每个项目工作了。

但现在我想删除复选框 - 将它们替换为每个项目的数量框和消息框。

以下是我目前如何通过复选框设置订单表单(我从第1项“墨西哥Tortas”中删除了复选框,并添加了数量和消息框作为示例)。

最好的解决方法是什么,以便只有在数量框(和消息框)中输入数据的项目才会发送到我的电子邮箱?

HTML:

<div class ="item_left">
<img src="images/mexicantortas.jpg" border="2" width="200px" height="150px"><br>
Mexican Torta - $8.50<input name="item" type="hidden" value="Mexican Torta"/><br>
How Many? <input name="quantity" type="text" style="width: 20px; height: 12px;"/><br>
<input name="message" type="text" value="Enter special order instructions here..."   style="max-width: 200px; height: 30px;"/>
</div><!-- ITEM_LEFT -->

<div class ="item_center">
<img src="images/fishsandwich.jpg" border="2" width="200px" height="150px"><br/>
Fish Sandwich - $8.50<input name="item" type="hidden" value="Fish Sandwich"/><br>
<input type="checkbox" name="check[]" value="Fish Sandwich"><br/>
</div><!-- ITEM_CENTER -->

<div class ="item_right">
<img src="images/hamburgers.jpg" border="2" width="200px" height="150px"><br/>
Hamburger w/ Fries - $7.00
<input type="checkbox" name="check[]" value="Hamburger"><br/>
</div><!-- ITEM_RIGHT -->

PHP:

<?php
if(isset($_POST['submit'])) {

$to = "test@websitehere.com"; 
$subject = "Form Tutorial";
$name_field = $_POST['name'];
$email_field = $_POST['email'];
$message = $_POST['message'];
$option = $_POST['radio'];
$dropdown = $_POST['drop_down'];

foreach($_POST['check'] as $value) {
$check_msg .= "Checked: $value\n";
}

$body = "From: $name_field\n E-Mail: $email_field\n $check_msg
    Option:$option\n    Drop-Down: $dropdown\n Message:\n $message\n";

echo "Data has been submitted to $to!";
mail($to, $subject, $body);

 } else {
echo "blarg!";
}
?>

2 个答案:

答案 0 :(得分:0)

首先,你有一堆同名的东西,不允许你在服务器端区分它们。其次,如果他们选择的项目超过1项,您是否希望每封电子邮件只发送1件商品或超过1件商品?

无论哪种方式,我想要做的是验证并检查值是否等于“”或0,具体取决于您的选择框。其次,获取这些变量并将它们填充到数组中。然后,您可以循环遍历您的数组,使用html将项目附加到$ message中。

答案 1 :(得分:0)

请注意,这只是我在大约10分钟内输入的快速内容,因此我确信有更好的方法可以做到这一点,但是,它可以完成工作。

PHP:

if(isset($_POST['submit'])) {
    $to = "test@websitehere.com"; 
    $subject = "Form Tutorial";
    $name_field = $_POST['name'];
    $email_field = $_POST['email'];

    $order = array();
    foreach($_POST['item'] as $item => $name) {
        if ($_POST['quantity_'.$name] > 0) {
            $add_order = array('pretty'=>$_POST['pretty-name_'.$name],'qty'=>$_POST['quantity_'.$name],'message'=>$_POST['message_'.$name]);
            array_push($order,$add_order);
        }
    }

    $body = "From: $name_field\nE-Mail: $email_field\n";

    $body .= "Their Order:\n";
    foreach ($order as $item){
        $body .= "--".$item['qty']."x ".$item['pretty']."\n
        Extra: ".$item['message']."\n\n";
    }

    echo "Data has been submitted to $to!";
    mail($to, $subject, $body);
}

HTML:

<form action="test.php" method="post">
<div class ="item_left">

Mexican Torta - $8.50<input name="item[]" type="hidden" value="torta"/>
<input name="pretty-name_torta" type="hidden" value="Mexican Torta"/><br>
How Many? <input name="quantity_torta" type="text" /><br>
<input name="message_torta" type="text" value="Enter special order instructions here..." />
</div><!-- ITEM_LEFT -->
<br />
<div class ="item_center">

Fish Sandwich - $8.50<input name="item[]" type="hidden" value="fish"/>
<input name="pretty-name_fish" type="hidden" value="Fish Sandwhich"/><br>
How Many? <input name="quantity_fish" type="text" /><br>
<input name="message_fish" type="text" value="Enter special order instructions here..." />
</div><!-- ITEM_CENTER -->
<br />
<div class ="item_right">

Hamburger w/ Fries - $7.00<input name="item[]" type="hidden" value="hamburger"/>
<input name="pretty-name_hamburger" type="hidden" value="Hamburger"/><br>
How Many? <input name="quantity_hamburger" type="text" /><br>
<input name="message_hamburger" type="text" value="Enter special order instructions here..." />
</div><!-- ITEM_RIGHT -->
<br /><br />
<input type="submit" name="submit" value="Order" />
</form>

输出:(类似于)

Their Order:
--22x Mexican Torta
Extra: Enter special order instructions here...

--1x Fish Sandwhich
Extra: Lots of stuff

--2x Hamburger
Extra: Mmmm Fries
杰瑞德是对的。您需要有办法区分不同的项目。因此,为什么我在那里添加了额外的隐藏输入。

长话短说,每个项目都被放入一个数组中。 PHP浏览此数组并选择数量值大于0的数据。如果有,请将该项信息添加到第二个数组中。这一步的后半部分,通过这个新数组,让它看起来很漂亮,漂亮。

如果你需要我澄清或解决任何问题,请知道。

编辑:走在前面并将其添加到邮件功能中(无聊)。

PS:我注意到你使用的是无法使用的可变电子邮件。我可能不需要,但无论如何我会说。在进行大量操作之前,请确保检查并清理用户输入。可能在这里没什么大不了的,但在某些情况下它仍然会变坏。