Saludos cordiales a todos los usuarios de Forosdelweb.com. En esta ocasión quiero hacer una consulta acerca del tema de Paginación en PHP por consulta a base de datos MySQL. Ya antes realicé una consulta en este foro y me respondieron muy bien y correcto y por eso vuelvo a dar las gracias.
Sin dar más rodeos, vamos a la pregunta en sí.
Logré realizar un paginador con resultados más un buscador desde cero el cual funciona perfectamente. Ahora lo que deseo es que tales resultados se paginen en columnas. Es decir, algo así:
Código HTML:
<table>
<tr>
<td>$resultado</td>
<td>$resultado</td>
<td>$resultado</td>
</tr>
<tr>
<td>$resultado</td>
<td>$resultado</td>
<td>$resultado</td>
</tr>
<tr>
<td>$resultado</td>
<td>$resultado</td>
<td>$resultado</td>
</tr>
</table>
Para esto, dejo -por si acaso se necesite- el código del "form" del buscador primero:
Código HTML:
<form method="GET" action="/search/">
<input name="busqueda" type="text" value="<?php echo $_GET['busqueda'];?>" />
<input type="submit" name="btnBuscar" value="Buscar" />
</form>
Ahora dejo el código el cual está paginando hasta un máximo de 9 registros mostrado por página.
Código PHP:
<!-- PAGINACION !-->
<table width="100%" height="100%" border="0" cellpadding="0" cellspacing="0">
<?
//FILTRO//
if ($_REQUEST['busqueda']!="")
{
$filtro = "LIKE '%".$_REQUEST['busqueda']."%'";
//CONECTAR A BASE DE DATOS//
$con=mysql_connect("000webhost.com","usuario_joz","contraseña");
mysql_select_db("usuario_lugares", $con);
//OBTENEMOS LOS RESULTADOS//
$result = mysql_query("SELECT * FROM Departamentos WHERE Descripcion ". $filtro .";", $con);
// TOMAMOS LA CANTIDAD DE RESULTADOS
$total = mysql_num_rows($result);
// CANTIDAD DE RESULTADOS //
if ($total==0)
{ if ($_REQUEST['busqueda']!="")
$resultados=$_REQUEST['busqueda'];
echo "No se encontraron resultados para $resultados"
} else {
if ($_REQUEST['busqueda']!="")
$resultados=$_REQUEST['busqueda'];
echo "Se encontraron $total resultados para $resultados"
}
// PAGINAMOS //
$registros=9; //cantidad de resultados por pagina
//CALCULAMOS EL INICIO EN LA PRIMERA PAGINA//
if(isset($_GET['page'])){
$pagina=$_GET['page'];
}else{
$pagina=1;
}
if (is_numeric($pagina))
$inicio=(($pagina-1)*$registros);
else
$inicio=0;
// HACEMOS LA PAGINACION //
$result = mysql_query("SELECT * FROM Departamentos WHERE Descripcion ". $filtro ." LIMIT $inicio,$registros;", $con);
$paginas = ceil($total/$registros);
?>
<?php
if ($total!=0)
{
if ($fila = mysql_fetch_array($result));
do {
?>
<!-- INICIO DE FILAS !-->
<tr>
<td><?php echo $fila['Titulo'];?></td>
</tr>
<!-- FIN INICIO DE FILAS !-->
<?php
} while ($fila = mysql_fetch_array($result));
}
}
?>
</table>
<!-- FIN PAGINACION !-->
Y este es el código para el contador de resultados -entiéndase: Anterior, 1, 2..., Siquiente-
Código PHP:
<!-- ENLACES DE PAGINAS !-->
<table width="90%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>
<?
if ($paginas>1) // ANTERIOR
{
if ($pagina>1 && $paginas>1)
echo "<a href='index?page=". ($pagina-1) ."&busqueda=".$_REQUEST['busqueda']."'>Anterior</a> ";
else
echo "Anterior ";
}
if ($paginas>1) // NUMERACION
{
for ($cont=1;$cont<=$paginas;$cont++)
{
if ($cont==$pagina)
echo "$cont ";
else
echo "<a href='index?page=". $cont ."&busqueda=".$_REQUEST['busqueda']."'>$cont</a> ";
}
}
if ($paginas>1) // SIGUIENTE
{
if ($pagina<$paginas)
echo "<a href='index?page=". ($pagina+1) ."&busqueda=".$_REQUEST['busqueda']."'>Siguiente</a> ";
else
echo "Siguiente ";
}
?>
</td>
</tr>
</table>
<!-- ENLACES DE PAGINAS !-->
Lo que deseo lograr es que los 9 resultados por paginas se dividan en tres columnas en esta sección:
<!-- INICIO DE FILAS !--> <tr> <td><?php echo $fila
['Titulo'];
?></td> </tr> <!-- FIN INICIO DE FILAS !-->
Muchas gracias por sus respuestas, ojalá me puedan ayudar para terminar mi proyecto.