Búsqueda y paginación PHP usando PDO
Búsqueda y paginación PHP usando PDO. La búsqueda y la paginación de resultados MySQL es una funcionalidad imprescindible. Por lo tanto, con ello podemos controlar grandes volúmenes de información. En este artículo, implementaremos un pequeño sistema una paginación dinámica usando PHP PDO.
En cualquier proyecto web enfocado a mostrar resultados es muy necesario este método. La paginación es muy usada para filtrar información por partes en nuestro sistema.
Búsqueda y paginación PHP usando PDO
Su funcionamiento se base en una búsqueda general para filtrar todos los datos de la columna por la palabra clave ingresada. Hemos dividido el contenido por tres resultados por página y los enlaces con números de páginas se encuentran en la parte inferior de los resultados.
Recursos y librerías que utilizaremos
- PHP PDO para buscar y mostrar resultados de la base de datos.
- Gestor de base de datos MySQL, lugar donde almacenaremos la información para su consulta respectiva.
- Lenguaje de marcas HTML5
- Librería Bootstrap para darle estética a nuestro ejemplo.
Crear la base de datos «php_articulos» y su respectiva tabla «articulos»
CREATE TABLE `articulos` ( `id` int(8) NOT NULL, `articulo_titulo` varchar(230) DEFAULT NULL, `descripcion_ar` varchar(250) DEFAULT NULL, `articulo_ar` date DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT; -- -- Volcado de datos para la tabla `articulos` -- INSERT INTO `articulos` (`id`, `articulo_titulo`, `descripcion_ar`, `articulo_ar`) VALUES (1, 'El mago de Oz', 'Cuenta la leyenda de un mago que vivio en un bosque.', '2018-03-26'), (2, 'El secreto de cala', 'Los grande que albergaba a cientos de familias.', '2018-03-25'), (3, 'El mago de Boca', 'La historia mago que vivio en un bosque.', '2018-03-24'), (4, 'El secreto encantado', 'El tesoro mas grande que albergaba a cientos de familias.', '2018-03-23'), (5, 'El mago de class', 'El trofeo de un mago que vivio en un bosque.', '2018-03-22'), (6, 'El secreto de las marianas', 'Secretos de magadascar', '2018-03-21'), (7, 'El domador x', 'Los mas grandes domadores de circo', '2018-03-20'), (8, 'El mas fuerte', 'La lista de los hombres mas fuertes', '2018-03-19'); -- -- Indices de la tabla `articulos` -- ALTER TABLE `articulos` ADD PRIMARY KEY (`id`); ALTER TABLE `articulos` MODIFY `id` int(8) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=9;
Opción de búsqueda del sistema
La caja de búsqueda se encuentra en la parte derecha superior, se utiliza para hacer la búsqueda entre todas las columnas de la base de datos. Si el motor de búsqueda encuentra algún indicio similar, lo mostrara como resultados.
<div class="row"><div class="col-lg-6"></div> <div class="col-lg-6"> <div class="input-group"> <input type="text" class="form-control" placeholder="Busqueda..." name='search[keyword]' value="<?php echo $search_keyword; ?>" id='keyword' maxlength='25'> <span class="input-group-btn"> <button class="btn btn-default" type="button"><span class="glyphicon glyphicon-search"></span></button> </span> </div><!-- /input-group --> </div><!-- /.col-lg-6 --> </div><!-- /.row -->
Codificación en PHP de la busqueda
function verfecha($vfecha) { $fch=explode("-",$vfecha); $tfecha=$fch[2]."-".$fch[1]."-".$fch[0]; return $tfecha; } $search_keyword = ''; if(!empty($_POST['search']['keyword'])) { $search_keyword = $_POST['search']['keyword']; } $sql = 'SELECT * FROM articulos WHERE articulo_titulo LIKE :keyword OR descripcion_ar LIKE :keyword OR articulo_ar LIKE :keyword ORDER BY id DESC '; /* Pagination Code starts */ $per_page_html = ''; $page = 1; $start=0; if(!empty($_POST["page"])) { $page = $_POST["page"]; $start=($page-1) * NRO_REGISTROS; } $limit=" limit " . $start . "," . NRO_REGISTROS; $pagination_statement = $pdo_conn->prepare($sql); $pagination_statement->bindValue(':keyword', '%' . $search_keyword . '%', PDO::PARAM_STR); $pagination_statement->execute();
Listar registros con paginación incluida
Primeramente calcular el total de páginas utilizando el total de registros en la base de datos. Por lo tanto, nos basamos en estos datos para mostrar los registros. También, hemos creado los vínculos de paginación y lo mostraremos en la parte inferior de los registros mostrados.
CONCLUSION
La paginación de resultados en muy importante para nuestros proyectos y más aún si son desarrollados con PHP PDO al estar en la vanguardia en la última tecnología para conexión con la base de datos. Muy sencillo de implementar, les dejo el comprimido para que descarguen.
Hola, quiero ocultar la tabla. solo mostrarla cuando realice la busqueda y encuentre registros. miestras tanto por defecto que no se muestre
muy buen tuturial, pero tengo una duda,
Me gustaria utilizar en la sentencia SQL MATCH en vez de LIKE para que a las busquedas se le diera una puntuacion y poder ordenarlo por esta.
Como podria poner esa sentencia? ya que veo que utilizas :keyword para llamar a la variable, pero con MATCH esto no me funcina.
Muchas gracias por tu tiempo.