Los condicionales pueden ser tu solución.
Es posible que ahora tu tabla sea:
<table>
Mientras SE_PUEDE_CONSULTAR
<tr>
<td>[celda con consulta]</td>
</tr>
fMientras
</table>
Solo tendrías que hacer que el <tr> </tr> se añadiera cada 4, cosa que se puede hacer con if's, lo puedes solucionar haciendo algo como:
<table>
$contador = 0;
while SE_PUEDE_CONSULTAR {
if contador == 0 {
<tr>
}
<td>[celda con consulta]</td>
contador = (contador + 1)%4;
if contador == 0 {
</tr>
}
}
if (contador != 0) </tr> // Si el bucle no es múltiplo de tamaño de fila, la tabla fila no se cerraría con </tr>
</table>
Aquí un ejemplo en funcionamiento (pero sin base de datos)
http://www.dagavi.es/prueba.php
El código en: http://pastebin.com/m6a4583f3