Probablemente ya no lo necesites, pero te lo dejo aquí por si te sirve a ti o a otro.
No se si este método es más fácil, pero creo que es muy claro y te permitirá listar las filas de una tabla con el número de columnas que quieras. El siguiente script lleva dos procesos de listado de la tabla, diferentes: el primero es el tradicional, que lista cada fila de la tabla en una linea; el segundo la lista en columnas (creo que es lo que querías).
Código PHP:
<?php
// Conexion, seleccion de base de datos
$enlace = mysql_connect('host', 'usuario', 'pass')
or die('No pudo conectarse : ' . mysql_error());
mysql_select_db('tu base de datos') or die('No pudo seleccionarse la BD.');
/*****************************************************************************************
PRIMERA PARTE: lista cada fila en una linea (forma habitual)
*****************************************************************************************/
echo '<br>Listado de la tabla, una linea por fila';
$ssql = 'SELECT * FROM departamentos';
$resultado = mysql_query($ssql) or die('La consulta falló: ' . mysql_error());
echo '<table border="1">';
while ($row = mysql_fetch_array($resultado))
{
echo '<tr>';
echo '<td>'.$row[id].'</td>';
echo '<td>'.$row[nombre].'</td>';
echo '<td>'.$row[fecha].'</td>';
echo '</tr>';
}
echo '</table>';
mysql_free_result($resultado);
/*****************************************************************************************
SEGUNDA PARTE: lista cada fila, en una columna (por defecto 3 columnas)
$tope indica el número de columnas (se puede variar)
*****************************************************************************************/
echo '<hr><br>Listado de la tabla, cada fila en una columna';
$ssql = 'SELECT * FROM departamentos';
$resultado = mysql_query($ssql) or die('La consulta falló: ' . mysql_error());
echo '<table width=65% border="1">';
$contador=0;
$tope=3; //-numero de columnas
while ($row = mysql_fetch_array($resultado))
{
if ($contador > $tope-1)
{
//-aqui se imprimen las filas en columnas
listar($array,$contador,$tope);
//-una vez imprimidas, se inicializa la tabla y contador
$array=array();
$contador=0;
}
//-se van cargando cada fila en la tabla
$array[$contador]=$row;
++$contador;
}
//-si el número de filas no es múltiplo de $contador, sacar las últimas que faltan
if (count($array) > 0)
{
//-aqui se imprimen las que faltan
listar($array,$contador,$tope);
}
echo '</table>';
mysql_free_result($resultado);
// Cerrar la conexion
mysql_close($enlace);
/*****************************************************************************************
funcion que lista las filas de la tabla, por columnas
*****************************************************************************************/
function listar($array,$contador,$tope){
$width=100/$tope;
echo '<tr bgcolor="FFD700">';
for ($i = 0; $i < $contador; $i++)
{
echo '<td width='.$width.'%>'.$array[$i][id].'</td>';
}
echo '</tr>';
echo '<tr>';
for ($i = 0; $i < $contador; $i++)
{
echo '<td width='.$width.'%>'.$array[$i][nombre].'</td>';
}
echo '</tr>';
echo '<tr>';
for ($i = 0; $i < $contador; $i++)
{
echo '<td width='.$width.'%>'.$array[$i][fecha].'</td>';
}
echo '</tr>';
}
?>
Como ves, sólo necesitar hacer una única select a tu tabla. Un saludo.