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.