【问题标题】:My PhP file is not picking up the variables from my HTML form [duplicate]我的 PhP 文件没有从我的 HTML 表单中获取变量 [重复]
【发布时间】:2017-12-25 07:31:15
【问题描述】:

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

以下是我的 html 手臂的代码:

<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";

?>

现在,当我收到电子邮件时,我只能看到 $destination 被取走。我在我的 html 中做错了什么,它看起来很好。另外,我如何将我的选择元素作为变量。

【问题讨论】:

标签: php html forms email


【解决方案1】:
<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.ini 以相同的方式访问它们。如果你这样做die(var_dump($_POST));,你会看到已经提交的东西。如果您在转储中没有看到它,那么您要么知道您需要重新访问代码

【讨论】:

    【解决方案2】:

    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";
    
    ?>
    

    希望对你有帮助

    【讨论】:

      【解决方案3】:

      您要捕获其值的表单字段都必须具有name 属性,并且它们应该与您在 PHP 中使用的相匹配。例如$_POST['user_email'] 不是$_POST['email']。请注意,您的所有&lt;select&gt; 元素都没有name 属性。

      【讨论】:

      • namepickup 元素在表单中。
      • 你在他们的问题下检查了我的 cmets 吗?
      • @Fred-ii- 是的,OP 的问题有一些不一致之处。叹息
      • @j08691 好像猫得到了 OP 的舌头 或者是擅离职守。
      【解决方案4】:

      如果destination 已经通过,您很可能在name 属性的命名方面存在一些错误。确保它与您尝试在 PHP 中获取的名称 1:1 匹配。

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

      【讨论】:

        猜你喜欢
        • 2018-07-23
        • 2014-01-09
        • 1970-01-01
        • 1970-01-01
        • 2022-01-16
        • 2011-11-06
        • 2015-05-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多