Foros del Web » Programando para Internet » Jquery »

Realizar Query MySQL desde formulario y mostrar resultado

Estas en el tema de Realizar Query MySQL desde formulario y mostrar resultado en el foro de Jquery en Foros del Web. Hola a todos, mi nombre es Erik y estoy empezando a programar en PHP y MySQL, para mi es algo muy nuevo y estoy agarrandole ...
  #1 (permalink)  
Antiguo 10/09/2015, 14:11
 
Fecha de Ingreso: septiembre-2015
Ubicación: Mexico
Mensajes: 4
Antigüedad: 8 años, 7 meses
Puntos: 0
Pregunta Realizar Query MySQL desde formulario y mostrar resultado

Hola a todos, mi nombre es Erik y estoy empezando a programar en PHP y MySQL, para mi es algo muy nuevo y estoy agarrandole la forma.

Programo de toda la vida en delphi aplicaciones de escritorio, pero por cuestiones laborales requiero poder implementar algunas consultas en PHP y MySQL para poder acceder desde los exploradores de internet.

Ya tengo mi diseño base:

- Me conecto a mi base de datos
- Hago una consulta MySQL desde el inicio de la carga de la pagina, y muestro el resultado en una grid o rejilla, implementando Bootstrap por supuesto
- Se paginan los datos
- Utilizo el buscador que incluye bootstrap y funciona (El codigo me base en un CRUD que busque en internet y lo adapte extrayendo solo la parte que utilizo)


El detalle es que utilizando JQuery Agrege un Panel Accordion para cargar 3 cajas de texto (Nombre, ApellidoPaterno, ApellidoMaterno), no se como crear la consulta sin recargar la pagina (para eso supongo debo de hacerlo en jQuery) para que lea los valores de las 3 cajas de texto y al presionar el boton de buscar extraiga los valores y los inserte en la query que utilizo, se que puede ser algo muy sencillo pero no logro hacerlo, e leido varios ejemplos buscado informacion pero no lo consigo o todos los ejemplos que encuentro son del 2012 o 2013 donde la conexion ya no es compatible porque utilizan mysql y no mysqli o PDO

Les expongo mi codigo para ver si me pueden hechar una mano saludos:

Código PHP:
Ver original
  1. <!DOCTYPE html>
  2. <html lang="es">
  3.   <head>
  4.     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  5.     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  6.     <meta http-equiv="X-UA-Compatible" content="IE=edge">
  7.     <meta name="viewport" content="width=device-width, initial-scale=1">
  8.     <title>SISTEMA DE CONSULTA</title>
  9.  
  10.     <!-- Bootstrap -->
  11.     <link href="css/bootstrap.min.css" rel="stylesheet">
  12.     <link href="css/dataTables.bootstrap.css" rel="stylesheet">
  13.     <script src="js/jquery.min.js"></script>
  14.  
  15.   <link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
  16.   <script src="//code.jquery.com/jquery-1.10.2.js"></script>
  17.   <script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
  18.   <link rel="stylesheet" href="/resources/demos/style.css">
  19.  
  20.  
  21.  
  22. </head>
  23.  
  24. <body>
  25.  
  26.     <div class="container">
  27.      
  28.       <div class="panel panel-primary">
  29.        <div class="panel-heading">SISTEMA DE CONSULTA</div>
  30.         <div class="panel-body">
  31.  
  32.  
  33. <?php
  34. include "config.php";
  35. ?>
  36.  
  37.  
  38. <div class="panel panel-default">
  39.   <div class="panel-body">
  40.  
  41. <div id="accordion">
  42.   <h3>Busqueda Completa</h3>
  43.   <div>
  44.  
  45. <form role="form">
  46.   <div class="form-group">    
  47.     <input type="text" class="form-control input-sm" id="xNombre" placeholder="Nombre">
  48.   </div>
  49.   <div class="form-group">
  50.     <input type="text" class="form-control input-sm" id="xApelloPaterno" placeholder="Apellido Paterno">
  51.   </div>  
  52.   <div class="form-group">
  53.     <input type="text" class="form-control input-sm" id="xApelloMaterno" placeholder="Apellido Materno">
  54.   </div>    
  55.   <button type="submit" class="btn btn-primary btn-lg btn-block">Buscar</button>
  56. </form>
  57.  
  58. </div>
  59. </div>
  60. </div>
  61. </div>
  62. <script>
  63. $( "#accordion" ).accordion({
  64.   active: false,
  65.   collapsible: true,
  66.   autoHeight: false,  
  67.   heightStyle: "content",
  68. });
  69. </script>
  70.  
  71.  
  72. <table id="ghatable" class="display table table-responsive table-bordered table-hover table-condensed table-striped" cellspacing="0" width="100%">
  73. <thead>
  74.      <tr>
  75.           <th class="active">ID</th>
  76.           <th class="active">NOMBRE</th>
  77.           <th class="active">APELLIDO PATERNO</th>
  78.           <th class="active">APELLIDO MATERNO</th>
  79.           <th class="active">OPCIONES</th>
  80.      </tr>
  81. </thead>
  82. <tbody>
  83.  
  84. <?php
  85. $mysqli->query("SET NAMES 'utf8'");
  86. $res = $mysqli->query("SELECT ID, NOMBRE, APELLIDOPATERNO, APELLIDOMATERNO,SEXO FROM maindb LIMIT 1000");
  87. while ($row = $res->fetch_assoc()):
  88. ?>
  89.      <tr>
  90.           <td><?php echo $row['ID'] ?></td>
  91.           <td><?php echo $row['NOMBRE'] ?></td>
  92.           <td><?php echo $row['APELLIDOPATERNO'] ?></td>
  93.           <td><?php echo $row['APELLIDOMATERNO'] ?></td>          
  94.           <td>
  95.           <center><a target="_blank" href="#"><span class="glyphicon glyphicon-list-alt" aria-hidden="true"></span> MOSTRAR</a></center>        
  96.           </td>
  97.      </tr>
  98. <?php
  99. endwhile;
  100. ?>
  101.  
  102. </tbody>
  103. </table>     
  104.  
  105.         </div>
  106.       </div>
  107.      
  108.     </div>
  109.  
  110.     <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
  111.     <script src="js/jquery.min.js"></script>
  112.     <!-- Include all compiled plugins (below), or include individual files as needed -->
  113.     <script src="js/bootstrap.min.js"></script>
  114.     <script src="js/jquery.dataTables.min.js"></script>
  115.     <script src="js/dataTables.bootstrap.js"></script>
  116.     <script type="text/javascript" charset="utf-8">
  117.   $(document).ready(function() {
  118.     $('#ghatable').dataTable();
  119.   });
  120.     </script>
  121.   </body>
  122. </html>


Mi archivo config.php de conexion es el siguiente:

Código PHP:
Ver original
  1. <?php
  2. $mysqli = new mysqli("localhost", "root", "", "test");
  3. if ($mysqli->connect_errno) {
  4.     echo "Failed to connect to MySQL: " . $mysqli->connect_error;
  5. }
  6. ?>

Última edición por erikmx; 11/09/2015 a las 10:08
  #2 (permalink)  
Antiguo 11/09/2015, 14:55
Avatar de Drako_18  
Fecha de Ingreso: mayo-2005
Ubicación: Madrid
Mensajes: 505
Antigüedad: 18 años, 11 meses
Puntos: 16
Respuesta: Realizar Query MySQL desde formulario y mostrar resultado

Buenas compañero,

Pues según entiendo... Quieres volver a realizar la consulta en PHP desde javascript... Para esto, tienes que usar AJAX desde PHP.

Hace unos años lo hacía de otra forma, pero ahora buscando sólo encuentro así:
http://stackoverflow.com/questions/1...ing-javascript


Un saludo!!!
__________________
Rubén Espada
Desarrollador full stack .Net (Angular + JS + .Net Core)
  #3 (permalink)  
Antiguo 11/09/2015, 17:50
 
Fecha de Ingreso: septiembre-2015
Ubicación: Mexico
Mensajes: 4
Antigüedad: 8 años, 7 meses
Puntos: 0
Pregunta Respuesta: Realizar Query MySQL desde formulario y mostrar resultado

