PHP $ _POST下拉

时间:2013-07-09 16:26:12

标签: php post

我已成功设法显示并发送所有文本字段值,但我在检查选择了日,月和年时遇到问题,如果没有,则显示错误消息。选择并通过验证后,我将使用表单脚本发送值。

以下是我所做的,如果有人可以帮我验证下拉选项,请将值发送到电子邮件地址,并在通过提交后重定向到“谢谢”页面我非常感谢。

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

2 个答案:

答案 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

依此类推所有日期字段。