Archivo de la categoría: Programación

Buscador PHP-MYSQL con paginación

Buscador PHP-MYSQL con paginación

Vamos a crea un Buscador PHP-MYSQL con paginación, bien primero del todo vamos a ponernos en contexto:
Tengo una web (tienda on-line) con gran cantidad de productos y deseo que el usuario/cliente filtre por distintos criterios, con el fin de que encuentre el producto idóneo para el lo antes posible antes de que no abandone ante la abrumadora cantidad de productos disponibles, que en principio no se adaptan a las necesidades del cliente.
1) En nuestra pagina de inicio:


<?php //creamos cookie setcookie("criterio", $_POST['buscar'], time()+3600,"/",""); extract($_COOKIE); echo $criterio; //incluimos archivo conexión a nuestra B.D include('conexion.php'); $conectar=mysqli_connect($servidor,$usuario,$clave,$base_de_datos); if (mysqli_connect_errno()){ echo "Failed to connect to MySQL: " . mysqli_connect_error(); } ?>

<form id="buscador" name="buscador" method="post" action="buscador.php"> 
    	<input id="buscar" name="buscar" type="search" placeholder="Buscar aquí..." autofocus >
    	<input type="submit" name="buscador" class="...." value="buscar">
</form>

2) En la pagina action, en este caso buscar.php:

<?php
//variable cantidad registros
$consulta=mysqli_query($conectar,"select* from productos where nombre like '%$criterio%' order by nombre");
            
$nro_reg=mysqli_num_rows($consulta);
            
if ($nro_reg==0)
	echo 'Actualmente no existen programas';
            
$reg_por_pagina=4;
            
if(isset($_GET['pag'])){
	$nro_pagina=$_GET['pag'];
}else{
	$nro_pagina=1;
}
//forzamos a que el nº pagina sea un entero
settype($nro_pagina, 'integer'); 
if(is_numeric($nro_pagina))
	$inicio=($nro_pagina-1)*$reg_por_pagina;
else
	$inicio=0;
            
try {
	$consulta=mysqli_query($conectar,"select* from productos where nombre like '%$criterio%' order by nombre limit $inicio,$reg_por_pagina");
}
catch(Exception $e){
	echo('Error de conexión SQL'.mysqli_error());
	}
$max_paginas=ceil($nro_reg/$reg_por_pagina);
echo "
<table>
<tr>";
while($reg=mysqli_fetch_array($consulta)){
	echo "
<td>'$reg[id]'</td>

"
	     "
<td>'$reg[nombre]'</td>

"
	     "
<td><img src='$row[imagen]' width='150'/></td>

";		
	} 
echo "</tr>
</table>

";
?>

<?php if($nro_pagina>1)
	echo " <a href='buscar.php?pag=".($nro_pagina-1)."'>Anterior</a> ";
for($i=1;$i<=$max_paginas;$i++){ 
	if($i==$nro_pagina)
        	echo $i." ";
        else
            	echo "<a href='buscar.php?pag=$i'>$i</a> ";
	}

if($nro_pagina<$max_paginas)
	echo " <a href='buscar.php?pag=".($nro_pagina+1)."'>Siguiente</a> "
?> 

paginación-Buscador PHP-MYSQL con paginación
Con estos sencillos pasos, es fácil construir un buscador para nuestra web/blog, tan solo quedaría por hacer formatear con CSS los controles y la información extraída de la BD, cosa que dejo al gusto de cada uno, hasta luego.