Ver Mensaje Individual
  #6 (permalink)  
Antiguo 24/09/2015, 20:18
erikmx
 
Fecha de Ingreso: septiembre-2015
Ubicación: Mexico
Mensajes: 4
Antigüedad: 8 años, 7 meses
Puntos: 0
Mensaje Respuesta: Realizar Query MySQL desde formulario y mostrar resultado

Pues he estado buscando algun ejemplo lo mas basico posible para entender el funcionamiento ya pude ajustar un ejemplo para que me haga la busqueda mediante lo que se escriba en una caja de texto (antes de pasar a poner las otras dos cajas mas)

El detalle es que solo me funciona si realizo mi busqueda en el evento onkeyup de mi caja de texto, pero necesito que lo ejecute por medio de un boton, ya que en la version final la busqueda la realizara en cientos de miles de registros, y si lo dejo asi la busqueda sera eterna porque va filtrando conforme voy escribiendo.

El codigo de mi index.php quedo asi:

Código PHP:
Ver original
  1. <!DOCTYPE html>
  2. <html lang="en">
  3.   <head>
  4.     <meta charset="utf-8">
  5.     <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6.     <meta name="viewport" content="width=device-width, initial-scale=1">
  7.     <title>Busqueda Ajax</title>
  8.     <!-- Bootstrap -->
  9.     <link href="css/bootstrap.min.css" rel="stylesheet">
  10.     <script src="js/bootstrap.min.js"></script>
  11.  
  12. <script>
  13. var xmlhttp;
  14. if (window.XMLHttpRequest) {
  15.     // code for IE7+, Firefox, Chrome, Opera, Safari
  16.     xmlhttp=new XMLHttpRequest();
  17. } else { // code for IE6, IE5
  18.     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  19. }
  20.  
  21. function showData(str) {
  22.   if (str=="") {
  23.     document.getElementById("dbgridresultados").innerHTML="";
  24.     return;
  25.   }
  26.   xmlhttp.onreadystatechange=function() {
  27.     if (xmlhttp.readyState==4 && xmlhttp.status==200) {
  28.       document.getElementById("dbgridresultados").innerHTML=xmlhttp.responseText;
  29.     }
  30.   }
  31.   xmlhttp.open("GET","consulta.php?q="+str,true);
  32.   xmlhttp.send();
  33. }
  34. </script>
  35.  
  36.  
  37. <nav class="navbar navbar-default" role="navigation">
  38.   <div class="navbar-header">
  39.     <a class="navbar-brand" href="#">Inicio</a>
  40.   </div>
  41.  
  42.     <form class="navbar-form navbar-left" role="search">
  43.       <div class="form-group">
  44.         <input type="text" class="form-control" placeholder="Buscar Nombre" id="buscarnombre" name="users" onkeyup="showData(this.value)" >
  45.       </div>
  46.       <button type="submit" class="btn btn-default">Buscar</button>
  47.     </form>  
  48.   </div>
  49. </nav>
  50.  
  51.  
  52. </head>
  53.  
  54.  
  55. <body>
  56.     <div class="container">
  57.       <div id="dbgridresultados"><b>El resultado de la busqueda aparecera aqui</b></div>
  58.     </div>
  59. </body>  
  60. </html>

Y el de mi archivo externo consulta.php que genera toda la consulta y me devuelve el resultado quedo de la siguiente manera

Código PHP:
Ver original
  1. <?php
  2. $q = strval($_GET['q']);
  3.  
  4. $mysqli = new mysqli("localhost", "root", "", "test");
  5. if ($mysqli->connect_errno) {
  6.     echo "Fallo al conectarse a MySQLL: " . $mysqli->connect_error;
  7. }
  8.  
  9. $sql="SELECT * FROM personas WHERE nombre like '".$q."'";
  10. $result = $mysqli->query($sql);
  11.  
  12. echo "<table class='table table-bordered table-striped'>
  13. <tr>
  14. <th>ID</th>
  15. <th>NOMBRE</th>
  16. <th>PATERNO</th>
  17. <th>MATERNO</th>
  18. <th>EDAD</th>
  19. <th>DIRECCION</th>
  20. <th>TELEFONO</th>
  21. </tr>";
  22.  
  23. while($row = $result->fetch_assoc()) {
  24.   echo "<tr>";
  25.   echo "<td>" . $row['Id'] . "</td>";
  26.   echo "<td>" . $row['Nombre'] . "</td>";
  27.   echo "<td>" . $row['ApellidoPaterno'] . "</td>";
  28.   echo "<td>" . $row['ApellidoMaterno'] . "</td>";  
  29.   echo "<td>" . $row['Edad'] . "</td>";
  30.   echo "<td>" . $row['Direccion'] . "</td>";
  31.   echo "<td>" . $row['Telefono'] . "</td>";
  32.   echo "</tr>";
  33. }
  34. echo "</table>";
  35.  
  36. //$mysqli->close();
  37. ?>

Como mencione ya funciona tomando el valor de la caja de texto, pero quiero que la busqueda se haga guando oprima el boton se que tiene que ir en el evento onclick, pero si lo pongo en el boton siempre me devuelve la tabla en blanco.

Agradecere sus opiniones y consejos