Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Не могу вывести в тег select список с выбором исходного значения. Помогите
 
 автор: tlekkanapin   (01.12.2010 в 05:47)   письмо автору
 
 

Столкнулся с такой вот проблемой.
Есть форма для редакт. резюме человека. Исходные данные для изменения вытаскиваются из БД мускул вставляются в текстовые поля как 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. Но как именно я не понял.

Может кто нибудь пример показать?

Спасибо за помощь

  Ответить  
 
 автор: neadekvat   (01.12.2010 в 07:39)   письмо автору
 
   для: tlekkanapin   (01.12.2010 в 05:47)
 

Криво, это вы точно подметили.

Но лучше бы показали код, который выводит список месяцев.
Но так, навскидку:
<?php
// Индексы в соответствии с порядковым номером месяца
$monthes = array(=> 'Январь''Февраль''Март'...);

// $arr['birthdate_month'] - месяц рождения, пришло из бд

foreach ($monthes as $month)
{
    
$selected = ($arr['birhdate_month'] == $month) ? ' selected' null;
    
    echo 
"<option value=\"$month\"$selected>$month</option><br>";
}

Код не проверял.
Но так, по факту - у вас ошибка в проектировании. В базе следовало бы хранить именно дату рождения, но никак не "Январь", "Февраль"..

  Ответить  
 
 автор: tlekkanapin   (01.12.2010 в 12:37)   письмо автору
 
   для: neadekvat   (01.12.2010 в 07:39)
 

Спасибо. Теперь разобрался

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования