报价表 - 从PHP表单选择中回显两个值

时间:2014-10-05 12:28:46

标签: php html forms

我正在尝试创建报价单。这将通过电子邮件发送给我和填写表格的人。我想回应所选的值(我目前有这个工作)&为选择分配一个整数值。然后,我想要添加整数以提供总计。在下面的例子中,我刚刚包含了一个选项,但我在表单中会有很多选项。任何帮助都会很棒!

<label>What time would you like to start?
    <select required name="drop_off_time" id="drop_off_time-select" value="<?php if(isset($_POST['drop_off_time']))  echo $_POST['drop_off_time'];?>">
        <option value="0"></option>
        <option value="8:00am">8:00am</option>
        <option value="8:30am">8:30am</option>
        <option value="9:00am">9:00am</option>
    </select>
</label>


if(isset($_REQUEST['drop_off_time']) && $_REQUEST['drop_off_time'] == '0') { 
echo 'Please select a time.'; 
} 
$drop_off_time = $_POST['drop_off_time'];


$emailTo = 'me@gmail.com';
$subject = 'Fees Form Submission from '.$name;
$sendCopy = trim($_POST['sendCopy']);
$body = "Name: $name \n\nEmail: $email \n\nComments: $comments \n\nDrop Off Time: $drop_off_time \n\nTotal: £$total";
$headers = 'From: My Site <'.$emailTo.'>' . "\r\n" . 'Reply-To: ' . $email;

mail($emailTo, $subject, $body, $headers);

一切正常。我的问题是我想为选择分配一个整数。我已经使用开关完成了这项工作,但它会保持打印出所选的值而不是我指定的新值。这个代码如下。

$drop_off_time_price = 0;
switch ($drop_off_time_price) {
case 0;
    echo 0;
    break;
case "8:00am":
  echo 100;
  break;
case "8:30am":
  echo 10000;
  break;
case "9:00am":
  echo 100000;
  break; 
}

//Getting the total
$total = $drop_off_time_price; 

这就是电子邮件的样子

姓名:弗兰克

电子邮件:me@mail.com

评论:我得到了所选的值,但没有得到总数......

送货时间:上午8:00

总计:£0

3 个答案:

答案 0 :(得分:2)

您的逻辑中存在一些问题:

  1. 您应该在switch语句中检查 $ drop_off_time 。所以它应该是:

    switch ($drop_off_time) {
    
  2. 正如@FloatingRock所提到的,案例0;应该是:

    case 0:
    
  3. 而不是echo 0,您应该将该值分配给$drop_off_time_price

    $drop_off_time_price = 0;
    
  4. 所以你的完整例子应该是这样的:

        $drop_off_time_price = 0;
        switch ($drop_off_time) {
            case "8:00am":
               $drop_off_time_price = 100;
               break;
            case "8:30am":
               $drop_off_time_price = 10000;
               break;
            case "9:00am":
               $drop_off_time_price = 100000;
               break; 
        }
    

    注意:您也可以在我的示例中删除0检查,因为您已经将0的默认值设置为0价格。

答案 1 :(得分:0)

switch声明中,当case 0; case 0::

时,您正在使用{{1}}

答案 2 :(得分:0)

您使用的第二段代码显然不是您想要的整数。我想,你正在使用这个块计算$ total,然后在你的电子邮件正文$ body中使用。但是,开关块不会为任何变量计算或分配任何内容。它只打印出一些值 - 在你的例子中为0。

我的建议:请发布所有代码,您可能会得到详细的答案。