Допустим, у меня есть куча записей в MySQL, что-то вроде этого:
ID |ДАТА |НАЗВАНИЕ
1 |1961-03-21 |Кошки
2 |1964-02-05 |Собаки
3 |1976-11-30 |Мыши
4 |1979-09-14 |Обезьяны
Что бы вы предложили в качестве способа вытащить все записи и отразить каждый из них в группе своего десятилетия?То есть я хочу, чтобы они были организованы даже в 10-летние промежутки, вроде как:
1960-е
запись 1
запись 2
1970-е
запись 3и т. д. и т. д.
В идеале, он будет распечатывать «десятилетние ярлыки» только в том случае, если на самом деле присутствует запись того десятилетия.
MySQL Group By не выглядит правильным.Как насчет цикла while со встроенным тестом if с использованием какого-либо математического теста для каждого года?
Я изо всех сил пытаюсь придумать что-нибудь элегантное, масштабируемое и многократно используемое в случае, если я не знаю, какие десятилетия (или столетия) будут присутствовать.
============ ОБНОВЛЕНИЕ =============
Используя предложение, предоставленное Col Shrapnel, это то, что я написал.Это именно то, что мне нужно.(Может ли это быть значительно более элегантно?)
<?php
// perform Query, sort by date, get your results, then...
$lastDecade = 0;
while($row = mysql_fetch_array($rows->list))
{
$currentYear = date("Y",strtotime($row['date']));
$currentDecade = floor((int)$currentYear/10)*10;
if($currentDecade>$lastDecade)
{
echo "<h1>" . $currentDecade . "</h1>";
$lastDecade = $currentDecade;
}
echo "<h2>" . $row['title'] . "</h2>";
}
?>