Yo he hecho algo parecido pero con dos columnos es simple la forma en que lo hago:
Cita: //numero de consultas
if($num_img > 0)
{
//escribo el encabezado de la tabla
echo'<div id="Layer1">
<table width="539" height="83" border="0">
<tr>
<td colspan="2" align="center"><span class="Estilo1">'.$titulo.'</span></td>
</tr>';
//yo recorro aqui un array, con froeach pero cambialo por while($A=mysql_fetch_array($sql))
//o algo asi
foreach($A_img as $n => $valor)
{
$ruta="../xxx/$valor";
if($aux%2==0)
{
if($aux_tr%2==0)
{
echo'<tr>';
}
else
{
echo'</tr>';
}
$aux_tr++;
}
else
{
}
$aux++;
echo'
<td>'.Aqui lo que imprimes.'</td>';
}
echo'</table></div>';
}
si quieres en tres columnas deberas cambiar los varlores donde condiciono con MOD(%)
Espero sirva de algo menos.