我创建了一个带有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中做错了什么,对我来说很好看。另外,我如何将我的选择元素作为变量。
答案 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";
?>
希望这有帮助