Ver Mensaje Individual
  #2 (permalink)  
Antiguo 11/07/2014, 12:45
Avatar de manuparquegiralda
manuparquegiralda
 
Fecha de Ingreso: junio-2012
Ubicación: Barcelona
Mensajes: 241
Antigüedad: 12 años, 6 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