Foros del Web » Programando para Internet » Javascript »

Ajax buscar por nombre

Estas en el tema de Ajax buscar por nombre en el foro de Javascript en Foros del Web. Buenas a todos, tengo un codigo que busca por letras, anda muy bien, el tema es el siguiente, al entrar a la web, la pagina ...
  #1 (permalink)  
Antiguo 10/07/2014, 17:36
Avatar de fedefrankk  
Fecha de Ingreso: agosto-2007
Mensajes: 871
Antigüedad: 16 años, 8 meses
Puntos: 7
Pregunta Ajax buscar por nombre

Buenas a todos, tengo un codigo que busca por letras, anda muy bien, el tema es el siguiente, al entrar a la web, la pagina busca las imagenes por puntos, ahora si yo quiero buscar una especifica por nombre no puedo, no se hacerlo... he buscado por google y encuentro muchos de Jquery, andan buen pero no entiendo nada y realmente quiero entender..
al entrar a la web si busca por puntos y hice una captura de pantalla:






al querer buscar por nombre desaparece todo y muestra lo siguiente:





el tema es que lo que busca lo ordene en los div.....

dejo codigo:

Código PHP:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>Documento sin título</title>
  6. <link href="gale.css" rel="stylesheet" type="text/css" />
  7. <script type="text/javascript">
  8.         function sugerencias(str){
  9.             var xmlhttp;
  10.             if (str.length==0)
  11.               {
  12.               document.getElementById("txtHint").innerHTML="";
  13.               return;
  14.               }
  15.               if (window.XMLHttpRequest)
  16.               {
  17.               xmlhttp=new XMLHttpRequest();
  18.               }
  19.             else
  20.               {
  21.               xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  22.               }
  23.           xmlhttp.onreadystatechange=function()
  24.               {
  25.               if (xmlhttp.readyState==4 && xmlhttp.status==200)
  26.                  {
  27.                  document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
  28.                  }
  29.               }
  30.           xmlhttp.open("GET","sugerencias.php?q="+str,true);
  31.             xmlhttp.send();
  32.         }
  33.     </script>
  34. </head>
  35.  
  36. <body>
  37.     <h2>Sugerencias</h2>
  38.         <p>Introduce un nombre en la siguiente casilla</p>
  39.         <form action="">
  40.             Primer nombre: <input type="text" id="txt1" onKeyUp="sugerencias(this.value)">
  41.         </form>
  42.     <div class="galeria" id="txtHint">
  43.    
  44.    
  45.     <!--
  46. /**************************************************************/-->
  47. <?php
  48. include("conectar.php");
  49. $cone=conectar();
  50.  
  51.  
  52. $registros=mysqli_query($cone,"select * from img ORDER BY usu_puntos DESC") or
  53.   die("Problemas en el select:".mysqli_error());
  54. while ($reg=mysqli_fetch_array($registros)){
  55.  
  56. ?>
  57.  
  58.  
  59. <div class="contenedor_c" id="capa1"><input type="image"  src="../_imgclient/<? print $reg['nombre'].".".$reg['nombre'] ?>" width=292 height=211 title="<? print $reg['nombre']?>"></div>
  60.  
  61. <?php } ?>
  62.  
  63.  
  64.  
  65.        
  66.     </body>
  67. </html>

desde ya muchas Gracias a todos, espero que no me manden a googlear,
saludos
y se agradece el tiempo de los que saben..
fede
  #2 (permalink)  
Antiguo 11/07/2014, 12:45
Avatar de manuparquegiralda  
Fecha de Ingreso: junio-2012
Ubicación: Barcelona
Mensajes: 241
Antigüedad: 11 años, 10 meses
Puntos: 39
Respuesta: Ajax buscar por nombre

A ver si me sale bien la explicación porque soy un poco malo para explicar y al no poner los nombres de tus archivos no sé muy bien como lo has hecho, un poco más de información sería útil. ;)

El problema está en el archivo sugerencias.php del cual no has puesto el código. Pero seguramente en ese archivo haces la consulta únicamente y devuelves los nombres a pelo ¿no?

Si te fijas en tu script: (document.getElementById("txtHint").innerHTML=xmlht tp.responseText;) estás introduciendo la respuesta AJAX en la división txtHint, pero esa respuesta debería venir también con el código HTML que va dentro de la citada "txtHint" ya que la respuesta AJAX está sustituyendo por completo lo que hay dentro de la división.

No sé muy bien como tienes configurado tu archivo sugerencias.php pero en el deberías tener algo así:

Código PHP:
Ver original
  1. <?php
  2.  
  3. $innerHTML = "";
  4.  
  5. //Inclusión de la conexión
  6. include("conectar.php");
  7. $cone=conectar();
  8.  
  9. //Pregunta concreta por nombre a la base de datos (Esto es un ejemplo ya que no sé como está estructurada)
  10. $registros=mysqli_query($cone,"select * from img WHERE nombre LIKE '%".$_GET['q']."%' ORDER BY usu_puntos DESC") or die("Problemas en el select:".mysqli_error());
  11.  
  12. //Sacamos los registros con las divs
  13. while ($reg=mysqli_fetch_array($registros)){
  14.  
  15.      $innerHTML .= '<div class="contenedor_c" id="capa1"><input type="image"  src="../_imgclient/'.$reg['nombre'].'.'.$reg['nombre'].'" width=292 height=211 title="'.$reg['nombre'].'"></div>
  16.     ';
  17.  
  18. }
  19.  
  20. echo $innerHTML;
  21. ?>

EL caso es que el xmlhttp.responseText de la función javascript te devolverá la variable $innerHTML del archivo "sugerencias.php" y serán las divisiones que haya creado el bucle con los resultados de búsqueda. Además en la función puedes hacer que si no hay resultado no cambie el HTML, por ejemlo:

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2.      function sugerencias(str){
  3.           var xmlhttp;
  4.           if (str.length==0) {
  5.                document.getElementById("txtHint").innerHTML="";
  6.                return;
  7.           }
  8.           if (window.XMLHttpRequest) {
  9.                xmlhttp=new XMLHttpRequest();
  10.           } else {
  11.                xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  12.           }
  13.           xmlhttp.onreadystatechange=function() {
  14.                if ((xmlhttp.readyState==4) && (xmlhttp.status==200)&&(xmlhttp.responseText)) {
  15.                     document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
  16.                }
  17.           }
  18.           xmlhttp.open("GET","sugerencias.php?q="+str,true);
  19.           xmlhttp.send();
  20.      }
  21. </script>

Esto es lo que he podido hacer con la información que has puesto en el POST, si me he desviado un poco, pon un poco más de información e intentaré ayudarte.
__________________
Diseño Web - Arisman Web
  #3 (permalink)  
Antiguo 11/07/2014, 17:15
Avatar de fedefrankk  
Fecha de Ingreso: agosto-2007
Mensajes: 871
Antigüedad: 16 años, 8 meses
Puntos: 7
Pregunta Respuesta: Ajax buscar por nombre

Hola, si es eso, muy buena tu explicacion, lo que deseo es que al entrar a la web tenga la galeria de fotos por puntos y cuando ingreso un nombre que me aparezca,
yo hice esto:


en sugerencias.php

Código PHP:
Ver original
  1. <link href="gale.css" rel="stylesheet" type="text/css" />
  2. <?php
  3. include("conectar.php");
  4. $cone=conectar();
  5. $q=$_GET["q"];
  6.  
  7. ?>
  8. <div class="galeria" id="txtHint">
  9.  
  10. <?php
  11.  
  12. $registros=mysqli_query($cone,"select * from img where nombre  LIKE '$q%'") or
  13.   die("Problemas en el select:".mysqli_error());
  14. while ($reg=mysqli_fetch_array($registros)){
  15.  
  16. ?>
  17.  
  18. <div class="galeria">
  19. <div class="contenedor_c" id="capa1"><?php echo $reg['nombre']."<BR>PUNTON=".$reg['usu_puntos'] ?></div>
  20. </div>
  21. <?php
  22. }
  23.  
  24. ?>

y en el index.php
hice esto

Código PHP:
Ver original
  1. <title>Documento sin título</title>
  2. <link href="gale.css" rel="stylesheet" type="text/css" />
  3. </head>
  4. <script type="text/javascript">
  5.  
  6.         function sugerencias(str){
  7.             var xmlhttp;
  8.             if (str.length==0)
  9.               {
  10.               document.getElementById("txtHint").innerHTML="";
  11.               return;
  12.               }
  13.               if (window.XMLHttpRequest)
  14.               {
  15.               xmlhttp=new XMLHttpRequest();
  16.               }
  17.             else
  18.               {
  19.               xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  20.               }
  21.           xmlhttp.onreadystatechange=function()
  22.               {
  23.               if (xmlhttp.readyState==4 && xmlhttp.status==200)
  24.                  {
  25.                  document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
  26.                  }
  27.               }
  28.             xmlhttp.open("GET","sugerencias.php?q="+str,true);
  29.             xmlhttp.send();
  30.         }
  31.          
  32.     </script>
  33. <body>
  34.     <h2>Sugerencias</h2>
  35.         <p>Introduce un nombre en la siguiente casilla</p>
  36.         <form action="">
  37.             Primer nombre: <input type="text" id="txt1"  onKeyUp="sugerencias(this.value)">
  38.         </form>
  39.     <div class="galeria" id="txtHint">
  40.     <?php
  41.     include("conectar.php");
  42. $cone=conectar();
  43.    
  44.     $registros=mysqli_query($cone,"select * from img ORDER BY usu_puntos DESC") or
  45.   die("Problemas en el select:".mysqli_error());
  46. while ($reg=mysqli_fetch_array($registros)){
  47. ?>
  48. <div class="galeria">
  49. <div class="contenedor_c" id="capa1"><?php echo $reg['nombre']."<BR>PUNTON=".$reg['usu_puntos'] ?></div>
  50. </div>
  51.  
  52. <?php } ?>
  53.  
  54.    
  55.    
  56.     </div>

