Foros del Web » Programando para Internet » Javascript » Frameworks JS »

[SOLUCIONADO] Busqueda ajax

Estas en el tema de Busqueda ajax en el foro de Frameworks JS en Foros del Web. Hola el tema es que tengo creado un buscador en php, mysql y ajax y me va perfecto solo que cuando quiero buscar con dos ...
  #1 (permalink)  
Antiguo 16/08/2014, 07:57
Avatar de MaNuX0218  
Fecha de Ingreso: marzo-2014
Mensajes: 787
Antigüedad: 10 años, 8 meses
Puntos: 67
Busqueda ajax

Hola el tema es que tengo creado un buscador en php, mysql y ajax y me va perfecto solo que cuando quiero buscar con dos campos no me busca o lo unico que e conseguido es que me busque independientemente.

Lo que intento es esto, haber si puedo explicarme:

Tengo dos inputs llamados "valor 1" y "valor 2" y en la base de datos el valor 1 seria para la busqueda de "Pepito" y para el valor 2 la busqueda seria "Girro", entonces la idea es si en el valor 1 introduzco "P" me apareceria Pepito y al introducir en el valor 2 "G" aparececia Girro, entonces la idea es que si en valor 1 introduzco P y en valor 2 introduzco G aparezca Pepito, Girro, ya que la P coincide con Pepito y la G con Girro que pertenece a Pepito.

Este es el codigo js que tengo:

Código Javascript:
Ver original
  1. $(document).ready(function(){                              
  2. var consulta;
  3. $("#valor1").focus();                                                                                    
  4. $("#valor1").keyup(function(e){
  5. consulta = $("#valor1").val();                                              
  6. $.ajax({
  7. type: "POST",
  8. url: "pages/result.php",
  9. data: "valor1=" + consulta,
  10. dataType: "html",
  11. beforeSend: function(){
  12. $("#resultado").html("Resultado Valor 1: ");
  13. },
  14. success: function(data){                                                  
  15. $("#resultado").hmtl(data);
  16. $("#resultado").val(consulta);
  17. }
  18. });                                                                                
  19. });                                                                
  20. });
  21.  
  22.  
  23. $(document).ready(function(){                              
  24. var consulta;
  25. $("#valor2").focus();                                                                                    
  26. $("#valor2").keyup(function(e){
  27. consulta = $("#valor2").val();                                              
  28. $.ajax({
  29. type: "POST",
  30. url: "pages/result.php",
  31. data: "valor2=" + consulta,
  32. dataType: "html",
  33. beforeSend: function(){
  34. $("#resultado").html("Resultado Valor 2:");
  35. },
  36. success: function(data){                                                  
  37. $("#resultado").hmtl(data);
  38. $("#resultado").val(consulta);
  39. }
  40. });                                                                                
  41. });                                                                
  42. });

No se si se me ha entendido, de lo contrario indicarmelo e ire explicandome lo mejor que pueda.

Saludos.
  #2 (permalink)  
Antiguo 16/08/2014, 10:46
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Busqueda ajax

Si no estás obteniendo el resultado esperado es porque estás haciendo algo mal en la consulta, pero además, estás enviando los datos de cada caja de texto por separado, por lo que al enviar el dato escrito en la segunda luego de haberlo hecho con el dato de la primera, la consulta solo buscará con el segundo dato.

Deberías de enviar a ambos datos a la vez:

Código Javascript:
Ver original
  1. $("#valor1, #valor2").keyup(function(){
  2.     var dato1 = $("#valor1").val(),
  3.         dato2 = $("#valor2").val();
  4.  
  5.     $.ajax({
  6.         type: "GET",
  7.         url: "pages/result.php",
  8.         data: {
  9.             nom: dato1,
  10.             ape: dato2
  11.         },
  12.         dataType: "html",
  13.         success: function(response){                                                  
  14.             $("#resultado").html(response);
  15.         }
  16.     });
  17. });

Y en la consulta harías algo similar a esto:

Código PHP:
Ver original
  1. $nom = mysqli_real_escape_string(strip_tags($_GET['nom']));
  2. $ape = mysqli_real_escape_string(strip_tags($_GET['ape']));
  3.  
  4. $query = mysqli_query($conexion, "SELECT * FROM tabla WHERE nom LIKE '%{$nom}%' AND ape LIKE '%{$ape}%'");

Como se trata de una consulta a la BD, debes de utilizar el método GET que es el apropiado para este caso. Por otro lado, veo que al recibir la respuesta de la petición asíncrona, haces esto:

Código Javascript:
Ver original
  1. $("#resultado").hmtl(data);
  2. $("#resultado").val(consulta);

Lo cual es incompatible, es decir, si la respuesta la mostrarás en un elemento que no posea el atributo value, entonces lo primero está de más, sin embargo, si piensas mostrar la respuesta en un elemento como un <div>, <label> o similares, solo lo primero estaría bien, aunque el nombre del método es html y no hmtl.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 16/08/2014, 14:03
Avatar de MaNuX0218  
Fecha de Ingreso: marzo-2014
Mensajes: 787
Antigüedad: 10 años, 8 meses
Puntos: 67
Respuesta: Busqueda ajax

Gracias Alexis88 por tu respuesta, e probado como me indicas y me muestra todos los datos y siempre me indica que no está definido $nom y $ape cuando si lo está.

También e probado a modificarlo y a quedado así, también sin resultados...

