Mostrar Resultados de una Consulta a la Base de Datos en Dos columnas

baluart30 Marzo 2005 - 1:00am 11 comentarios
Enviar por Email Imprimir

Muchos portales suelen mostrar sus noticias en dos columnas centrales, principalmente por cusestión de diseño, por lo que en este artículo mostramos una de las maneras de mostrar los resultados de una consulta a la base de datos en dos columnas, mediante el uso de la cláusula LIMIT de MySQL y la función SPRINTF de PHP.

El resultado tendría la siguiente estructura (siguiendo la petición que leí en un foro):
columna1 | columna2
      1           |       4
      2           |       5
      3           |       6

En primer lugar, lo obvio, nos conectamos a la BD:

<?php
$hostname
= "localhost";
$database = "dos_columnas";
$username = "root";$password = "";
$connection = mysql_pconnect($hostname, $username, $password) or trigger_error(mysql_error(), E_USER_ERROR);
?>

Luego, lo relevante, realizamos la consulta:

<?php
mysql_select_db
($database, $connection);
$consulta = "SELECT columnas FROM tabla";
$limite_columna1 = sprintf("%s LIMIT %d, %d", $consulta, 0, 6); $resultados1 = mysql_query($limite_columna1, $connection) or die(mysql_error()); $columna1 = mysql_fetch_assoc($resultados1);
$limite_columna2 = sprintf("%s LIMIT %d, %d", $consulta, 6, 6);
$resultados2 = mysql_query($limite_columna2, $connection) or die(mysql_error());
$columna2 = mysql_fetch_assoc($resultados2);
?>

Como vemos, esta es una típica consulta a la Base de Datos con la diferencia que creamos un par de variables más: $limite_columna1 y $limite_columna2. En estas variables almacenamos los resultados de la función sprintf de PHP ¿Y para qué? Pues, mediante esta función damos formato a la array que nos devuelve la consulta, indicándole dos patrones que deben mostrarse:
%s: que el argumento sea tratado como una cadena y se presente como tal.
%d: que el argumento sea tratado como un entero y se presente con notación decimal

Pero algo muy importante es que gracias a esta función podemos emplear la cláusula LIMIT con la que indicamos que registros de la variable $consulta vamos a mostrar, para este ejemplo, 6 registros empezando por el registro 0, en la variable $limite_columna1 y 6 registros empezando por el registro 6, en la variable $limite_columna2.

Finalmente creamos el html con el bucle do … while, o el de su preferencia, para mostrar los resultados:

<table><tr><td>
<table border="0" cellpadding="0" cellspacing="0">
  <tr>
    <td>materia1</td>
  </tr>
  <?php do { ?>
  <tr>
    <td><?php echo $columna1['titulo']; ?></td>
  </tr>  <?php } while ($columna1 = mysql_fetch_assoc($resultados1)); ?>
</table>
</td>
<td><table border="0" cellpadding="0" cellspacing="0">
  <tr>
    <td>materia1</td>
  </tr>
  <?php do { ?>
  <tr>
    <td><?php echo $columna2['titulo']; ?></td>
  </tr>
  <?php } while ($columna2 = mysql_fetch_assoc($resultados2)); ?></table>
</td></tr></table>

Muy simple, verdad?

Comentarios

Imagen de jenniferlopez
jenniferlopez

Es muy bueno pero a un no responden mis dudas .Quiero que me ayuden con esta consulta:Tengo una pagina donde se insertara un dato, tengo atrapar ese dato para realizar un select a la base datos y mostrar los resultados.Por favor ayudenme. Chao

Imagen de Anonymous
Anonymous

Seria bueno programar de forma mas estructurada...

Imagen de Balu

Usa la clausula INSERT de MySQL. Por ejemplo lee este tutorial de ajax, aunque es mucho más avanzado de lo que quieres, te puede servir. Saludos.

Imagen de Estuardo
Estuardo