La verdad que anda, no se si esta bien, ó mal, al no saber mucho sobre el tema no puedo decir si es correcto el codigo, o em mucho no lo se..

Muchisimas gracias por tu tiempo
se agradece .
saludos
fede
  #4 (permalink)  
Antiguo 14/07/2014, 16:49
Avatar de fedefrankk  
Fecha de Ingreso: agosto-2007
Mensajes: 871
Antigüedad: 16 años, 8 meses
Puntos: 7
Pregunta Respuesta: Ajax buscar por nombre

Hola, d nuevo, disculpa la molestia de volver a preguntar,

reice el codigo como vos me digiste, anda de 10, el tema que al principiio no busca por puntos, si o si tengo que hacer andar el ajax, y solamente anda cuando busca por letras...

dejo codigo

index.html

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2.  
  3.      function sugerencias(str){
  4.           var xmlhttp;
  5.           if (str.length==0) {
  6.                document.getElementById("txtHint").innerHTML="";
  7.                return;
  8.           }
  9.           if (window.XMLHttpRequest) {
  10.                xmlhttp=new XMLHttpRequest();
  11.           } else {
  12.                xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  13.           }
  14.           xmlhttp.onreadystatechange=function() {
  15.                if ((xmlhttp.readyState==4) && (xmlhttp.status==200)&&(xmlhttp.responseText)) {
  16.                     document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
  17.                }
  18.           }
  19.           xmlhttp.open("GET","sugerencias.php?q="+str,true);
  20.           xmlhttp.send();
  21.      }
  22.  
  23.          
  24.     </script>
  25. <body>
  26.     <h2>Sugerencias</h2>
  27.         <p>Introduce un nombre en la siguiente casilla</p>
  28.         <form action="">
  29.             Primer nombre: <input type="text" id="txt1"  onKeyUp="sugerencias(this.value)">
  30.         </form>
  31.     <div class="galeria" id="txtHint"></div>


sugerencias.php

Código PHP:
Ver original
  1. <?php
  2.  include("conectar.php");
  3. $cone=conectar();
  4. $innerHTML = "";
  5.  if($innerHTML=""){
  6. //Inclusión de la conexión
  7. include("conectar.php");
  8. $cone=conectar();
  9.  
  10. //Pregunta concreta por nombre a la base de datos (Esto es un ejemplo ya que no sé como está estructurada)
  11. $registros=mysqli_query($cone,"select * from img WHERE nombre LIKE '%".$_GET['q']."%' ORDER BY usu_puntos DESC") or die("Problemas en el select:".mysqli_error());
  12.  
  13. //Sacamos los registros con las divs
  14. while ($reg=mysqli_fetch_array($registros)){
  15.  
  16.      $innerHTML .= '<div class="contenedor_c" id="capa1"><input type="image"  src="../_imgclient/'.$reg['nombre'].'.'.$reg['nombre'].'" width=292 height=211 title="'.$reg['nombre'].'"></div>
  17.     ';
  18.  
  19. }
  20.  
  21. echo $innerHTML;
  22.  
  23.  }else{
  24.     $registros=mysqli_query($cone,"select * from img ORDER BY usu_puntos DESC") or
  25.   die("Problemas en el select:".mysqli_error());
  26. while ($reg=mysqli_fetch_array($registros)){
  27.  
  28.  $innerHTML .= '<div class="contenedor_c" id="capa1"><input type="image"  src="../_imgclient/'.$reg['nombre'].'.'.$reg['nombre'].'" width=292 height=211 title="'.$reg['nombre'].'"></div>';
  29.  
  30. echo $innerHTML;
  31. } }
  32.  
  33.  ?>

Desde ya muchas gracias
saludos a todos
fede

Etiquetas: ajax, html, input, nombre, php, select
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:23.