Implementación de un buscador sencillo con PHP

En muchas Webs es necesario disponer de un buscador efectivo para que los usuarios puedan localizar de forma directa lo que están buscando.

En PHP podemos programar fácilmente un buscador que realizará una búsqueda en los registros de la base de datos.

En el ejemplo que vamos a ilustrar, veremos como localizar artículos de un blog mediante consulta a la base de datos y mostrar los resultados.

En el <body> de nuestra página está claro que vamos a necesitar un formulario. Lo podríamos hacer como el siguiente:

<form action="index.php" method="POST">
Palabras clave
<input type="text" id="keywords" name="keywords" size="30" maxlength="30">
<input type="submit" name="search" id="search" value="Buscar">
</form>

Como puedes ver, el formulario para implementar un buscador puede ser muy sencillo, aunque podría ser mucho más complejo, como por ejemplo poder fijar unas fechas de inicio y fin, poder elegir la categoría del artículo entre otros.

En este caso, simplemente vamos a capturar las palabras clave a buscar. Tenemos un botón tipo Submit que al pulsarlo se envían los datos mediante el método POST.

Seguidamente, tendremos el código PHP que se encarga de procesar los datos enviados.

<?php
//Si se ha pulsado el botón de buscar
if (isset($_POST['search'])) {
    //Recogemos las claves enviadas
    $keywords = $_POST['keywords'];

    //Conectamos con la base de datos en la que vamos a buscar
    $conexion = mysql_connect("localhost", "USUARIO", "PASSWORD");
    mysql_select_db("NOMBRE_BASE_DE_DATOS", $conexion);

    $query = "SELECT fecha, titulo, DATE_FORMAT(post_date, '%d-%m-%Y') as fecha
                FROM TABLA
                WHERE status = '1'
                AND (contenido LIKE '%" . $keywords . "%'
                OR titulo LIKE '%" . $keywords . "%')
                ORDER BY fecha desc";

    $query_searched = mysql_query($query, $conexion);

    $count_results = mysql_num_rows($query_searched);

    //Si ha resultados
    if ($count_results > 0) {

        echo '<h2>Se han encontrado '.$count_results.' resultados.</h2>';

        echo '<ul>';
        while ($row_searched = mysql_fetch_array($query_searched)) {
            //En este caso solo mostramos el titulo y fecha de la entrada
            echo '<li><a href="#">'.$row_searched['titulo'].' ('.$row_searched['fecha'].')</a></li>';
        }
        echo '</ul>';
    }
    else {
        //Si no hay registros encontrados
        echo '<h2>No se encuentran resultados con los criterios de búsqueda.</h2>';
    }
}
?>

Como puedes ver, si estás familiarizado con el código PHP queda un código muy simple. La complejidad del asunto diría que recae en la query realizada que selecciona los datos necesarios de una tabla de artículos utilizando el comando LIKE %{keyword}% buscando en los campos titulo y contenido de las entradas.

Ver ejemplo en funcionamiento

Autor
Escrito por Jose Aguilar - Director ejecutivo y tecnológico en JA Modules. Experto programador PrestaShop y Experto programador WordPress.
Te ha servido? Valora esta entrada!
(2 votos, promedio: 5 de 5)
Comparte en las redes sociales

6 respuestas a “Implementación de un buscador sencillo con PHP”

  1. Diego dice:

    gracias por el post amigo, una pregunta ya lo implemente y me funciona, pero cuando hago una consulta con mas de una palabra que no este en el orden en que esta registrado en la base de datos no me consulta nada es decir si ne la base de datos tengo escrito un ejemplo: «la casa es de color blanca» y si hago la búsqueda con «la casa» me busca bien, pero si pongo «casa blanca» ya me dice que no hay resultados

    • Jose Aguilar dice:

      Hola,

      Ese detalle lo dejamos en vuestras manos y espero encontréis una solución.

      Un simple idea es captar las palabras introducidas en el campo de búsqueda, guardarlas en un array y luego recorrer ese array para ejecutar la consulta de búsqueda por cada palabra.

      Saludos

  2. Cesar Romo dice:

    Muy buen script de busqueda, me gusto lo sencillo y facil de implementar, lo unico que le hace falta creo es una validacion para que en caso de que no lleve valor, no realice la busqueda y te marque error, voy a ver si con los parametros de html5 se suple esta parte.

    Saludos

  3. svchost.exe dice:

    cool story bro

  4. demetrio dice:

    Soy deme!! El manager y le exijo compromiso con el club!!! Actualizeee los puntos

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Ver más sobre