El codigo esta muy bueno pero quesiera saber como hago para hacer una paginacion con estas 2 columnas de datos .......de antemano gracias ..........

Imagen de gerardo
gerardo

hola Estuardo  por curiosidad no has encontrado alguna forma de paginar este codigosaludos gracias

Imagen de elmonp
elmonp

hey...ya logre meterlo para que trabaje a dos columnas centrando y justificando los resultados...alguien sabe como metele a que trabaje con el de paginacion???ahi va el codigo que hice///////////////////////////////////////////////////<p>  <?php//conexion a la base de datos$connect=mysql_connect("","user","user") or die ("No se puede conectar a la base de datos");//asegurarnos que usamos la base que queremosmysql_select_db("base", $connect);//la consulta para doble clumna//mysql_select_db($database, $connection);$query="SELECT aviso FROM aviso"; $limite_columna1=sprintf("%s LIMIT %d,%d",$query,0,15); $resultados1=mysql_query($limite_columna1,$connect) or die(mysql_error()); $columna1=mysql_fetch_assoc($resultados1); $limite_columna2=sprintf("%s LIMIT %d, %d",$query,15,15);$resultados2=mysql_query($limite_columna2, $connect) or die(mysql_error()); $columna2 = mysql_fetch_assoc($resultados2);?></p><table width="693" height="303" border="1">  <!--DWLayoutTable--><tr><td width="337" height="297" valign="top"><div align="justify">  <?php //insertado1 while ($row = mysql_fetch_array($resultados1)) { extract ($row); echo $aviso; echo "<br>"; echo "<CENTER>- - - - - - - - - - - - - - - - - - -</CENTER>"; //echo "<br>"; }?></div>  <div align="justify"></div></td><td width="8">&nbsp;</td><td width="333" height="297" valign="top"><div align="justify">  <?php//insertado2 while ($row = mysql_fetch_array($resultados2)) { extract ($row); echo $aviso; echo "<br>"; echo "<CENTER>- - - - - - - - - - - - - - - - - - -</CENTER>"; //echo "<br>"; }?></div>  </td>  </tr></table>////////////////////////////////////////////////////////////////////////////////////////////

Imagen de Bal
Imagen de 3d

como hago para que las columnas muestren todos los registros de la busqueda en dos filas es decir si tengo 50 registros los muestre en dos columnas de 25

Imagen de javierurbina

gracias por el aporte .peo tengo una duda de que manera haces que los resultados de la consulta a  la base de datos se dividan en 2 y lo que queda lo pasas a una tabla que esta al lado de la primera..bueno aun n entiendo muy bien como tratas los resultados de la consulta ,....lo que yo necesito hacer es que los resultados aparezcan en 3 columnas y uego paginar los resultados para que aparezcan 9 por pagina ..bueno espero su ayuda ..Saludos Bal

Imagen de javierurbina

    creo que empiezo a entender ....entonces l que haces es darle un echo a las 6 primeros elemntos de la contulta comenzando or el 6 luego a los 6 siguientes comenzando por el 6 ..no es asi????..pero eso es siempre y cuando tegas una cantidas pre definida de registros en la base de datos pero si estos fueran mayorees o menores ...como trataria los resutados esta funcion..?¨?????'

Imagen de dannet

Buen método, gracias por compartirlo.

Tutoriales

Cómo descargar videos de VK.com
En este artículo voy a explicar como descargar videos y películas...
Descargar Facebook Móvil Gratis
Por si aún no lo han hecho, es posible descargar Facebook Móvil...
Cómo generar tráfico web con las redes sociales - Paso a Paso
Muchas empresas están publicando contenidos como la forma de crear...

Artículo Recomendado

3 Tips cruciales para recuperar archivos eliminados
¿Te imaginas perder el trabajo de toda una semana en tan solo unos segundos? Todos hemos pasado por este problema. Quizás eliminamos por error un archivo importante o lo borramos sin pensar que era valioso para otro... más