elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  [Resuelto] Input de texto con sugerencias en php o el código que sea
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Resuelto] Input de texto con sugerencias en php o el código que sea  (Leído 4,654 veces)
MaximAlekz

Desconectado Desconectado

Mensajes: 8



Ver Perfil WWW
[Resuelto] Input de texto con sugerencias en php o el código que sea
« en: 10 Enero 2016, 07:46 am »

Hola, buen día.

Cómo puedo implementar el sistema de sugerencias a mi buscador hecho en php y mysql?

Si no se puede con php, que sea con otro código. Lo importante es que me permita agregar las sugerencias desde mysql.
Gracias



« Última modificación: 12 Enero 2016, 15:08 pm por #!drvy » En línea

gAb1


Desconectado Desconectado

Mensajes: 731


Ver Perfil
Re: Input de texto con sugerencias en php o el código que sea
« Respuesta #1 en: 10 Enero 2016, 17:13 pm »

Esta pregunta debería ir a desarrollo web. Aunque lleva una pequeña parte de php (la facil), el desarrollo se debe implementar en el lado del cliente.

1º Crea un script php que reciba el input (GET o POST) y busque en la tabla correspondiente, usando "WHERE LIKE" para comparar el input con el valor de la columna.

Código
  1. SELECT `column` FROM `table` WHERE `colum` LIKE \'%' . $string . '%\'

Si usas prepared statements (recomendado) pon "?" en lugar de la variable php.

2º En el formulario, crea una petición AJAX al script php pasandole el input (GET o POST).

3º Por últmo, usa el método AJAX "done()" para mostrar la lista desplegable (esto lo haces con css y display none) con los resultados que devuelve el script php.


En línea

MaximAlekz

Desconectado Desconectado

Mensajes: 8



Ver Perfil WWW
Re: Input de texto con sugerencias en php o el código que sea
« Respuesta #2 en: 10 Enero 2016, 20:00 pm »

Este es mi codigo para el buscador.
Código
  1. <?php
  2. require_once 'Conexion.php';
  3. @$Buscar = $_GET['Buscar'];
  4. ?>
  5. <html>
  6.    <head>
  7.        <title><?php echo $Buscar; ?> - M&aacute;xima S</title>
  8.        <link rel="stylesheet" type="text/css" href="css/stail.css">
  9.    </head>
  10. <body>
  11. <form method="GET" action="">
  12. <table>
  13. <tr>
  14.    <td><h1 id="engine"><a href="index.php">M&aacute;xima Search</a></h1></td>
  15. </tr>
  16. <tr>
  17.   <td><div id="searchbox"><input autocomplete="off" id="search" type="text" name="Buscar" placeholder="Qu&eacute; quieres buscar" value="<?php echo $Buscar; ?>" /></div></td>
  18. </tr>
  19. </table>
  20. <div id="total-result-search">
  21.    <table border="0" width="600px">
  22.  
  23.            <?php
  24.            if($Buscar == NULL)
  25.            {
  26.                echo "<tr><td><div id='subindice-searchbox'>Ingrese una palabra o frase en el cuadro de b&uacute;squeda</div></td></tr>";
  27.            }
  28.                else
  29.            {
  30.            $Busqueda = "SELECT * FROM paginas WHERE Nombre LIKE '%$Buscar%' OR URL LIKE '%$Buscar%' OR Descripcion LIKE '%$Buscar%' ";
  31.            $Resultado = mysql_query($Busqueda);
  32.            $Numero_De_Resultados = @mysql_num_rows($Resultado);
  33.            echo "<tr><td><div id='subindice-searchbox'>Resultados de la busqueda</div></td></tr>";
  34.            echo "<br />";
  35.                 if ($Numero_De_Resultados < 1)
  36.                    {
  37.                       echo "<tr><td><div id='subindice-searchbox'>Sin resultados</div></td></tr>";
  38.                    }
  39.                        elseif($Numero_De_Resultados == 1)
  40.                         {
  41.                            echo "<tr><td><div id='subindice-searchbox'>Solo un resultado</div></td></tr>";
  42.                            echo "<br /><br />";
  43.                            $Inicio = 0;
  44.                        }
  45.                        elseif($Numero_De_Resultados > 1)
  46.                        {
  47.                            echo "<tr><td><div id='subindice-searchbox'>Varios resultados = ".$Numero_De_Resultados."</div></td></tr>";
  48.                            echo "<br /><br />";
  49.                            $Inicio = 0;
  50.                        }
  51.                        else
  52.                        {
  53.                            echo "Error";
  54.                        }
  55.            }
  56.            while (($Fila = @mysql_fetch_array($Resultado)) && ($Inicio < 10))
  57.            {
  58.                $Nombre = $Fila['Nombre'];
  59.                $URL = $Fila['URL'];
  60.                $Descripcion = $Fila['Descripcion'];
  61.  
  62.                echo "<tr><td><a id='nombrepagina-search' href='$URL'>".$Nombre."<a></td></tr>";
  63.                echo "<tr><td><div id='descripcionpagina1-search'>".$URL."</div></td></tr>";
  64.                echo "<tr><td><div id='descripcionpagina2-search'>".$Descripcion."</div></td></tr>";
  65.                echo "<tr><td><hr id='linea-separa-search'></hr></td></tr>";
  66.                $Inicio++;
  67.            }
  68.  
  69.            ?>
  70.    </tr>
  71.    </table>
  72.    </div>
  73. </form>
  74. </body>
  75. </html>

