我已成功设法显示并发送所有文本字段值,但我在检查选择了日,月和年时遇到问题,如果没有,则显示错误消息。选择并通过验证后,我将使用表单脚本发送值。
以下是我所做的,如果有人可以帮我验证下拉选项,请将值发送到电子邮件地址,并在通过提交后重定向到“谢谢”页面我非常感谢。
<form name="form1" e class="membership-form membership-form-stage-two" method="post" action="form-one.php">
<div class="half">
<h4>First Name</h4>
<input name="firstname" type="text" id="firstname" value="<?php echo $_POST['firstname']; ?>" class="">
</div>
<div class="half lasthalf">
<h4>Last Name</h4>
<input name="lastname" type="text" id="lastname" value="<?php echo $_POST['lastname']; ?>" class="">
</div>
<h4>Date of Birth</h4>
<select class="day" name="day">
<option>Day</option>
<option value="">1</option>
<option value="">2</option>
</select>
<select class="month" name="month">
<option>Month</option>
<option value="">1</option>
<option value="">2</option>
</select>
<select class="year" name="year">
<option>Year</option>
<option value="">1</option>
<option value="">2</option>
</select>
<h4>Email Address</h4>
<input name="emailaddress" type="text" id="emailaddress" value="<?php echo $_POST['emailaddress']; ?>" class="">
<h4>Select your Favourite </h4>
<div class="favorite">
<select>
<option value="North"> North</option>
<option value="Central">Central</option>
<option value="East">East</option>
</select>
</div>
<h4>Company Name (for Business Buddies)</h4>
<input name="companyname" type="text" id="companyname" value="<?php echo $_POST['companyname']; ?>" class="">
<input type="submit" name="Submit" value="Finish" class="membership-finish">
</form>
<?php
if (isset($_POST['Submit'])) {
if ($_POST['firstname'] != "") {
$_POST['firstname'] = filter_var($_POST['firstname'], FILTER_SANITIZE_STRING);
if ($_POST['firstname'] == "") {
$errors .= 'Please enter a valid name.<br/><br/>';
}
} else {
$errors .= 'Please enter your name.<br/>';
}
if ($_POST['lastname'] != "") {
$_POST['lastname'] = filter_var($_POST['lastname'], FILTER_SANITIZE_STRING);
if ($_POST['lastname'] == "") {
$errors .= 'Please enter a valid name.<br/><br/>';
}
} else {
$errors .= 'Please enter your name.<br/>';
}
if ($_POST['emailaddress'] != "") {
$emailaddress = filter_var($_POST['emailaddress'], FILTER_SANITIZE_EMAIL);
if (!filter_var($emailaddress, FILTER_VALIDATE_EMAIL)) {
$errors .= "$emailaddress <strong>NOT</strong> a valid email address.<br/><br/>";
}
} else {
$errors .= 'Please enter your email address.<br/>';
}
if ($_POST['companyname'] != "") {
$_POST['companyname'] = filter_var($_POST['companyname'], FILTER_SANITIZE_STRING);
if ($_POST['companyname'] == "") {
$errors .= 'Please enter a valid name.<br/><br/>';
}
} else {
$errors .= 'Please enter your name.<br/>';
}
if (!$errors) {
$mail_to = 'ad@test.com';
$subject = 'test';
$message = 'Name: ' . $_POST['firstname'] .' ' . $_POST['lastname'] . "\n";
$message .= 'Email Address: ' . $_POST['emailaddress'] . "\n";
$message .= 'Company: ' . $_POST['companyname'] . "\n";
mail($mail_to, $subject, $message);
header( 'Location: thank-you-one.php' ) ;
} else {
echo "<div class='error-message'><span>Please complete the fields in red</span></div>";
}
}
?>
答案 0 :(得分:1)
在检查companyname
if(!checkdate($_POST['month'],$_POST['day'],$_POST['year'])){
$errors .= 'Please enter a valid DOB<br/><br/>';
}
答案 1 :(得分:0)
如果<select
没有name="xx"
属性,则该字段的值不会回发到服务器。因此,为每个人添加一个名称。
您还必须在value=""
中添加一个值,因为这是实际发回服务器的值而不是<option>1</option>
标记之间的值。
<h4>Date of Birth</h4>
<select class="day" name="day">
<option>Day</option>
<option value="0">Select day</option>
<option value="1">1</option>
<option value="2">2</option>
</select>
<select class="month" name="month">
<option>Month</option>
<option value="0">Select month</option>
<option value="1">January</option>
<option value="2">February</option>
....
</select>
<select class="year" name="year">
<option>Year</option>
<option value="0">Select year</option>
<option value="2001">2001</option>
<option value="2001">2002</option>
....
</select>
当你来验证时记住,现在你有一个值=“”设置,你将总是得到一个值作为下拉菜单自动选择列表中的第一个值,除非另有指示。
现在我在每个列表中添加了一个值为“0”的项目。当您确认已选择某个条目时,您可以测试该
if ( $_POST['day'] > 0 ) // An item has been selected
依此类推所有日期字段。