Código Javascript:
Ver original
  1. $(document).ready(function(){
  2. $("#valor1, #valor2").keyup(function(){
  3.  
  4. var
  5. dato1 = $("#valor1").val(),
  6. dato2 = $("#valor2").val();
  7.      
  8. $.ajax({
  9. type: "GET",
  10. url: "pages/result.php",
  11. dataType: "html",
  12. beforeSend: function(){
  13. $("#resultado").html("<img src='public/images/ajax-loader.gif' width='20' height='20' />");
  14. },
  15. success: function(data){                                                  
  16. $("#resultado").html(data);
  17. $("#resultado").val(consulta);
  18. }
  19. });                                                                                
  20. });                                                                
  21. });


¿Alguna idea?

Saludos.
  #4 (permalink)  
Antiguo 16/08/2014, 14:09
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Busqueda ajax

De la segunda forma no va a funcionar porque nunca envías los valores. Creo que puede ser porque te has olvidado de cambiar el método de recepción de datos en el archivo PHP, recuerda que ahora usas el método GET, por lo que $_POST['nom'] no te va a servir. Es solo una suposición, sin ver el código actualizado solo puedo adivinar.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #5 (permalink)  
Antiguo 16/08/2014, 14:24
Avatar de MaNuX0218  
Fecha de Ingreso: marzo-2014
Mensajes: 787
Antigüedad: 10 años, 8 meses
Puntos: 67
Respuesta: Busqueda ajax

E cambiado todo por GET y no funciona, tambien lo e probado por POST para dudas pero hace lo mismo. Por lo que ese no es el problema.

Saludos.
  #6 (permalink)  
Antiguo 16/08/2014, 14:25
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Busqueda ajax

Muéstranos el código actualizado para poder ayudarte.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #7 (permalink)  
Antiguo 16/08/2014, 14:35
Avatar de MaNuX0218  
Fecha de Ingreso: marzo-2014
Mensajes: 787
Antigüedad: 10 años, 8 meses
Puntos: 67
Respuesta: Busqueda ajax

Haber mostrare todos, html, php(mysql) y ajax

Código HTML:
Ver original
  1. <form action="" method="get">
  2.  
  3. <input type="text" name="nom" id="valor1" maxlength="13">
  4.  
  5. <input type="text" name="ape" id="valor2" maxlength="6">
  6.  
  7. </form>

Código PHP:
Ver original
  1. <?php
  2.  
  3. $con = mysql_connect('localhost','root', '');
  4. mysql_select_db('db', $con);
  5.  
  6. $nom = mysql_real_escape_string(strip_tags($_GET['nom']));
  7. $ape = mysql_real_escape_string(strip_tags($_GET['ape']));
  8.  
  9. $sql = mysql_query('SELECT * FROM tabla WHERE nombre LIKE "'.$_GET['nom'].'%" AND apellido LIKE "'.$_GET['ape'].'%"', $con);
  10.  
  11. while($row=mysql_fetch_array($sql)){
  12.  
  13. echo '<tbody>
  14. <td>'.$row['nombre'].'</td>
  15. <td>'.$row['apellido'].'</td>
  16. <td>'.$row['edad'].'</td>
  17. <td>'.$row['sexo'].'</td>
  18. </tbody>';  
  19.  
  20. }
  21.  
  22. ?>

Código Javascript:
Ver original
  1. $(document).ready(function(){
  2. $("#valor1, #valor2").keyup(function(){
  3.  
  4. var
  5. dato1 = $("#valor1").val(),
  6. dato2 = $("#valor2").val();
  7.      
  8. $.ajax({
  9. type: "GET",
  10. url: "pages/result.php",
  11. dataType: "html",
  12. beforeSend: function(){
  13. $("#resultado").html("<img src='public/images/ajax-loader.gif' width='20' height='20' />");
  14. },
  15. success: function(data){                                                  
  16. $("#resultado").html(data);
  17. $("#resultado").val(consulta);
  18. }
  19. });                                                                                
  20. });                                                                
  21. });
  #8 (permalink)  
Antiguo 16/08/2014, 14:39
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Busqueda ajax

Te lo vuelvo a decir: Te faltó enviar los datos.

Código Javascript:
Ver original
  1. $.ajax({
  2.     type: "GET",
  3.     url: "pages/result.php",
  4.     data: {
  5.         nom: dato1,
  6.         ape: dato2
  7.     },
  8.     dataType: "html",
  9.     success: function(response){                                                  
  10.         $("#resultado").html(response);
  11.     }
  12. });

Y como te dije al inicio, si $("#resultado") no posee el atributo value, no tiene sentido que hagas esto:

Código Javascript:
Ver original
  1. $("#resultado").val(consulta);

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #9 (permalink)  
Antiguo 17/08/2014, 02:21
Avatar de MaNuX0218  
Fecha de Ingreso: marzo-2014
Mensajes: 787
Antigüedad: 10 años, 8 meses
Puntos: 67
Respuesta: Busqueda ajax

Gracias ahora si que me ha funcionado, ahoro otra duda, como podría hacer que cargase antes de mostrar los datos, lo tenia así:

Código Javascript:
Ver original
  1. $("#resultado").html("<img src='public/images/ajax-loader.gif' width='20' height='20' />");

Y también que cuando borre los campos no muestre nada, por que al eliminar lo que introduzco automaticamente me muestra todos los registros.

Saludos.
  #10 (permalink)  
Antiguo 17/08/2014, 09:51
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Busqueda ajax

Lo primero lo puedes indicar en el atributo beforeSend que he visto que has usado, mientras que para lo segundo, bastaría una condición; solo si uno o ambos campos tienen datos, ejecutas el método Ajax.

Código Javascript:
Ver original
  1. if (dato1.length || dato2.length){
  2.     //Ejecutas el método Ajax
  3. }

Esto iría después de las líneas en donde tomas a los valores de ambas cajas y justo antes del método Ajax.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Etiquetas: ajax, busqueda, input, javascript, php, valor
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 10:50.