Показать сообщение отдельно
  #11 (permalink)  
Старый 02.04.2015, 00:12
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

В этом ваша и ошибка, если вручную. Циклом такие вещи надо выводить. Коли выборки о пользователе я так и не увидел, то абстрактный пример:
//если выборка о пользователе возвращает из поля DATE день, месяц и год, то работаем с этими данными
//если нет, и возвращает дату как YYYY-MM-DD, то получаем из даты нужные компоненты средствами РНР
$time  = strtotime($row['date']); //где $row['date'] - дата рождения из базы
$year  = date('Y', $time);
$month = date('n', $time); 
$day   = date('j', $time);
//месяц и день без ведущих нулей, так как они совсем не нужны в списках
//ибо полученную дату для нашей локалицации как d.m.YYYY можно всегда привести к формату SQL
//$date = date('Y-m-d', strtotime('3.5.2000')); //получим корректный формат даты для SQL, 
//если вернет false или дату UNIX, значит клиент прислал лажу

//но лучше сразу SQL запросом вернуть компоненты

//выводим списки
$select_year  = '<select name="year"><option value="">Выберите год...</option>';
$select_month = '<select name="month"><option value="">Выберите месяц...</option>';
$select_day   = '<select name="day"><option value="">Выберите дату...</option>';
//цикл по количеству лет
$start = $k = 1950;
$end = date('Y') - 18; //последний год с учетом минимального возраста
while($start <= $end) {
    $n = $start-$k+1; 
    if($n < 13) $select_month .= '<option value='.$n.' '.($n == $month ? 'selected' : null).'>'.$n.'</option>';
    if($n < 32) $select_day   .= '<option value='.$n.' '.($n == $day ? 'selected' : null).'>'.$n.'</option>';
    $select_year   .= '<option value='.$start.' '.($start == $year ? 'selected' : null).'>'.$start.'</option>';
    $start++;
}
$select_year  .= '</select>';
$select_month .= '</select>';
$select_day   .= '</select>';
echo $select_day, $select_month, $select_year;


>через js по id например #id_select option:selected

Во первых первый опшен должен быть пуст, так как ставить минимальную дату, месяц и год по умолчанию, это плохо, можно их по ошибке и запулить на сервер. Поэтому нужно проверять выбран ли опшен (значение не пустое). А значение списка и возвращает значение выбранной опции, так что option:selected в данном случае совсем не требуется.

Последний раз редактировалось laimas, 02.04.2015 в 00:18.
Ответить с цитированием