Mostrar Resultados de una consulta a la base de datos en dos columnas

Escrito por Baluart.net el Viernes 17 de Marzo de 2006 a las 00:00hs

Muchos portales suelen mostrar sus noticias en dos columnas centrales, principalmente por cuestió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



  1. como se conectar las tres



  2. como lo hago con una cnexion a access cual seria el codigo fuente



  3. el codigo no me muestra el primer contenido de la consulta (haciendo un ORDER BY id DESC).
    hago un SELECT de los campos "titulo" dentro de una tabla y me muestra todos menos el utimo ingresado, como se puede solucionar eso?



  4. bien ya lo soluciones, el problema que tenia era en una seleccion por categorias, gracias por el codigo ^^

agregar comentario


Se permiten las etiquetas HTML <b>, <i> y <p>. Si ingresa alguna dirección web o dirección de email serán convertidos en enlaces automáticamente.





publicidad