Я наткнулся на проблему, которую, как мне казалось, легко решить, но, похоже, сводит меня с ума. Итак, я пытаюсь отсортировать некоторые записи MySQL по времени, а затем как бы «сгруппировать» их по дате. Например, вот мои данные MySQL:
+----+------------+----------+---------------------------+--------+
| id | date | time | entry | status |
+----+------------+----------+---------------------------+--------+
| 21 | 2011-10-05 | 09:42:06 | All systems online. | 1 |
| 22 | 2011-10-05 | 09:43:09 | Maintenance starting. | 2 |
| 23 | 2011-10-04 | 08:42:06 | Systems online and ready. | 1 |
| 24 | 2011-10-05 | 09:44:30 | Systems are offline. | 0 |
+----+------------+----------+---------------------------+--------+
Итак, запрос, который я использую для сортировки всего, следующий:
SELECT * FROM status order by date ASC;
Что дает следующие результаты:
+----+------------+----------+---------------------------+--------+
| id | date | time | entry | status |
+----+------------+----------+---------------------------+--------+
| 21 | 2011-10-05 | 09:42:06 | All systems online. | 1 |
| 22 | 2011-10-05 | 09:43:09 | Maintenance starting. | 2 |
| 24 | 2011-10-05 | 09:44:30 | Systems are offline. | 0 |
| 23 | 2011-10-04 | 08:42:06 | Systems online and ready. | 1 |
+----+------------+----------+---------------------------+--------+
Вывод PHP вот в чем проблема. Итак, выход ПРЯМО СЕЙЧАС:
4 октября 2011 г.
5 октября 2011 г.
Все системы в сети. [09:42 AM]
Начало технического обслуживания. [09:43]
Системы отключены. [09:44]
Я ХОЧУ, чтобы результат был:
5 октября 2011 г. - Системы отключены. [09:44 AM]
Начало технического обслуживания. [09:43]
Все системы в сети. [09:42 AM]
4 октября 2011 г.
По сути, я хочу, чтобы все было сгруппировано по дате (сначала последнее), и я хочу, чтобы самое последнее время было вверху, а не внизу.
Вот мой код PHP:
function getUpdates() {
global $db;
$updchk = "";
$entries = $db->GetAll("SELECT * FROM status order by date DESC;");
if (!$entries) { ?>
<p>No entries in the database, yet.</p>
<?php } else
foreach ($entries as $entry) {
if (ConvertDate($entry['date']) != $updchk) { ?>
<h4><?php echo ConvertDate($entry['date']); ?></h4>
<p><?php echo $entry['entry']; ?><span class="timestamp"> [<?php echo strftime('%I:%M %p', strtotime($entry['time'])); ?>]</span></p>
<?php $updchk = ConvertDate($entry['date']); ?>
<?php } else { ?>
<p><?php echo $entry['entry']; ?><span class="timestamp"> [<?php echo strftime('%I:%M %p', strtotime($entry['time'])); ?>]</span></p>
<?php }
} ?>
<?php } ?>
Любая помощь приветствуется.
Спасибо!