Группировка в отчете сначало по году, потом по месяцу

Thomas

Новичок
столкнулся с такой проблемой
Есть таблица с полями:
1. Имя
2. Сумма
3. Дата

При этом хочу, чтобы получилась вот такая таблица:
Безымянный.jpg

Создаю запрос к БД:
PHP:
 $dates = array();
        $res = mysql_query("SELECT * FROM mmm ORDER BY ENTERED ASC");
Выбираю годы:

PHP:
 while($row=mysql_fetch_assoc($res))
        {
			// Cохраняем события в массиве, группируя их по годам:
            $dates[date('Y',strtotime($row['Дата']))][] = $row;
			
        }
        
        foreach($dates as $year=>$array)
			{
				// Цикл по годам:
				echo $year.'<br>';
                                           }
Скажите плиз, как можно решить эту задачу?
 

HEm

Сетевой бобер
PHP:
$year = 0; $old_year = 0;
while($row=mysql_fetch_assoc($res))
{
  $year = date('Y',strtotime($row['Дата']));
  if ($year <>$old_year) {
    if ($old_year>0) { echo "</table>"; }
    $old_year = $year;
    echo "<table><tr><th colspan=4>$year</th></tr>";
  }
// вывод месяцев, данных
 

Thomas

Новичок
Хочу уточнить по поводу моего вопроса:
1. Создаем таблицу:

PHP:
CREATE TABLE `Rt` (
  `ONAM` int(11) DEFAULT NULL,
  `SUMN` double(10,2) DEFAULT NULL,
  `DATS` date DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
2. Заполняем данными:

PHP:
INSERT INTO `Rt` VALUES ('1', '212.00', '2012-06-15');
INSERT INTO `Rt` VALUES ('332', '3212.00', '2012-06-14');
INSERT INTO `Rt` VALUES ('3', '3232.00', '2012-07-07');
INSERT INTO `Rt` VALUES ('87', '332.00', '2011-06-08');
INSERT INTO `Rt` VALUES ('23', '33.00', '2010-06-02');
3. SELECT * FROM Rt
а как вывести эти данные в том виде какой я описал, не знаю. ПОмогите новичку разобраться
 

baev

‹°°¬•
Команда форума
Thomas, после этого:
Выбираю годы:

PHP:
while($row=mysql_fetch_assoc($res))
{
// Cохраняем события в массиве, группируя их по годам:
$dates[date('Y',strtotime($row['Дата']))][] = $row;
— и этого:
— тему остаётся только закрыть.
Чтобы Вы своей ложью не отнимали напрасно время у участников форума.

Читайте http://www.rsdn.ru/Info/Howtoask.xml
 

Фанат

oncle terrible
Команда форума
— тему остаётся только закрыть.
Давай, все-таки, закрывать темы не сразу, а хотя бы после предупреждения. И только если оно будет проигнорировано - принимать какие-то санкции.

И суть нарушения я не понял. DATS вместо Дата? Это как-то влияет на сущность вопроса?
Давай из-за такой ерунды вопросы не будем закрывать?
 

Фанат

oncle terrible
Команда форума
Это вывод лет, результат этого запроса равен 1970
Да, это вывод лет.
Вывод месяцев делается аналогично.

про "результат этого запроса равен 1970" я не понял. Если это про твой же код со strtotime, то во-первых, эта функция абсолютно не нужна, а во-вторых, проверь формат даты в базе.

после этого год и месяц получай так

PHP:
list($y,$m,) = explode("-",$row['data']);
 

baev

‹°°¬•
Команда форума
Я извиняюсь — ступил.
Невнимательно на код посмотрел: показалось, что «$row['Дата']» — это обращение к значению, взятому из базы. А там на самом деле новый массив формируется…
 
Сверху