|
|
|
| Столкнулся с такой вот проблемой.
Есть форма для редакт. резюме человека. Исходные данные для изменения вытаскиваются из БД мускул вставляются в текстовые поля как value по умолчанию.
Но так же есть выпадающий список (меню) с выбором месяца рождения.
Как сделать. чтобы РНР вытаскивая из БД значение месяца рождения, устанавливал это значение в качестве selected во всем списке месяцев.
Если кому то не понятно то покажу наглядно.
Вот форма добавления анкеты:
HTML:
1. <form action="">
2. Месяц рождения:
3. <select name="month_pr" size="1" id="month_pr">
4. <option value="" selected>- -</option>
5. <option value="Январь">Январь</option>
6. <option value="Февраль">Февраль</option>
7. <option value="Март">Март</option>
8. <option value="Апрель">Апрель</option>
9. <option value="Май">Май</option>
10. <option value="Июнь">Июнь</option>
11. <option value="Июль">Июль</option>
12. <option value="Август">Август</option>
13. <option value="Сентябрь">Сентябрь</option>
14. <option value="Октябрь">Октябрь</option>
15. <option value="Ноябрь">Ноябрь</option>
16. <option value="Декабрь">Декабрь</option>
17. </select>
В данной форме, выбранным значением является пустое поле, чтобы запретить добавление в БД пустых значений.
А мне теперь надо чтобы при открытии страницы редактирования данного резюме, также выводился весь список месяцев, и значением по умолчанию уже был не <option value="" selected>- -</option> , а месяц установленный при создании анкеты.
Надеюсь я ясно изложился.
К примеру, с числом даты рождения я справился вот таким вот способом:
PHP:
1. День
2. <select name="day">
3. <?php
4. $d = 0;
5. if(empty($myrow["имя поля числа в БД"])) { echo "<option value=\"\" selected>- -</option>";}
6.
7. do {
8. $d++;
9. if($d == $myrow["имя поля числа в БД"]) { $selected = "selected";}
10. else { $selected = "";}
11. if($d < 10) {$w = "0";} else {$w = " ";}
12. echo "<option value=\"$w$d\" $selected>$w$d</option><br>";
13. }
14. while($d < 32);
15.
16. ?>
17. </select>
конечно, эту проблему я решил не самым лучшим способом, но решил. С днями легче, т.к. там тока последовательность цифр, а с названиями месяцев -посложнее.
На одном из форумов посоветовали следующее:
"создай ассоциативный массив где индекс порядковый номер месяца а валуем будет название, для формирования опшинов селекта форечиш этот массив, попутно проверяя соответствие ключа из массива с сохраненным в базе порядковым номером месяца, есть соответствие - приписываешь селектед в опшин."
Но у меня в БД, у месяца нет порядкового номера, т.к. он находится не в отдельной таблице. а в общей таблице анкеты пользователя. И поэтому не знаю как это осуществить, но знаю что нужно через массив и foreach. Но как именно я не понял.
Может кто нибудь пример показать?
Спасибо за помощь | |
|
|
|
|
|
|
|
для: tlekkanapin
(01.12.2010 в 05:47)
| | Криво, это вы точно подметили.
Но лучше бы показали код, который выводит список месяцев.
Но так, навскидку:
<?php
// Индексы в соответствии с порядковым номером месяца
$monthes = array(1 => 'Январь', 'Февраль', 'Март'...);
// $arr['birthdate_month'] - месяц рождения, пришло из бд
foreach ($monthes as $month)
{
$selected = ($arr['birhdate_month'] == $month) ? ' selected' : null;
echo "<option value=\"$month\"$selected>$month</option><br>";
}
|
Код не проверял.
Но так, по факту - у вас ошибка в проектировании. В базе следовало бы хранить именно дату рождения, но никак не "Январь", "Февраль".. | |
|
|
|
|
|
|
|
для: neadekvat
(01.12.2010 в 07:39)
| | Спасибо. Теперь разобрался | |
|
|
|