Eu uso uma código para uso pessoal que me gere uma página identica ao que procuras, só que neste caso não utilizo com SQL, mas sim com um ficheiro de texto...
Vou deixar aqui o código, pode ser que seja uma ajuda para ti se o adaptares para SQL.
<html>
<head><title>LOGFILE</title></head>
<body>
<?php
$txt = @file("record.txt");
if(!$txt) {
print "Sorry, this page is not avaiable!";
exit;
}
// count retorna o número de índices da tabela
$tot = count($txt);
?>
<table width="500" align="center" bgcolor="white" cellpadding="1" cellspacing="0">
<?php
for($i=0;$i<$tot;$i++) {
// ct vai ler o primeiro caractere da linha
$ct=$txt[$i][0];
// Chop elimina espaços do final da string e finais de linha também
$linha = Chop($txt[$i]);
// Seleciona a cor de fundo para a linha
if( $cor == "#FF33FF" ) $cor = "#FFCC33";
else $cor = "#FF33FF";
print "<tr><td bgcolor='$cor'>";
// strip_tags elimina todas as tags html e php, como fgetss
// se a linha começa com um *, le a partir do próximo caractere
// o ponto serve para concatenar as strings
if( $ct == "*" ) print "<b>".strip_tags(substr($linha,1))."</b>";
else print strip_tags($linha);
print "</td></tr>";
}
?>
</table>
</body>
</html>