Y pues tambien tengo una pagina con la que introduzco en mysql
Código
  1. <?php
  2. require_once 'Conexion.php';
  3. @$Nombre_web = $_POST['Nombre'];
  4. @$URL_web = $_POST['URL'];
  5. @$Descripcion_web = $_POST['Descripcion'];
  6. if($_POST)
  7. {
  8.   if($Nombre_web == "")
  9.   {
  10.       echo "No has ingresado el <b>nombre</b> de la pagina web a agregar";
  11.   }
  12.   elseif($URL_web == "")
  13.   {
  14.       echo "<br />No has ingresado la <b>URL</b> de la pagina web a agregar";
  15.   }
  16.   elseif($Descripcion_web == "")
  17.   {
  18.       echo "<br />No has ingresado la <b>descripcion</b> de la pagina web a agregar";
  19.   }
  20.  else
  21.  {
  22.   $Guardando = "INSERT INTO paginas (Nombre, Descripcion, URL) ".
  23.     "VALUES ('".$_POST['Nombre']."', '".$_POST['Descripcion']."', '".$_POST['URL']."')";
  24.  
  25.   mysql_query($Guardando);
  26.   echo 'Se ha guardado satisfactoriamente<br />';
  27.   echo '<a href="index.php">Volver a al buscador y comprobar la busqueda</a>';
  28.   exit();
  29. }
  30. }
  31.  
  32. ?>
  33. <html>
  34.    <body>  
  35.    <head>
  36.        <title>Agregar paginas web</title>
  37.    </head>
  38. <form method="POST" action="">
  39.  
  40.    <label>Nombre de la pagina:</label>
  41.    <br />
  42.    <input type="text" name="Nombre" value="<?php echo $Nombre_web; ?>">
  43.    <br />
  44.    <label>URL:</label>
  45.    <br />
  46.    <input type="text" name="URL" value="<?php echo "http://".$URL_web; ?>">
  47.    <br />
  48.    <label>Descripcion:</label>
  49.    <br />
  50.    <textarea name="Descripcion"><?php echo $Descripcion_web; ?></textarea>
  51.    <br />
  52.    <input type="submit" value="Registrar pagina web" />
  53.  
  54. </form>
  55.    </body>
  56.    </html>

El problema es que no conozco nada sobre AJAX. Podrías explicarme un poco la peticion con AJAX y el done()?
En línea

gAb1


Desconectado Desconectado

Mensajes: 731


Ver Perfil
Re: Input de texto con sugerencias en php o el código que sea
« Respuesta #3 en: 11 Enero 2016, 16:21 pm »

Si, por su puesto. Pero antes de nada tienes que arreglar ese agujero de seguridad tan gordo :-\ (Sql injection de 1er y 2do nivel...).

Puedes elegir entre usar los filtros de saneamiento junto a la función filter_input() (creados explicitamente para filtrar/limpiar el input) o usar la función preg_replace() (que es customizable y puedes elegir que carácteres dejar y cuales quitar). Utiliza cualquiera de estas dos opciones siempre que necesites trabajar con user input.

Te recomiendo que empieces a usar mysqli (más facil que pdo) con los prepared statement. Aunque puedes seguir usando query (con mysqli mejor) para consultas normales tipo "SELECT * FROM table" o "INSERT INTO table (col1, col2, col3) VALUES ('noget', 'nopost', 'nouserinput')"  ;)

Ahora sí, necesitas crear otra página con un script php que realice la petición a la base de datos en busca de las surgerencias (no olvides limpiar el GET/POST).

AJAX te permite hacer peticiones al servidor una vez la página se ha cargado y no necesita volver a cargarse. Te permite cargar contenido de manera dinamica, facil y sencilla. La sintaxis es muy sencilla, hechale un vistazo a la documentación (aunque está en ingles). Un ejemplo para lo que necesitas:

Código
  1. $.ajax({
  2.    method: 'GET',
  3.    url: '/script.php',  // url del script
  4.    data: $( '.input-texto' ).val();  // coger el valor del input
  5. }).done(function (data) {
  6.  
  7.    var target =  '.la-lista-de-sugerencias';
  8.    // muestra la lista
  9.    $( target ).show();
  10.    // agrega las sugerencias a la lista
  11.    $( target ).replaceWith( data );
  12.  
  13. });

Tienes dos opciones, aprender y hacerlo por ti mismo o ir a lo facil y buscarlo ya hecho  ;D
« Última modificación: 11 Enero 2016, 16:24 pm por gAb1 » En línea

MaximAlekz

Desconectado Desconectado

Mensajes: 8



Ver Perfil WWW
Re: Input de texto con sugerencias en php o el código que sea
« Respuesta #4 en: 11 Enero 2016, 16:29 pm »

Gracias por tomarte tu tiempo para responder mis preguntas.
Pues si, creo que me toca meterme en SQLi. Porque soy nuevo en esto, sin embargo he buscado algo sobre ello, sé usar las bases de datos en lo básico.

El php, lo estoy empezando a entender, como caracterización de variables y así.
« Última modificación: 11 Enero 2016, 16:32 pm por MaximAlekz » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
INPUT Text: Evitar que aparezcan sugerencias del navegador mientras escribes
Desarrollo Web
sergio98 2 2,592 Último mensaje 23 Junio 2014, 21:13 pm
por sergio98
[Resuelto] SELECT filtrado por valor en input en mysql
PHP
bgnumis 1 3,034 Último mensaje 31 Diciembre 2014, 11:26 am
por #Aitor
[Resuelto] input de Python en C++?
Programación C/C++
Br1ant 7 4,385 Último mensaje 28 Junio 2015, 19:31 pm
por Br1ant
[Resuelto] [javascript] Sumar valores input
Desarrollo Web
DeMoNcRaZy 2 6,378 Último mensaje 24 Enero 2016, 16:07 pm
por -Mc_Raaka-
[Resuelto] [Pregunta]: Setear un value de un input
Desarrollo Web
Leguim 2 1,979 Último mensaje 25 Agosto 2019, 18:56 pm
por Leguim
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines