Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > проблема с select


Автор: supercelt 19.12.2007, 18:04
Код

$current_month=date("n");
$current_year=date("Y");
          
$array_m=array("1"=>"Январь", "2"=>"Февраль", "3"=>"Март", "4"=>"Апрель", "5"=>"Май", "6"=>"Июнь", "7"=>"Июль", "8"=>"Август", "9"=>"Сентябрь", "10"=>"Октябрь", "11"=>"Ноябрь", "12"=>"Декабрь");
$array_y=array("1"=>"2007", "2"=>"2008", "3"=>"2009", "4"=>"2010");

$scroll='<select name="month" class="tbox">';
                   foreach($array_m as $f=>$d)
                   {
                   ($f==$current_month) ? $select='selected' : $select='';
                   $scroll.= '<option value="'.$f.'" selected="'.$select.'">'.$d.'</option>';
                   }
                $scroll.= '</select>';
                $scroll.='<select name="year" class="tbox">';
                   foreach($array_y as $x=>$c)
                   {
                   ($c==$current_year) ? $select='selected' : $select='';
                   $scroll.= '<option value="'.$c.'" selected="'.$select.'">'.$c.'</option>';
                   }
                $scroll.='</select>';


Результат должен быть: два выпадающих списка с месяцами и годами и обязательно что бы селет стоял на текущих годе и месяце. Но вот как ни крути, в месяце стоит Декабрь(правильно), а в годах - 2010!!!
Помогите пожалуйста разобраться

Автор: Feldmarschall 19.12.2007, 18:15
Ну мы же программисты. Пожалуйста, не надо описывать картинку с точки зрения юзера.
Неужели нельзя посмотреть генерируемый HTML код?

А эталонный HTML, который выводит нужные списки правильно - есть?

Добавлено через 5 минут и 12 секунд
хихик. в декабре подсветка стоит не потому что правильно, а потому что месяц последний по списку =)

Автор: Fally 19.12.2007, 18:29
Цитата

Код

($f==$current_month) ? $select='selected' : $select='';


Не правильно используете языковые конструкции уважаемый ;0) Наверное правильней было бы так:
Код

$select = $f == $current_month ? 'selected' : '';

Аналогично и для года.

А вообще присоединяюсь к Feldmarschall с советом смотреть не ны вывод в браузер, а на сгенерированный HTML-код. И будет вам счастье.

Автор: Vaulter 19.12.2007, 18:29
когда аттрибут selected='' броузеры все равно считают что пункт выделен .
это просто для стандарта требуется чтобы аттрибут не был коротким
то есть
selected=''
тоже самое что и 
selected

Автор: supercelt 19.12.2007, 18:32
Вот сгенирённый код
Код

<select name="month" class="tbox"><option value="1" selected="">Январь</option><option value="2" selected="">Февраль</option><option value="3" selected="">Март</option><option value="4" selected="">Апрель</option><option value="5" selected="">Май</option><option value="6" selected="">Июнь</option><option value="7" selected="">Июль</option><option value="8" selected="">Август</option><option value="9" selected="">Сентябрь</option><option value="10" selected="">Октябрь</option><option value="11" selected="">Ноябрь</option><option value="12" selected="selected">Декабрь</option></select><select name="year" class="tbox"><option value="2007" selected="selected">2007</option><option value="2008" selected="">2008</option><option value="2009" selected="">2009</option><option value="2010" selected="">2010</option></select>


Всё в норме вроде

Автор: Fally 19.12.2007, 18:40
Vaulter, ты прав, у него везде selected стоит и браузер делает выделенным последний... 
supercelt, вот так надо всё-таки:
Код

$select= $c==$current_year ? 'select="selected"' : '';
$scroll.= '<option value="'.$c.'" "'.$select.'">'.$c.'</option>';

аналогично для месяца сделаешь сам.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)