scusa ma il mio codice è molto elementare e meno che non stai copiando a muzzo da cose già fatte

invece che mysql_fetch_array ho usato list e mysql_fetch_row, non vedo cos'altro c'è di diverso tranne ovviamente le parti per raggruppare per colore. Devi solamente tenere traccia della data del record precedente, se è differente viene incrementato $i in maniera tale che quando successivamente vai a calcolare il resto della divisione con 2 ottieni il cambio di colore

e se vuoi aggiungere una riga vuota

if ( $previousDate != $date ) {
if ( $previousDate != null ) {
print '<tr><td colspan="4">sono una riga vuota</td></tr>';
}
$previousDate = $date;
++$i;
}