Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.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_Html_Drop Down Menu - Fatal编程技术网

Php 表单提交验证后的重新填充下拉菜单选择

Php 表单提交验证后的重新填充下拉菜单选择,php,html,drop-down-menu,Php,Html,Drop Down Menu,我正在用php编写一个注册表单,如果没有正确验证,它会重新提交/保留用户输入。我的文本框、密码输入和单选按钮都能正常工作,但这些下拉菜单更麻烦。我使用的php代码适用于文本框,但不适用于这些选择/选项,有更好的方法吗?为了节省空间,我删掉了大部分选项,但每个选项分别为0-11个月、1-31天和1900-2013年 <select id="month" name="month" value="<?php if(isset($_POST['month'])) ec

我正在用php编写一个注册表单,如果没有正确验证,它会重新提交/保留用户输入。我的文本框、密码输入和单选按钮都能正常工作,但这些下拉菜单更麻烦。我使用的php代码适用于文本框,但不适用于这些选择/选项,有更好的方法吗?为了节省空间,我删掉了大部分选项,但每个选项分别为0-11个月、1-31天和1900-2013年

<select id="month" name="month" value="<?php
    if(isset($_POST['month']))
        echo htmlspecialchars($_POST['month'])?>">

    <option value="default">Month</option>
    <option value="0">January</option>
    ...
    <option value="11">December</option>

</select>
<select id="formDay" name="day" value="<?php
    if(isset($_POST['day']))
        echo htmlspecialchars($_POST['day'])?>">

    <option value="default">Day</option>
    <option value="1">1</option>
    ...
    <option value="31">31</option>

</select>
<select id="formYear" name="year" value="<?php
    if(isset($_POST['year']))
        echo htmlspecialchars($_POST['year'])?>">

    <option value="default">Year</option>
    <option value="2013">2013</option>
    ...
    <option value="1900">1900</option>

 </select>                    

你做得不对

请在每个选项中设置如下条件

<option value="2013" <?php if(isset($_POST['year']) && $_POST['year']==2013){ echo "selected";}?>>2013</option>

一个月都是这样。

你做得不对

请在每个选项中设置如下条件

<option value="2013" <?php if(isset($_POST['year']) && $_POST['year']==2013){ echo "selected";}?>>2013</option>

以相同的方式用于月份。

使用“选择”,您无法设置值。。。相反,您必须将选定属性添加到选择选项元素中

我通常使用这样的函数来构建我的选择

function showSelect($name, $options, $selected, $attr = array()){
    $str = "<select name='".$name.'"';
    foreach($attr as $name=>$val){
        $str.= " ".$name."='".$val."'";
    }
    $str.=">";
    foreach($options as $k=>$val){
        $str.= "<option value='".$val."'".($val==$selected?" selected='selected'":"").">".$k.'</option>';
    }
    $str.="</select>";
}
$name是元素的名称 $options是option\u value=>option\u标签形式的数组 $selected是选择选项的值 $attr是一个附加属性数组,用于放置在select元素样式id等上

比如说

$days = array();
for($d = 1; $x<=31; $x++){
     $days[(string)$d] = (string)$d;
}

echo showSelect("formDays", $days, $_POST["formDays"], array("id"=>"formDays"));

使用“选择”无法设置值。。。相反,您必须将选定属性添加到选择选项元素中

我通常使用这样的函数来构建我的选择

function showSelect($name, $options, $selected, $attr = array()){
    $str = "<select name='".$name.'"';
    foreach($attr as $name=>$val){
        $str.= " ".$name."='".$val."'";
    }
    $str.=">";
    foreach($options as $k=>$val){
        $str.= "<option value='".$val."'".($val==$selected?" selected='selected'":"").">".$k.'</option>';
    }
    $str.="</select>";
}
$name是元素的名称 $options是option\u value=>option\u标签形式的数组 $selected是选择选项的值 $attr是一个附加属性数组,用于放置在select元素样式id等上

比如说

$days = array();
for($d = 1; $x<=31; $x++){
     $days[(string)$d] = (string)$d;
}

echo showSelect("formDays", $days, $_POST["formDays"], array("id"=>"formDays"));

您可以尝试此方法,动态生成值

日期:

月份:

年份:


您可以尝试此方法,动态生成值

日期:

月份:

年份:


你想选择输入吗?嗨,是的,这正是我想要它做的。如果我的错误消息显示为“日期无效”,我希望用户选择的值仍被选中并可见,例如,如果他们选择2013年2月29日,那么当表单重新加载/重新提交时,这些值仍将被选中是否要选择输入?嗨,是的,这正是我希望它做的。如果我的错误消息显示为“日期无效”,我希望用户选择的值仍被选中并可见,例如,如果他们选择2013年2月29日,那么当表单重新加载/重新提交时,这些值仍将被选中。谢谢,唯一的问题是,我在过去几年中有超过100个选项的很多选项,例如,对于每个选项,有没有一种更短的实现方法?是的,您可以使用for循环并动态生成下拉列表,在这种情况下,您只需要设置一个条件。好的,谢谢,唯一的问题是,我有很多选项,例如,在数年内超过100个选项,是否有一种较短的方法来实现每个选项?是的,您可以使用for循环并动态生成下拉列表,在这种情况下,您只需要设置一个条件。啊,好的,这看起来不错。你能不能给我举个例子,用我的代码也许几天来说明应该去哪里?我对php还是相当陌生。啊,好吧,这看起来不错。你能不能给我举个例子,用我的代码也许几天来说明应该去哪里?我对php还是相当陌生的。