0

我使用此代码来验证选择框值。但我的问题是,当我提交表单而不在选择框中选择选项时,它不会出现错误消息。

if ( !isset( $_POST['how_hear'])) {
    $errors[] = 'Select an option from How did you hear us select box';                             
} else {
    $howHear = $_POST['how_hear'];
}

这是我的选择框

$howHear = array( 1 =>  'option value 01', 
                                'option value 02', 
                                'option value 03', 
                                'option value 04', 
                                'option value 05', 
                                'option value 06', 
                                'option value 07', 
                                'option value 08'
                        );

echo "<select name='how_hear'>
        <option>--Select an Option--</option>\n";

    foreach ( $howHear AS $key => $value) {
        echo "<option value='{$key}'";

        // Check for stickyness:
        if ( $_POST['how_hear'] == $key){
            echo " selected='selected'";
        }
        echo ">$value</option>\n";
    }
echo "</select>\n";

谁能告诉我我哪里出错了?谢谢你。

4

4 回答 4

1

问题似乎是 how_hear 已设置。默认是

--Select an Option--

检查

$_POST['how_hear'] != "--Select an Option--"

或者,更新您的选择字段,使默认值为 0(这是正确的做法)。然后检查该值是否非零。

<option value="0">--Select an Option--</option>
于 2013-02-05T05:01:44.283 回答
1

尝试

<option value="0">--Select an Option--</option>

if (  $_POST['how_hear'] == 0) {
    //   error message
} 
于 2013-02-05T05:02:44.863 回答
0

您应该为此添加另一个条件,

if ( !isset( $_POST['how_hear']) || $_POST['how_hear'] == "") {
    $errors[] = 'Select an option from How did you hear us select box';                             
} else {
    $howHear = $_POST['how_hear'];
}
于 2013-02-05T05:02:22.507 回答
0

我对您的代码进行了一些更改并进行了更新。

<?php
    if (isset($_POST['submit'])) 
    {
       if ($_POST['how_hear'] == 0)
       {
           echo "error";
           $errors[] = 'Select an option from How did you hear us select box';                             
       }    
       else 
       {
           echo "Hello";
           $howHear = $_POST['how_hear'];
       }
     }

    echo "<form method='post' action='#'>";
    $howHear = array( 1 =>  'option value 01', 
                            'option value 02', 
                            'option value 03', 
                            'option value 04', 
                            'option value 05', 
                            'option value 06', 
                            'option value 07', 
                            'option value 08'
                    );
    echo "<select name='how_hear'>
        <option>--Select an Option--</option>\n";

        foreach ( $howHear AS $key => $value) 
        {
           echo "<option value='{$key}'>";
           echo "$value</option>\n";
        }

    echo "</select>\n";

    echo "<input type='submit' name='submit' value='submit'/>";

    echo "</form>";

?>

我添加提交按钮,当提交表单时,我检查提交isset与否。之后我检查是否how_hear选择了值。如果选项值0将显示错误。

于 2013-02-05T05:18:30.877 回答