Сделайте php функцию выпадающего списка 'липкой' - PullRequest
0 голосов
/ 28 октября 2009

Из кофе и мозг сдался ... ... может ли кто-нибудь помочь сделать так, чтобы эта функция раскрытия даты в форме сохраняла выбранный месяц в $ _POST ['submit'] или isset ($ отсутствующий) в случае ошибки / пропущенного поля и т. д.

 function createMonths($id='month_select', $selected=null)
{
    /*** array of months ***/
    $months = array(
            1=>'Jan',
            2=>'Feb',
            3=>'Mar',
            4=>'Apr',
            5=>'May',
            6=>'Jun',
            7=>'Jul',
            8=>'Aug',
            9=>'Sep',
            10=>'Oct',
            11=>'Nov',
            12=>'Dec');

    /*** current month ***/
    $selected = is_null($selected) ? date('m') : $selected;

    $select = '<select name="'.$id.'" id="'.$id.'">'."\n";
    foreach($months as $key=>$mon)
    {
        $select .= '<option value="'.str_pad($key, 2, "0", STR_PAD_LEFT).'"';
        $select .= ($key==$selected) ? ' selected="selected"' : '';
        $select .= ">$mon</option>\n";


    }
    $select .= '</select>';
    return $select;
}

1 Ответ

0 голосов
/ 28 октября 2009

В случае, если у вас есть недопустимые данные формы, вы должны проверить, установлена ​​ли переменная $ _ POST ['month_select'] и не пустая, и создать раскрывающийся список, передав его значение следующим образом:

$selected = (!empty($_POST['month_select'])) ? $_POST['month_select'] : null;
createMonths('month_select', $selected);

function createMonths($id='month_select', $selected = null)
{
    /*** array of months ***/
    $months = array(
            '01'=>'Jan',
            '02'=>'Feb',
            '03'=>'Mar',
            '04'=>'Apr',
            '05'=>'May',
            '06'=>'Jun',
            '07'=>'Jul',
            '08'=>'Aug',
            '09'=>'Sep',
            '10'=>'Oct',
            '11'=>'Nov',
            '12'=>'Dec');

    /*** current month ***/
    $selected = is_null($selected) ? date('n') : $selected;

    $select = '<select name="'.$id.'" id="'.$id.'">'."\n";
    $select .= "<option value=""></option>\n";
    foreach($months as $key => $mon)
    {
        $select .= '<option value="'.$key.'"';
        $select .= ($key == $selected) ? ' selected="selected"' : '';
        $select .= ">$mon</option>\n";
    }
    $select .= '</select>';
    return $select;
}

Я также взял на себя смелость исправить функцию createMonths () по рекомендации относительно date ('n') и изменить ключи массива на строки, так как это избавит вас от необходимости дополнять месяцы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...