Tagebuchereignisse in PHP / MySQL nach Tagen gruppiert auflisten

Ich versuche, Tagebuchereignisse in PHP aus einer MySQL-Datenbank aufzulisten, aber nach Tagen gruppiert. Ich erkläre es.

Dies ist ein Screenshot von dem, was ich bisher habe:

Wie Sie sehen, gibt es für den 23. Oktober 2012 zwei Terminkalender mit zwei Kalendersymbolen / Darstellungen / was auch immer. Eigentlich möchte ich, dass links ein Kalendersymbol angezeigt wird, aber rechts alle Ereignisse dieser Tage bis zum nächsten Tag aufgelistet werden - wie in meiner Darstellung der Idioten unten zu sehen:

Dies ist der Code, den ich gerade geschrieben habe. Könnte mich jemand in die richtige Richtung weisen?

$SQL = "SELECT entry_id, entry_title, entry_body, entry_date, entry_day, entry_month, entry_year ";
$SQL .= "FROM pages_diary WHERE entry_month = :this_month AND entry_year = :this_year ";
$SQL .= "ORDER BY entry_date DESC;";
// PDO stuff
if ($STH->rowCount() > 0) {
    while($row = $STH->fetch()):
        $this_db_month_word = mktime(0, 0, 0, $row['entry_month']);
        $this_db_month_word = strftime("%b", $this_db_month_word);
        echo '<div class="diary_events_item" id="diary_events_item_'.$row['entry_id'].'">';
            echo '<div class="diary_events_item_left">';
                echo '<div class="calendar_wrap">';
                    echo '<div class="calendar_wrap_top">';
                        echo $this_db_month_word;
                    echo '</div>';
                    echo '<div class="calendar_wrap_bottom">';
                        echo str_pad($row['entry_day'],2,'0',STR_PAD_LEFT);;
                    echo '</div>';
                echo '</div>';
            echo '</div>';
            echo '<div class="diary_events_item_right">';
                echo '<strong>'.htmlspecialchars($row['entry_title']).'</strong><br>';
                echo '<p>'.htmlspecialchars($row['entry_body']).'</p>';
            echo '</div>';
            echo '<div class="clear"></div>';
        echo '</div>';
    endwhile;
} else {
    echo '<p>There are no diary entries logged for <strong>'.$this_month_word.' '.$this_year.'</strong>.</p>';  
}

Wenn ich nicht nach genauem Code suche (obwohl das sehr auffällig wäre), würde dies nur eine Erklärung bedeuten. Ich bin sicher, ich kann es daraus ableiten.

DIE REPARATUR

Am Ende der WHILE-Schleife habe ich hinzugefügt:

$last_db_day = $row['entry_day'];

Und wickelte dann das Kalenderelement in:

if ($last_db_day != $row['entry_day']) {
    echo '<div class="calendar_wrap_top">';
        echo $this_db_month_word;
    echo '</div>';
    echo '<div class="calendar_wrap_bottom">';
        echo str_pad($row['entry_day'],2,'0',STR_PAD_LEFT);;
    echo '</div>';
}

Antworten auf die Frage(2)

Ihre Antwort auf die Frage