doutan5798 2012-08-20 23:11 采纳率: 100%
浏览 20
已采纳

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

I'm new to PHP, and have spent 10 hours trying to figure this problem out.

The goal is to take all data entered into this order form, and send it to my email via 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)?

2. How do I tell PHP to not send data from menu items that don't have the "How Many?" 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
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
Phone: $phone_field

Item: $item
Quantity: $quantity
Customize: $customize";

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

?>

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>
  • 写回答

2条回答 默认 最新

  • doudi2229 2012-08-21 00:04
    关注

    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. From here it is really easy to put the food details in the e-mail

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