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

Форум MySQL

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

 

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

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

тема: вывод дней рождения
 
 автор: MikeSVB   (23.09.2009 в 11:25)   письмо автору
 
 

есть база данных где указаны дни рождения формата 1985-03-24 и так у каждого пользователя.

Хочу сделать список всех дней рождения пользователей сайта.

Выборку по месяцу делаю. типа

select * from `users` WHERE `birthday` LIKE '%-".$r."-%'


где $r это номер месяца

хочу сделать сортировку по дню рождения (не по году а по дню)

Подскажите. как сделать.?

можно ли выбрать сортируя в запросе из базы или сортировать массив-результат в php?

  Ответить  
 
 автор: MikeSVB   (23.09.2009 в 11:46)   письмо автору
 
   для: MikeSVB   (23.09.2009 в 11:25)
 

спс если попытались подумать, но вопрос уже решён. )))

  Ответить  
 
 автор: DJ Paltus   (23.09.2009 в 11:49)   письмо автору
 
   для: MikeSVB   (23.09.2009 в 11:25)
 

Дык

select * from `users` WHERE `birthday` LIKE '%-".$r."-%' order by birthday


дата в таком формате как раз по дню отсортируется, а потом по месяцу, а потом по году.

  Ответить  
 
 автор: Trianon   (23.09.2009 в 13:06)   письмо автору
 
   для: DJ Paltus   (23.09.2009 в 11:49)
 

'1985-03-24' ?
С чего бы это ?

  Ответить  
 
 автор: MikeSVB   (24.09.2009 в 09:29)   письмо автору
 
   для: Trianon   (23.09.2009 в 13:06)
 

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

решил проблебу выборкой из базы по месяцу после добавлял в массив по дате, и вывел в порядке возрастания

5 строчек вышло и не грузит скрипт.

  Ответить  
 
 автор: Valick   (24.09.2009 в 09:41)   письмо автору
 
   для: MikeSVB   (24.09.2009 в 09:29)
 

у вас спросили почему число 24? что за календарь такой?
Тип поля DATE?
_____
пипец... даже удалять не стал... ну нет у меня в марте 24 числа
всё... башка не варит... смотрите, смейтесь, тыкайте пальцем... так мне и надо...

  Ответить  
 
 автор: Valick   (24.09.2009 в 10:38)   письмо автору
 
   для: MikeSVB   (24.09.2009 в 09:29)
 

Кстати почему для выборки вы используете LIKE, а если понадобится вывести дни рождения за два месяца или за три месяца? Или от текущей даты до конца месяца?

SELECT * FROM `users`
                   WHERE `birthday` 
                   BETWEEN '$start' AND '$end'
                   ORDER BY birthday;

  Ответить  
 
 автор: Trianon   (24.09.2009 в 12:04)   письмо автору
 
   для: Valick   (24.09.2009 в 10:38)
 

Ну а еще подумать?

  Ответить  
 
 автор: Valick   (24.09.2009 в 13:06)   письмо автору
 
   для: Trianon   (24.09.2009 в 12:04)
 

дальше думалка пока слабовата, дальше методом н. т. (т.е. нужно больше практики)

  Ответить  
 
 автор: Trianon   (24.09.2009 в 13:25)   письмо автору
 
   для: Valick   (24.09.2009 в 13:06)
 

В табличном результате поля `birthday` оказались заполнены следующими значениями:
1980-03-20
1985-06-20
1990-04-15
1995-07-15
2000-05-10
2005-08-10


Предложите, пожалуйста, такие значения переменных $start и $end, чтобы запрос
$sql = "SELECT * FROM `users`
                   WHERE `birthday` 
                   BETWEEN '$start' AND '$end'
                   ORDER BY birthday"; 

оказался в состоянии выбрать родившихся в летние месяцы.

  Ответить  
 
 автор: Valick   (24.09.2009 в 13:36)   письмо автору
 
   для: Trianon   (24.09.2009 в 13:25)
 

намёк понял

$start="6";
$end ="8";
$sql = "SELECT * FROM `users`
                   WHERE MONTH(birthday) 
                   BETWEEN '$start' AND '$end'
                   ORDER BY RIGHT(`birthday`, 5), `birthday`";

  Ответить  
 
 автор: Valick   (24.09.2009 в 15:09)   письмо автору
 
   для: Trianon   (24.09.2009 в 13:25)
 

ы... сегодня мой день!
продолжаю тормозить...

  Ответить  
 
 автор: Trianon   (24.09.2009 в 15:13)   письмо автору
 
   для: Valick   (24.09.2009 в 15:09)
 

>ы... сегодня мой день!

рождения? :)

  Ответить  
 
 автор: Trianon   (24.09.2009 в 12:03)   письмо автору
 
   для: MikeSVB   (24.09.2009 в 09:29)
 

Хранится там всё правильно.
И ORDER BY , который я показал, должен был вывести список в нужном Вам порядке.
Чего решать-то?

  Ответить  
 
 автор: Trianon   (23.09.2009 в 13:08)   письмо автору
 
   для: MikeSVB   (23.09.2009 в 11:25)
 

сотрировку можно сделать по любой функции.
к примеру ORDER BY RIGHT(`birthday`, 5), `birthday`

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

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