我的PhP文件没有从我的HTML表单中获取变量

时间:2017-07-19 20:35:42

标签: php html forms email

我创建了一个带有PHP文件的表单,这是一个预订请求,目的是将变量发送到一个电子邮件地址。但由于某种原因,变量。

以下是我的html arm的代码:

<form action="form.php" method="post">
        <fieldset>
            <legend>Book your Journey</legend>
            <label for ="name">Name:</label>
            <input type="text" id="name" name="name">
            <label for="number">Phone Number</label>
            <input type="number" id="number" name="number">
            </fieldset>
            <fieldset>
            <label for="email">Email:</label>
            <input type="email" id="email" name="user_email">
            <label for="pickup">Pick Me Up From</label>
            <input type="text" id="pickup" name="pickup">
            <label for="date">Date</label>
            <input type="text" id="datepicker" name="date">
            <label>Time:</label>
            <select>
                <option>--HR--</option>
                <option value="1">01</option>
                <option value="2">02</option>
                <option value="3">03</option>
                <option value="4">04</option>
                <option value="5">05</option>
                <option value="6">06</option>
                <option value="7">07</option>
                <option value="8">08</option>
                <option value="9">09</option>
                <option value="10">10</option>
                <option value="11">11</option>
                <option value="12">12</option>
            </select>
            <label>:</label>
            <select>
                <option>--MIN--</option>
                <option value="00">00</option>
                <option value="15">15</option>
                <option value="30">30</option>
                <option value="45">45</option>
            </select>
            <select>
                <option value="am">am</option>
                <option value="pm">pm</option>
            </select>
        </fieldset>
        <fieldset>
            <label for="destination"> Destination Postal Code </label>
            <input type="text" id="destination" name="destination">
        </fieldset>
        <button>Submit</button>
    </form>

现在这个表单的php代码如下

<?php

$to = 'test@gmail.com';
$subject = 'Booking';

$name = $_POST['name'];
$email = $_POST['email'];
$pickup = $_POST['pickup'];
$destination = $_POST['destination'];
$date = $_POST['date'];


$message = <<<Eod
Hi, please pick up $name from $pickup and drop to $destination
Eod;

$header = $email;

mail($to, $subject, $message, $header);


echo "Message Sent";

?>

现在,当我收到电子邮件时,我看到只有$目的地被接收。我在HTML中做错了什么,对我来说很好看。另外,我如何将我的选择元素作为变量。

4 个答案:

答案 0 :(得分:0)

您要捕获值的表单字段必须都具有name属性,并且它们应与您在PHP中使用的属性相匹配。例如$_POST['user_email']而非$_POST['email']。请注意,您的<select>个元素都不具有name属性。

答案 1 :(得分:0)

如果目的地已经通过,您很可能在命名name属性时遇到一些错误。确保它与您尝试在PHP中获得的名称1:1匹配。

辅助,关于您的select,您可以通过name属性获取值,方法与获取所有文本元素的方式相同。任何形式的输入(文件除外)都只是通过协议的字符串。如果UI不同,它对PHP没有任何影响。

答案 2 :(得分:0)

<select class="form-control" name="hour">
   <option>--HR--</option>
   <option value="1">01</option>
   <option value="2">02</option>
   <option value="3">03</option>

</select>
<label>:</label>
<select class="form-control" name="minutes">
   <option>--MIN--</option>
   <option value="00">00</option>
   <option value="15">15</option>
   <option value="30">30</option>
   <option value="45">45</option>
</select>
<select class="form-control" name="time_of_day">
   <option value="am">am</option>
   <option value="pm">pm</option>
</select>

在php中:

//grab the value the user select for hour from the $_POST, which is an array which stores all values submitted via the post method 

$hour = $_POST['hour'];
$minutes = $_POST['minutes'];
$time_of_day = $_POST['time_of_day'];
//concate your variable to output what the user selected so it would out put something like 4:30 pm
$time = $hour.':'.$minutes.''.$time_of_day;

基本上,您将name属性添加到select语句中,就像您为输入所做的那样,并且您通过php以相同的方式访问它们。如果您执行die(var_dump($_POST));,您将看到已提交的内容。如果您在转储中没有看到它,那么您要么知道需要重新访问代码

答案 3 :(得分:0)

<强> HTML

您在选择选项中省略了名称属性。我添加了小时,分钟和期间。此外,您在电子邮件输入字段的名称属性中也有 user_email值

在PHP代码中,我已经分配了连接并分配了 POST 时间值并更新消息

 <form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post">
        <fieldset>
            <legend>Book your Journey</legend>
            <label for ="name">Name:</label>
            <input type="text" id="name" name="name">
            <label for="number">Phone Number</label>
            <input type="number" id="number" name="number">
            </fieldset>
            <fieldset>
            <label for="email">Email:</label>
            <input type="email" id="email" name="user_email">
            <label for="pickup">Pick Me Up From</label>
            <input type="text" id="pickup" name="pickup">
            <label for="date">Date</label>
            <input type="text" id="datepicker" name="date">
            <label>Time:</label>
            <select name="hour">
                <option>--HR--</option>
                <option value="1">01</option>
                <option value="2">02</option>
                <option value="3">03</option>
                <option value="4">04</option>
                <option value="5">05</option>
                <option value="6">06</option>
                <option value="7">07</option>
                <option value="8">08</option>
                <option value="9">09</option>
                <option value="10">10</option>
                <option value="11">11</option>
                <option value="12">12</option>
            </select>
            <label>:</label>
            <select name="min">
                <option>--MIN--</option>
                <option value="00">00</option>
                <option value="15">15</option>
                <option value="30">30</option>
                <option value="45">45</option>
            </select>
            <select name="period">
                <option value="am">am</option>
                <option value="pm">pm</option>
            </select>
        </fieldset>
        <fieldset>
            <label for="destination"> Destination Postal Code </label>
            <input type="text" id="destination" name="destination">
        </fieldset>
        <button>Submit</button>
    </form>

<强> PHP

<?php
        $to = 'test@gmail.com';
    $subject = 'Booking';

    $name = $_POST['name'];
    $phone = $_POST['number'];
    $email = $_POST['user_email'];
    $pickup = $_POST['pickup'];
    $destination = $_POST['destination'];
    $date = $_POST['date'];
    $time = $_POST['hour'].':'.$_POST['min'].''.$_POST['period'];
echo "Message Sent";

?>

希望这有帮助