Wyświetlanie zdarzeń pamiętnika pogrupowanych według dni w PHP / MySQL

Próbuję wyświetlić listę zdarzeń pamiętnika w PHP z bazy danych MySQL, ale pogrupowane według dni. Wytłumaczę.

To jest zrzut ekranu z tego, co mam do tej pory:

Jak widać, są dwa wydarzenia pamiętnika na 23 października 2012 r. I pokazują dwie ikony / reprezentacje kalendarza / cokolwiek. Właściwie chcę, aby po lewej stronie pokazana była jedna ikona kalendarza, ale lista wszystkich wydarzeń z tego dnia po prawej, aż do następnego dnia - jak widać w moim wrażeniu idiotów a̶r̶t̶i̶s̶t̶s̶ poniżej:

To jest kod, który właśnie napisałem, czy ktoś mógłby wskazać mi właściwy kierunek:

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

Nie szukając dokładnego kodu (chociaż byłby to spiffing), wystarczyłoby wyjaśnienie, jestem pewien, że mogę to z tego rozpracować.

FIX

Na końcu pętli WHILE dodałem:

$last_db_day = $row['entry_day'];

Następnie zawinął element kalendarza w:

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

questionAnswers(2)

yourAnswerToTheQuestion