Ver Mensaje Individual
  #4 (permalink)  
Antiguo 04/12/2006, 04:16
Avatar de holahola
holahola
 
Fecha de Ingreso: mayo-2005
Ubicación: Móstoles - (Madrid)
Mensajes: 214
Antigüedad: 19 años
Puntos: 1
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&oacute;: ' 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&oacute;: ' 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.

Última edición por holahola; 04/12/2006 a las 06:17 Razón: Adaptado para que el ancho de las columnas sea igual