Помогите сделать вывод <option> в зависимости от текущего месяца

com100

Новичок
Помогите сделать вывод <option> в зависимости от текущего месяца

Привет парни.
Возникла необходимость в такой форме.
<table>
<th>месяц</th>
<td><select name="mes" class="form_text"><option value=1>Январь
<option value=2 >Февраль
<option value=3 >Март
<option value=4 selected>Апрель
<option value=5>Май
<option value=6>Июнь
<option value=7>Июль
<option value=8>Август
<option value=9>Сентябрь
<option value=10>Октябрь
<option value=11>Ноябрь
<option value=12>Декабрь

Поясню -
В зависимости от текущего месяца, необходимо выводить список select, где по умолчанию стоит текущий месяц.

Т.Е. если на дворе сентябрь, то будет
<option value=9 selected>Сентябрь
и т.п.

Пока в голову только приходит инструкция switch с параметром date(m), но скрипт получается очень большой потому как надо указать ему все 12 значений.
Возможно вы видите другой путь?
 

SiMM

Новичок
И в чём проблема?
Начни с того, что выведи списко месяцев при помощи цикла ([m]for[/m] || [m]foreach[/m]), затем используй [m]if[/m] и [m]date[/m]
 

jrip

Новичок
Как вариант:

$arr[Номер месяца]='selected';

<option value=2 $arr[2]>Февраль
<option value=3 $arr[3]>Март
<option value=4 $arr[4]>Апрель
<option value=5 $arr[5]>Май
<option value=6 $arr[6]>Июнь
<option value=7 $arr[7]>Июль
<option value=8 $arr[8]>Август
<option value=9 $arr[9]>Сентябрь
<option value=10 $arr[10]>Октябрь
<option value=11 $arr[11]>Ноябрь
<option value=12 $arr[12]>Декабрь
 

rotoZOOM

ACM maniac
Код:
<th>месяц</th>
<td><select name="mes" class="form_text"><
<?
$m=date("n");
for ($i=1;$i<13;$i++){
     echo "<option value=$i";
     if ($m==$i)echo " selected";
     echo ">".$month[$i-1];
}
?>
 

jrip

Новичок
Если уж полностью писать решение, то ты ещё забыл $month=array('январь','февраль', и тд);
 

SiMM

Новичок
jrip, либо у тебя массив неправильный, либо у rotoZOOM неправильная программа ;)
hint: индексы массива, если это специально не оговорено, нумеруются с нуля.
PS: и вообще - человек уже давно откланялся, поскольку, судя по всему, разобрался в вопросе ;)
 

com100

Новичок
Ребята. большое спасибо. я новичек и мне очень инетресны любые решения этой проблемы.
Это же все ОПЫТ!
 

XtremallyPurpur

Новичок
PHP:
function tag_option_months($month_id){
  $options = '';
  $arr = array("Январь",/*тут месяцы*/,"Декабрь");
  for ($i=0;$i<12;$i++){
     $options .= '<option value='.($i+1).(($month_id==$i)?' selected':'').'>'.($arr[$i]).'</option>';
  }
  return($options);
}

print ('<select name="month">'.tag_option_months(1)."</select>");
 

jrip

Новичок
хм... странно
<th>месяц</th>
<td><select name="mes" class="form_text">
<?php
$month=array('январь','февраль','март','апрель','май','июнь','июль','август','сентябрь', 'октябрь', 'ноябрь', 'декабрь');
$m=date("n");
for ($i=1;$i<13;$i++){
echo "<option value=$i";
if ($m==$i)echo " selected";
echo ">".$month[$i-1];
}
?>
у меня всё работает... единственное, там опечатка была после
<select name="mes" class="form_text"> лишняя "<" :)

-~{}~ 17.12.04 11:11:

XtremallyPurpur
Красиво :) Ток зачем $arr = array("&#223;&#237;&#226.... ");?
Извращаемся по полной?
 

SiMM

Новичок
jrip, ок, незаметил -1 - беру свои слова обратно. И всё же, если человеку нужен именно опыт - не надо ему сразу давать готовый код - пусть вначале осмыслит нужное и попробует сделать сам. Не получится - спросит. Иначе даже не видно, что он пробовал и что не получается.
 

Фанат

oncle terrible
Команда форума
PHP:
<th>месяц</th>
<td><select name="mes" class="form_text">
<? foreach ($month as $m): ?> 
<option value="<?=$m[$i]?>" <?=$m['selected']?>><?=$m['name']?>
<? endforeach ?>
так, мне кажется, будет гораздо красивее. гораздо
 

jrip

Новичок
SiMM
Да я тоже так считаю, мой первый ответ был только толчком к действию, до циклов он должен был сам додуматься :)

Фанат
Для начинающего самое то. ;) Хорошо отбивает желание спрашивать совета.
 

jrip

Новичок
Фанат
Не знаю как другим, но лично мне ещё месяца полтора назад, нифига непонятноб было. :) Тем более у тебя нет заполнения массива.
И кстати, лично моё имхо - нужно отделять хтмл от скрипта. Но это ток моё имхо. :)
 

SiMM

Новичок
Автор оригинала: jrip
И кстати, лично моё имхо - нужно отделять хтмл от скрипта.
Ещё один... :( А тебе не приходило в голову, что ЭТО (пример Фаната) ничем не отличается от шаблона?
 

Фанат

oncle terrible
Команда форума
jrip
так я и отделил. Специально поэтому так и написал.
Мне кажется, что отделение скрипта от шаблона как раз смотрится гораздо лучше, чем перемешка.
 

jrip

Новичок
А вот как я это вижу: :)
<th>месяц</th><td><select name="mes" class="form_text">
<?php
foreach(array('январь','февраль','март','апрель','май','июнь','июль','август','сентябрь', 'октябрь', 'ноябрь', 'декабрь')as $k=>$v)
{echo "<option value=$k".(date("n")==$k+1?" selected":"").">$v";}
?>
</select>


Фанат
Ну я немного не об этом :) Просто я с перла перешёл и для очень дико выглядят вещи типа <?echo что-то там?>
мне, например проще видеть целиком файл, как скрипт, где части html выводятся при помощи echo() чем hml, в котором имеются вставки пхп кода. :)
Но повторюсь - это лично моё имхо. :)
 
Сверху