info@cystec.com.ar +54 9 3874573362

Resaltar Resultados Buscados en MYSQL con PHP

Probablemente haya visto estos sitios web elegantes con funciones de búsqueda que resaltan la cadena de texto que está buscando. En este tutorial, aprenderá cómo buscar una cadena en particular en su base de datos MySQL, imprimir todos los resultados y resaltar todas las cadenas dentro del texto. Puede probar esta demostración y buscar una cadena que se encuentre en cualquiera de las noticias enumeradas. Tras la búsqueda, verá la cadena resaltada dentro de los resultados. Primero comenzaremos con la configuración de los detalles de la conexión MySQL para su base de datos.

Puede probar esta demostración y buscar una cadena que se encuentre en cualquiera de las noticias enumeradas. Tras la búsqueda, verá la cadena resaltada dentro de los resultados.
Primero comenzaremos con la configuración de los detalles de la conexión MySQL para su base de datos.


         <?php
          error_reporting(0);
          $servername = "localhost";
          $username = "REPLACE";
          $password = "REPLACE";
          $dbname = "REPLACE";
          $datatable = "search_and_highlight";
        
Nuestra tabla MySQL se llama 'search_and_highlight' y solo tiene dos columnas: ID y content.

          CREATE TABLE `search_and_highlight` (
          `id` int(11) NOT NULL,
          `content` text NOT NULL
          )
        
El texto que buscaremos se encuentra en el campo 'content'. A continuación, crearemos una función que resaltará la cadena que buscamos.

          function highlight_word( $content, $word) {
          $replace = '' . $word . ''; // create replacement
          $content = str_replace( $word, $replace, $content ); // replace content
          return $content; // return highlighted data
          }
        
Más tarde, cuando imprimamos los resultados después de la consulta SQL SELECT usaremos esta función, que colocará todas las cadenas encontradas dentro de un intervalo con un color de fondo amarillo. Si desea cambiar el color, simplemente reemplace el código de color # FF0.
Ahora crearemos el formulario de búsqueda:

          <form action="search-and-highlight.php" method="get">
          Search: <input type="text" name="findme" value="<?php echo $_GET["findme"]; ?>" /><input type="submit" value="Search" />
          <input name="show" type="radio" value="1"<?php if ($_GET["show"] == '1' or !isset($_GET["show"])) echo ' checked="checked"'; ?> />Show all news 
          <input name="show" type="radio" value="2"<?php if ($_GET["show"] == '2') echo ' checked="checked"'; ?> />Show news that match search criteria
          </form>
        
Agregamos una opción que le permite seleccionar si desea que se muestren todos los resultados o solo aquellos que coinciden con los criterios de búsqueda. En cualquier caso, las cadenas encontradas se resaltarán dentro de los resultados. Y finalmente, crearemos la búsqueda real de MySQL y mostraremos los resultados:

          <?php
          // Create connection
          $conn = new mysqli($servername, $username, $password, $dbname);
          // Check connection
          if ($conn->connect_error) {
          die("Connection failed: " . $conn->connect_error);
          }

          if ($_GET["show"] == '2') {
          $sql = "SELECT * FROM " . $datatable . " WHERE content LIKE '%" . $conn->real_escape_string($_GET["findme"]) . "%'";
          } else {
          $sql = "SELECT * FROM " . $datatable;
          }
          $result = $conn->query($sql);

          if ($result->num_rows > 0) {
          // output data of each row
          while ($row = $result->fetch_assoc()) {
         if ($_GET["findme"] <> '') {
         echo highlight_word($row["content"], $_GET["findme"]);
          } else {
          echo $row["content"];
          }
          echo "<hr>";
          }
          } else {
          echo "0 results";
          }
          $conn->close();
          ?>
        
Puede ver arriba que si buscamos una cadena en lugar de simplemente imprimir el resultado, usamos la función highlight_word () definida anteriormente. Colocará todas las instancias de la cadena que buscamos en un contenedor de intervalo resaltado. Puede descargar el código anterior junto con una base de datos de muestra aquí. La demostración está disponible aquí.

Clasifi-Autos

Utilice Clasifi-Autos para crear plataformas de venta de automóviles y sitios web de concesionarios de automóviles.

Resaltar Resultados Buscados en MYSQL con PHP

CYSTEC