ГОД
--- Январь
-------- Событие1
-------- Событие2
--- Февраль
-------- Событие3
и т.д.
после с датой имеет тип datetime (т.е. 2009-04-08 00:00:00)
Делаю на php+mysql
Когда то давно видел по видео Евгения Попова, как он делал то что мне надо, но из-за этого не хочется весь видеокурс качать с инета...
Спустя 2 часа, 19 минут, 10 секунд (11.07.2009 - 19:24) FatCat написал(а):
ИМХО, проще всего в цикле счетчиками выводить.
Спустя 26 минут, 22 секунды (11.07.2009 - 19:50) FatCat написал(а):
PHP |
// Открываем соединение |
Как-то так.
Написал не проверяя; мои извинения, если где-то очепятки.
Спустя 14 часов, 46 минут, 16 секунд (12.07.2009 - 10:36) Adva написал(а):
Сделал вот такой запрос
SQL |
"SELECT * FROM `таблица` ORDER BY date" |
поправил вот эту строчку, потому что с ней не правильно пишет дату
PHP |
$new_m = intval(substr($r['date'],5,2); |
Должно было вывести вот так:
Цитата |
2008 --- Апрель -------- Событие 2009 --- Апрель -------- Событие --- Май -------- Событие |
А вывелось
Цитата |
2008 ---- Апрель ------- Событие 2009 ---- Событие ---- Май --------- Событие |
потому что if($new_m>$m) не соблюдается
--------------------------------
Вчера пока не увидел Вашего сообщения, сам пытался что-то сделать. Вот что получилось Правда у меня не такой красивый код и наверно жутко не оптимизированный)
Код |
$query = mysql_query("SELECT count(id) as count_y, date_format(date, '%Y') as date_year FROM `таблица` GROUP BY date_year") or die(mysql_error()); while($result = mysql_fetch_array($query)) { echo "<ul>".$result['date_year']." (".$result['count_y'].")"; $y1 = $result['date_year']."-01-01 00:00:00"; $y2 = $result['date_year']."-12-31 00:00:00"; $query2 = mysql_query("SELECT count(id) as count_id, date_format(date, '%m') as date_mes FROM `таблица` WHERE date >= '".$y1."' and date <= '".$y2."' GROUP BY date_mes") or die(mysql_error()); while($result2 = mysql_fetch_array($query2)) { echo "<ul><li>".$result2['date_mes'])." (".$result2['count_id']." )</li>"; $y3 = $result['date_year']."-".$result2['date_mes']."-01 00:00:00"; $y4 = $result['date_year']."-".$result2['date_mes']."-31 00:00:00"; echo "<ul>"; $query3 = mysql_query("SELECT * FROM `таблица` WHERE date >= '".$y3."' and date <= '".$y4."' ORDER BY date") or die(mysql_error()); while($result3 = mysql_fetch_array($query3)) { echo "<li>".$result3['name']."</li>"; } echo "</ul></ul>"; } echo "</ul>"; } |
Выводит все правильно, например
Цитата |
2007 (2) --- Апрель (2) ------- Событие ------- Событие 2008 (3) --- Апрель (1) ------- Событие --- Май (2) ------- Событие ------- Событие |
но 3 запроса и вложеные циклы для такой задачи это наверно слишком?!