è solo un problema di impaginazione:

fai un array con le iniziali:
$ini=Array('a','b',..........'z');

$output="<table>";

foreach($ini as $value){

$output.="<tr><td colspan....><a href=\"#".$value."\">[".$value."]</a></td></tr>";

$output.="<tr><td colspan....><a name=\"".$value."\"</a> Prodotti con la lettera".$value."</td></tr>";
$sql.......
query......
while(){

$output.="<tr><td>".$row['prodotto']."</td></tr>";
}
$output.="</table>";
}

Se però hai molti prodotti (migliaia) ci vuole un pò di tempo.