简体   繁体   English

通过PHP提交数据的最简单方法?

[英]Easiest way to submit data via PHP?

I'm new to PHP, and have spent 10 hours trying to figure this problem out. 我是PHP的新手,并且花了10个小时试图解决这个问题。

The goal is to take all data entered into this order form, and send it to my email via PHP. 目标是将所有数据输入此订单表格,然后通过PHP将其发送到我的电子邮件中。

I have 2 questions: 我有两个问题:

1. I can get PHP to send data from a single menu item (example: Mexican Tortas), but how do I get PHP to send data from multiple items (example: Mexican Tortas, Fish Sandwich and Hamburger)? 1.我可以使PHP从单个菜单项发送数据(例如:墨西哥玉米饼),但是如何使PHP从多个菜单项发送数据(例如:墨西哥玉米饼,鱼三明治和汉堡包)?

2. How do I tell PHP to not send data from menu items that don't have the "How Many?" 2.如何告诉PHP不要从没有“多少”菜单项发送数据? or "Customize It?" 或“自定义?” text fields filled out? 文本字段填写了吗?

If you could provide a super simple example (or a link to a learning resource) I would really appreciate it. 如果您可以提供一个超级简单的示例(或指向学习资源的链接),我将不胜感激。

Thank you, Abijah 谢谢阿比贾


PHP PHP

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

$to = "test@mywebsite.com"; 
$subject = "New Order";
$name_field = $_POST['name'];
$phone_field = $_POST['phone'];
$item = $_POST['item'];
$quantity = $_POST['quantity'];
$customize = $_POST['customize'];

}

$body = "Name: $name_field\nPhone: $phone_field\n\nItem: $item\nQuantity: $quantity\nCustomize: $customize";

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

?>

HTML HTML

<form action="neworder.php" method="POST">

<div class ="item">
<img style="float:left; margin-right:15px; border:1px Solid #000; width:200px; height:155px;" src="images/mexicantortas.jpg">
<h1>Mexican Torta - $8.50</h1>
<input name="item" type="hidden" value="Mexican Torta"/>
<h2>How Many? <font color="#999999">Ex: 1, 2, 3...?</font></h2> 
<input name="quantity" type="text"/>
<h3>Customize It? <font color="#999999">Ex: No Lettuce, Extra Cheese...</font></h3> 
<textarea name="customize"/></textarea>
</div><!-- ITEM_LEFT -->

<div class ="item">
<img style="float:left; margin-right:15px; border:1px Solid #000; width:200px; height:155px;" src="images/fishsandwich.jpg">
<h1>Fish Sandwich - $8.50</h1>
<input name="item" type="hidden" value="Fish Sandwich"/>
<h2>How Many? <font color="#999999">Ex: 1, 2, 3...?</font></h2> 
<input name="quantity" type="text"/>
<h3>Customize It? <font color="#999999">Ex: No Lettuce, Extra Cheese...</font></h3> 
<textarea name="customize"/></textarea>
</div><!-- ITEM_LEFT -->

<div class ="item">
<img style="float:left; margin-right:15px; border:1px Solid #000; width:200px; height:155px;" src="images/hamburgers.jpg">
<h1>Hamburger w/ Fries - $7.00</h1>
<input name="item" type="hidden" value="Fish Sandwich"/>
<h2>How Many? <font color="#999999">Ex: 1, 2, 3...?</font></h2> 
<input name="quantity" type="text"/>
<h3>Customize It? <font color="#999999">Ex: No Lettuce, Extra Cheese...</font></h3> 
<textarea name="customize"/></textarea>
</div><!-- ITEM_LEFT -->

<div class="horizontal_form">
<div class="form">
<h2>Place Your Order Now: <font size="3"><font color="#037B41">Fill in the form below, and we'll call you when your food is ready to be picked up...</font></font></h2>
<p class="name">
<input type="text" name="name" id="name" style="text-align:center;" onClick="this.value='';" value="Enter your name"/>
</p>
<p class="phone">  
<input type="text" name="phone" id="phone" style="text-align:center;" onClick="this.value='';" value="Enter your phone #"/>
</p>
<p class="submit">
<input type="submit" value="Place Order" name="submit"/>
</p>
</div><!-- FORM -->
</div><!-- HORIZONTAL_FORM -->

</form>

I suggest you use '[]', as it groups multiple input fields to an array. 我建议您使用“ []”,因为它将多个输入字段组合到一个数组中。

<?php

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
  $_POST = filter_input_array(INPUT_POST, FILTER_SANITIZE_SPECIAL_CHARS);

  $to = "test@mywebsite.com"; 
  $subject = "New Order";

  $order = array();
  $order['name']  = $_POST['name'];
  $order['phone'] = $_POST['phone'];

  $food = $_POST['food'];

  foreach ($food as $type => $value)
    if (strlen($value['quantity']) > 0) // assuming 'customize' is optional
      $order[$type] = $value;

  print_r($order);
}

?>

<html>
<head>
  <title>Order now!</title>
  <style>label,input,textarea {display:block}</style>
<body>
<?php // You need enctype for '[]' support' ?>
<form action="" method="post" enctype="multipart/form-data">
  <div class ="item">
    <label>Mexican Torta - $8.50</label>

    <b>How Many?</b> 
    <input name="food[mexican_torta][quantity]" type="text">

    <b>Customize It? <font color="#999999">Ex: No Lettuce, Extra Cheese...</font></b> 
    <textarea name="food[mexican_torta][customize]"></textarea>
  </div>

  <div class ="item">
    <label>Fish - $3.50</label>

    <b>How Many?</b> 
    <input name="food[fish][quantity]" type="text">

    <b>Customize It? <font color="#999999">Ex: No Lettuce, Extra Cheese...</font></b> 
    <textarea name="food[fish][customize]"></textarea>
  </div>

  <h2>Place Your Order Now:</h2>

  <em>Fill in the form below, and we'll call you when your food is ready to be picked up.</em>

  <label>Enter your name</label>
  <input type="text" name="name">

  <label>Enter your phone nr.</label>
  <input type="text" name="phone">

  <button>Submit</button>
</form>
</body>

User submits (for example I left the fish blank) and you get 用户提交(例如,我把鱼留空了),您得到

Array ( 
 [name] => Fab 
 [phone] => 1212
 [mexican_torta] => Array ( [quantity] => 2 [customize] => Test ) 
)

Play around a bit with the '[]' to get the array output you really desire. 稍微玩一下[]以获得您真正想要的数组输出。 The print_r will show you exactly what you get. print_r会告诉您确切的内容。 From here it is really easy to put the food details in the e-mail 从这里可以很容易地将食物详细信息放入电子邮件中

You'll need unique form field names. 您将需要唯一的表单字段名称。 In other words, you can't have repeated items of the form: 换句话说,您不能重复以下形式的项目:

<input name="quantity" type="text"/>

Instead, you'll need unique names, such as: 相反,您将需要唯一的名称,例如:

<input name="quantity_fish" type="text"/>

You can then use PHP to parse $_POST and throw out empty fields if you'd like. 然后,您可以使用PHP解析$ _POST,并根据需要丢弃空字段。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM