在提交按钮后的下拉列表中显示所选值

时间:2018-02-15 19:06:37

标签: php

我正在尝试在提交按钮后的下拉列表中打印选定的值。 这是我的php函数。

if( !function_exists('mad_get_towns_list') ):

    function mad_get_towns_list(){

        $towns_list='';

        if(mad_get_towns()){

            foreach(mad_get_towns() as $town){
                $towns_list .= '<option value="'.$town.'">'.$town.'</option>';
            }

            return $towns_list;
        }

        return false;

    }

endif;

在这里我得到所有列表。问题是,当我提交按钮然后显示任何,它没有显示选定的值。

<select name="city_location" class="custom-select full-width" id="s_country" data-live-search="true" value="<?php echo $_POST['city_location'];?>">
                                              <option value="">Any</option>
                                            <?php
                                                print_r(mad_get_towns_list());
                                                ?>
                                        </select>

1 个答案:

答案 0 :(得分:0)

您必须使用selected属性而不是<select>标记的值。 因此,您可以将当前值传递给函数以添加此属性:

if (!function_exists('mad_get_towns_list')) :
function mad_get_towns_list($selected_value) { // pass value, see below

    $towns_list='';

    $towns = mad_get_towns(); // store variable
    if (!empty($towns)) {
        foreach($towns as $town) {
            $selected = $selected_value == $town ? " selected" : "" ; // create select attribute
            $towns_list .= '<option value="'.$town.'" '.$selected.'>'.$town.'</option>';
        }
    }
    return $towns_list;
}
endif;
?>
<select name="city_location" class="custom-select full-width" id="s_country" data-live-search="true">
    <option value="">Any</option>
    <?php
        $selected = isset($_POST['city_location']) ? $_POST['city_location'] : '' ;
        echo mad_get_towns_list($selected) ;
    ?>
</select>