Como seus resultados já estão ordenados por data, você pode simplesmente armazenar a data anterior em uma variável e criar uma nova tabela toda vez que isso mudar.
$olddate = '';
while($row = mysql_fetch_array($result))
{
$fdate = date('M jS, Y l', strtotime($row['date']));
if ( $olddate != $fdate ) { // date has changed:
// end the previous table (if it exists)
if ( $olddate != '' ) {
echo "</table>"
}
// start the new table. Do something with $fdate here if you like
echo "
<h3>$fdate</h3>
<table border='1'>
<tr class='top'>
...
</tr>";
}
// print a row as before.
echo "<tr>";
....
}
// end the last table
echo "</table>";
Basicamente, a única coisa que mudou é que o
$fdate
é armazenado também em $olddate
. Quando processamos uma nova linha, se a data mudou (ie $olddate != $fdate
), criamos uma nova tabela. Para cada linha no resultado do mysql ainda geramos uma linha de tabela como antes (você pode querer fazer algumas mudanças como não incluir mais a coluna Date).