[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Очень интересный баг
Rhiozan
Здравствуйте. Я тяну небольшой проект по ведению отчётности сотрудников. Пишу всё сам и набил довольно много шишек на разных примитивных и не очень ошибках, всегда стараюсь пользоваться гуглами и поисками на форумах. Но баг, с которым я столкнулся - просто выносит мне мозг.

Итак, поехали. Есть база MySQL пятой версии, на веб-сервере висит PHP5.2.8.
Рассматриваемая страничка вставляет кортеж из БД назад в форму для того, чтобы пользователь мог её отредактировать и загнать обратно в БД под тем же первичным ключом.

Для начала мы вытягиваем запись с нужным нам ключом из БД:

$edit = mysql_fetch_array (mysql_query("SELECT * FROM report WHERE no='" . $_GET ['no'] . "' "));


Одна из интересующих нас записей - дата. В БД она храниться в формате yyyy-mm-dd, то есть сегодняшнее 5е апреля в базе - 2012-04-05 в поле под именем 'date'.

Я ещё не дружу с аяксом и прочими наворотами, по этому приходиться просить пользователей вбивать дату через обычный
<select>
(отдельно по селекту на год, месяц и день).

<label>День:<select name=date>
<option
value=01 >01</option>
__________________
<option value=31 >31</option>
</select>
</label>
<label>
месяц:
<select name=month>
<option
value=01 >Январь</option>
__________________
<option value=12 >Февраль</option>
</select>
</label>
<label>
год:
<select name=year>
<option
value=2009 >2009</option>
___________________
<option value=2012 >2012</option>
</select></label>


сразу скажу, что точная дата в этом проекте не очень критична, да и контингент юзверей приличный. Проверки ставить нет необходимости пока.

Все данные в том числе и дата вводятся назад в эту же форму, чтобы пользователь заново не вписывал всё, что он вписывал ранее. Данные, с которыми у нас проблем нет и соответствующие части формы упущены.

И так, разбиваем дату на нужные нам части:

$date = explode ('-', $edit[date]); //собственно, разбиваем по признаку дефиса
print_r ($date); //выводит Array ( [0] => 2012 [1] => 04 [2] => 05 )
$dday = array($date[2] => "selected"); //создаём массив, где ключ-текущая дата, значение - выбрано
$dmonth = array($date[1] => "selected");//то же для месяца
$dyear = array($date[0] => "selected");//и для года
print_r ($dyear);//Array ( [2012] => selected )
print_r ($dmonth);//Array ( [04] => selected )
print_r ($dday);//Array ( [05] => selected )

Теперь моя задача - выбрать именно ту опцию в селекте, которая нам надо:
<label>День:<select name=date>
<option
value=01 {$dday[01]}>01</option>
.....
<option value=31 {$dday[31]}>31</option>
</select>
</label>
<label>
месяц:
<select name=month>
<option
value=01 {$dmonth[01]}>Январь</option>
.....
<option value=12 {$dmonth[12]}>Февраль</option>
</select>
</label>
<label>
год:
<select name=year>
<option
value=2009 {$dyear[2009]}>2009</option>
.....
<option value=2012 {$dyear[2012]}>2012</option>
</select></label>


Но тут начинается САМОЕ интересное! Выбирается только год! Причём раньше не выбирался только месяц, а теперь, ещё и дата! Код в браузере:
.....
 <option value=03 >03</option>
<option
value=04 >04</option>
<option
value=05 >05</option>
.....
<option value=03 >Март</option>
<option
value=04 >Апрель</option>
<option
value=05 >Май</option>
.....
<option value=2011 >2011</option>
<option
value=2012 selected>2012</option>


Выбирается только год! Почему? Ни ошибок, ни предупреждений! Простите за много кода, но это для большей ясности картины. Буду крайне признателен, если кто выявит проблему.



Спустя 1 час, 22 минуты, 5 секунд (5.04.2012 - 17:21) Nikitian написал(а):
Непонятно чем и как вы формируете селекты. Есть подозрение, что проблема в предваряющем нуле у даты и месяца.

Спустя 1 минута, 37 секунд (5.04.2012 - 17:22) inpost написал(а):
Свойства надо в кавычки брать. Свойства аттрибутов тегов.

Спустя 5 дней, 17 часов, 31 минута, 53 секунды (11.04.2012 - 10:54) Rhiozan написал(а):
Спасибо! Действительно в нулях проблема. Буду ковыряться и пытаться решить.

UPD:
сделал так:

<option value=01 {$dmonth['01']}>Январь</option>


Заработало.

Ох уж эти нестрогие интерпретароты, которые в сочетании с таким нубьём как я дают такой результат :)

Всем спасибо!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.