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

  • Автор темы Автор темы Thomas
  • Дата начала Дата начала

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>';
                                           }

Скажите плиз, как можно решить эту задачу?
 
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>";
  }
// вывод месяцев, данных
 
Хочу уточнить по поводу моего вопроса:
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
а как вывести эти данные в том виде какой я описал, не знаю. ПОмогите новичку разобраться
 
Thomas, после этого:
Выбираю годы:

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

Читайте http://www.rsdn.ru/Info/Howtoask.xml
 
— тему остаётся только закрыть.
Давай, все-таки, закрывать темы не сразу, а хотя бы после предупреждения. И только если оно будет проигнорировано - принимать какие-то санкции.

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

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

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

PHP:
list($y,$m,) = explode("-",$row['data']);
 
Я извиняюсь — ступил.
Невнимательно на код посмотрел: показалось, что «$row['Дата']» — это обращение к значению, взятому из базы. А там на самом деле новый массив формируется…
 
Сверху