Mi sono imbattuto in un problema che pensavo sarebbe stato facile da risolvere, ma sembra che mi stia facendo impazzire. Quindi, sto cercando di ordinare alcuni record MySQL di volta in volta, e poi li "raggruppo" per data. Ad esempio, ecco la mia dati MySQL:PHP/MySQL: Ordina per ora, poi per data
+----+------------+----------+---------------------------+--------+
| 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 |
+----+------------+----------+---------------------------+--------+
Quindi, la domanda che uso per ottenere tutto ordinato è:
SELECT * FROM status order by date ASC;
che produce i seguenti risultati:
+----+------------+----------+---------------------------+--------+
| 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 |
+----+------------+----------+---------------------------+--------+
L'output PHP è il problema. Così, l'uscita in questo momento è:
4 ott 2011
- sistemi on-line e pronto. [08:42]
5 ott 2011
Tutti i sistemi on-line. [09:42 AM]
Inizio manutenzione. [09:43 AM]
I sistemi sono offline. [09:44]
quello che voglio l'output di essere:
5 ottobre 2011 - I sistemi sono in linea. [09:44 AM]
Inizio manutenzione. [09:43 AM]
Tutti i sistemi online. [09:42]
4 ottobre 2011
- sistemi on-line e pronto. [08:42 AM]
Fondamentalmente, sto volendo tutto raggruppato per data (ultimo per primo) e voglio il tempo più recente in alto, non in basso.
Ecco il mio codice 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 } ?>
Ogni aiuto è apprezzato.
Grazie!
Wow, è stato facile. – drewrockshard
+1 per la tua velocità! ;) – JellyBelly