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

Форум MySQL

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

 

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

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

тема: Дата в базе данных
 
 автор: Dizels   (19.10.2007 в 20:42)   письмо автору
 
 

В таблице есть столбец, куда записывается дата рождения пользователя.

  `bithday` date NOT NULL default '0000-00-00',

Сейчас делаю менюшку, где пользователь может редактировать данные о себе, ну и возник вопрос, как собственно разделить день, месяц и год на разные переменные?

Если не понятно пояснил, то покажу на примере(сам код этой менюшки выдумал не я а взял из книги):

<tr>
<td>Дата рождения :</td>
<td>
<?php
     
// Выпадающий список для дня
     
echo "<select class=input type=text name='date_day'>";
     for(
$i 1$i <= 31$i++)
     {
       if(
$date_day == $i$temp "selected";
       else 
$temp "";
       echo 
"<option value=$i $temp>".sprintf("%02d"$i);
     }
     echo 
"</select>";
     
// Выпадающий список для месяца
?>
<select name =date_month>
<option value=1>Январь (01)</option>
<option value=2>Февраль (02)</option>
<option value=3>Март (03)</option>
<option value=4>Апрель (04)</option>
<option value=5>Май (05)</option>
<option value=6>Июнь (06)</option>
<option value=7>Июль (07)</option>
<option value=8>Август (08)</option>
<option value=9>Сентябрь (09)</option>
<option value=10>Октябрь (10)</option>
<option value=11>Ноябрь (11)</option>
<option value=12>Декабрь (12)</option>
<?php
     
// Выпадающий список для года
     
echo "<select class=input type=text name='date_year'>";
     for(
$i 1940$i <= 2010$i++)
     {
       if(
$date_year == $i$temp "selected";
       else 
$temp "";
       echo 
"<option value=$i $temp>$i";
     }
     echo 
"</select><br>";
?>
</td>
</tr>

Вот форма выбора даты рождения, собственно еще 2 вопроса появилось:
1) Почему в IE форма года не показывается, а идет простой перебор чисел
2) А как собственно вставить эти переменные, если под значения value уже забиты другие переменные?

   
 
 автор: hell_riser   (19.10.2007 в 21:10)   письмо автору
 
   для: Dizels   (19.10.2007 в 20:42)
 

ИМХО проще всего в БД изменить тип поля на CHAR(10) и записывать в формате 31.12.2007

<?php
$date 
$date_day.".".$date_month.".".$date_year;
?>

и в базу писать переменную $date/

   
 
 автор: Dizels   (19.10.2007 в 21:28)   письмо автору
 
   для: hell_riser   (19.10.2007 в 21:10)
 

Ну хорошо - в базе будет переменная $date а как потом то из базы вынимать это значение и раздельть его?

   
 
 автор: hell_riser   (19.10.2007 в 22:01)   письмо автору
 
   для: Dizels   (19.10.2007 в 21:28)
 


<?php
$birth_date 
explode("."$date);
$birth_day $birth_date[0];
$birth_month $birth_date[1];
$birth_year $birth_date[2];
?>

Просто ИМХО возиться с форматированием даты и времени просто не логично

   
 
 автор: Dizels   (19.10.2007 в 22:02)   письмо автору
 
   для: hell_riser   (19.10.2007 в 22:01)
 

hell_riser, спасибо

   
 
 автор: Dizels   (19.10.2007 в 22:25)   письмо автору
 
   для: Dizels   (19.10.2007 в 22:02)
 

Остался без ответа вопрос:
1) Почему в IE форма года не показывается, а идет простой перебор чисел

   
 
 автор: Dizels   (20.10.2007 в 17:01)   письмо автору
 
   для: Dizels   (19.10.2007 в 22:25)
 

?

   
 
 автор: EXP   (20.10.2007 в 17:47)   письмо автору
 
   для: Dizels   (20.10.2007 в 17:01)
 

можно не менять тип поля
`bithday` date NOT NULL default '0000-00-00' 
<?
 
# непонятно какая вся таблица 
// но можно выбирать примерно так
$sql 'SELECT id, DAYOFMONTH( bithday ) AS day, MONTH( bithday ) AS mount, YEAR( bithday ) AS year
FROM tab WHERE id = ' 
$id ';';

и В <select class=input type=text name='date_year'> нехватает </option>

   
 
 автор: Dizels   (21.10.2007 в 23:22)   письмо автору
 
   для: EXP   (20.10.2007 в 17:47)
 

изменил вот так:

     echo "<select class=input type=text name='date_year'>";
     for($i = 1940; $i <= 2010; $i++)
     {
       if($birth_year == $i) $temp = "selected";
       else $temp = "";
       echo "<option value=$i $temp>$i</option>";
     }
     echo "</select><br>";

Но проблема с отображением в IE осталась:(

   
 
 автор: kemer   (22.10.2007 в 12:19)
 
   для: Dizels   (19.10.2007 в 20:42)
 


<?php 
     
// Выпадающий список для дня 
     
echo "<select class=input type=text name='date_day'>"
     for(
$i 1$i <= 31$i++) 
     { 
       if(
$date_day == $i$temp "selected"
       else 
$temp ""
       echo 
"<option value=$i $temp>".sprintf("%02d"$i); 
     } 
     echo 
"</select>"
     
// Выпадающий список для месяца 
?> 
<select name =date_month> 
<option value=1>Январь (01)</option> 
<option value=2>Февраль (02)</option> 
<option value=3>Март (03)</option> 
<option value=4>Апрель (04)</option> 
<option value=5>Май (05)</option> 
<option value=6>Июнь (06)</option> 
<option value=7>Июль (07)</option> 
<option value=8>Август (08)</option> 
<option value=9>Сентябрь (09)</option> 
<option value=10>Октябрь (10)</option> 
<option value=11>Ноябрь (11)</option> 
<option value=12>Декабрь (12)</option> 
у тебя не хватает : </select>
<?php 
     
// Выпадающий список для года 
     
echo "<select class=input type=text name='date_year'>"."\r\n"
     for(
$i 1940$i <= 2010$i++) 
     { 
       if(
$birth_year == $i$temp "selected"
       else 
$temp ""
       echo 
"<option value=$i$temp>$i</option>"."\r\n"
     } 
     echo 
"</select><br>"
     
     
?> 

   
Rambler's Top100
вверх

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