Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 提交表单时不转到错误消息_Php - Fatal编程技术网

Php 提交表单时不转到错误消息

Php 提交表单时不转到错误消息,php,Php,我使用此代码验证选择框值。但我的问题是,当我提交表单时,没有在选择框中选择一个选项,它不会显示错误消息 if ( !isset( $_POST['how_hear'])) { $errors[] = 'Select an option from How did you hear us select box'; } else { $howHear = $_POST['how_hear']; } 这是我的选择框 $howHe

我使用此代码验证选择框值。但我的问题是,当我提交表单时,没有在选择框中选择一个选项,它不会显示错误消息

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";
$howHear=array(1=>“选项值01”,
“期权价值02”,
“期权价值03”,
“期权价值04”,
“期权价值05”,
“期权价值06”,
“期权价值07”,
“选项值08”
);
回声“
--选择一个选项--\n”;
foreach($howHear作为$key=>$value){
回显“$value\n”;
}
回音“\n”;
谁能告诉我我哪里做错了?
谢谢。

问题似乎在于如何设置听力。默认值是

--Select an Option--
检查一下

$_POST['how_hear'] != "--Select an Option--"
或者,更新select字段,使默认值为0(这是正确的做法)。然后检查该值是否为非零

<option value="0">--Select an Option--</option>
——选择一个选项--

您应该添加另一个条件

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'];
}
试一试


我对你的代码和更新做了一些更改

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

?>

当您提交而不选择选择框时,您在
die($\u POST['how\u hear'])
中得到了什么?我需要将此调试代码放在哪里。我试着把它放入我的验证代码中。但是它不会显示任何内容。您可以将它放在
if(!isset($\u POST['how\u hear']){
之前。我认为$\u POST['how\u hear']永远不会等同于“”。如果我没有弄错,它将在选项标记之间包含文本。我尝试过类似这样的操作。。if(!isset($\u POST['how\u hear'])&$\u POST['how\u hear']!=“--选择一个选项--”){将&&改为| |。按照你的方式,你说的是“如果没有设置how|hear,那么它等于某物”。这在逻辑上是没有意义的。但是,你最好将选项值设置为0,并按如下方式进行测试:If(!isset($u POST['how|u hear'])|$u POST['how|u hear']==0{…}谢谢。它工作正常。我在代码中犯了一个错误,我使用它就像$_POST['how_hear']='0'@TharangaNuwan“0”I字符串,0是int..非常欢迎:)
if (  $_POST['how_hear'] == 0) {
    //   error message
} 
<?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>";

?>