Drako muchas gracias por responder, pues ya lei lo que me comentaste pero aun no logo ver la forma de como ejecutar algun procedimiento o funcion para poder remplazar en mi codigo a la hora de hacer la consulta, basicamente en este paso:

Código PHP:
Ver original
  1. <?php
  2. $mysqli->query("SET NAMES 'utf8'");
  3. $res = $mysqli->query("SELECT ID, NOMBRE, APELLIDOPATERNO, APELLIDOMATERNO,SEXO FROM maindb LIMIT 1000");
  4. while ($row = $res->fetch_assoc()):
  5. ?>

En donde pueda insertar lo siguiente:

Código PHP:
Ver original
  1. <?php
  2. $mysqli->query("SET NAMES 'utf8'");
  3. $res = $mysqli->query("SELECT ID, NOMBRE, APELLIDOPATERNO, APELLIDOMATERNO,SEXO WHERE NOMBRE = xNombre AND APELLIDOPATERNO = xApellidoPaterno AND APELLIDOMATERNO = xApellidoMaterno FROM maindb LIMIT 1000");
  4. while ($row = $res->fetch_assoc()):
  5. ?>

donde xNombre, xApellidoPaterno y xApellidoMaterno sean los valores que hay en la caja de texto correspondiente
  #4 (permalink)  
Antiguo 12/09/2015, 04:38
Avatar de Drako_18  
Fecha de Ingreso: mayo-2005
Ubicación: Madrid
Mensajes: 505
Antigüedad: 18 años, 11 meses
Puntos: 16
Respuesta: Realizar Query MySQL desde formulario y mostrar resultado

Buenas,

Pues si has revisado la solución que le dan a esa persona, hay una línea de texto que dice "and your_functions_address.php like this:"
Y usan una variable con el nombre "functionname" a la que le hacen unas validaciones y después en el CASE, hay un apartado que dice "add" que es la función que está llamando el ejemplo, ahí se ejecutaría tu código..

<?php
header('Content-Type: application/json');

$aResult = array();

if( !isset($_POST['functionname']) ) { $aResult['error'] = 'No function name!'; }

if( !isset($_POST['arguments']) ) { $aResult['error'] = 'No function arguments!'; }

if( !isset($aResult['error']) ) {

switch($_POST['functionname']) {
case 'add':
if( !is_array($_POST['arguments']) || (count($_POST['arguments']) < 2) ) {
$aResult['error'] = 'Error in arguments!';
}
else {
/*AQUÍ LO QUE QUIERAS HACER EN LA FUNCIÓN...*/
$aResult['result'] = add(floatval($_POST['arguments'][0]), floatval($_POST['arguments'][1]));
}
break;

default:
$aResult['error'] = 'Not found function '.$_POST['functionname'].'!';
break;
}

}

echo json_encode($aResult);

?>


Revisa el ejemplo, investiga un poco... Y si tienes más dudas... Mira este otro ejemplo http://stackoverflow.com/questions/2...avascript-ajax
O busca en san google, que es lo mismo que estoy haciendo ahora "jquery ajax call php function".


Un saludo!
__________________
Rubén Espada
Desarrollador full stack .Net (Angular + JS + .Net Core)
  #5 (permalink)  
Antiguo 12/09/2015, 09:55
 
Fecha de Ingreso: septiembre-2015
Ubicación: Mexico
Mensajes: 4
Antigüedad: 8 años, 7 meses
Puntos: 0
De acuerdo Respuesta: Realizar Query MySQL desde formulario y mostrar resultado

Muchas gracias Drako nuevamente por tu respuesta, si lo volvere a checar y si he buscado bastante en google, el detalle es que como en Delphi me es muy sencillo resolver este tipo de situaciones el lenguaje PHP, JQuery Ajax pues aunque si le entiendo un poco el detalle de como implementarlo me causa mucho problema y entre tanto codigo es muy facil perderme, seguire intentandolo muchas gracias y saludos
  #6 (permalink)  
Antiguo 24/09/2015, 20:18
 
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

Etiquetas: formulario, mysql, query, resultado
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 11:32.