Foros del Web » Programando para Internet » PHP »

Cargar input tipo text despues de una consulta a la BD

Estas en el tema de Cargar input tipo text despues de una consulta a la BD en el foro de PHP en Foros del Web. Buena tarde compañeros, Vengo con una inquietud sobre algo que estoy haciendo, aquí voy: tengo una BD con unas tablas entre esas (Usuarios, Recursos, Eventos) ...
  #1 (permalink)  
Antiguo 17/06/2014, 15:04
 
Fecha de Ingreso: septiembre-2013
Mensajes: 35
Antigüedad: 10 años, 7 meses
Puntos: 1
Cargar input tipo text despues de una consulta a la BD

Buena tarde compañeros,

Vengo con una inquietud sobre algo que estoy haciendo, aquí voy:

tengo una BD con unas tablas entre esas (Usuarios, Recursos, Eventos) que ya tienen registros y tengo un formulario, lo que quiero hacer es que al rellenar un campo se cargue otro, es decir, por ejemplo el formulario tiene los siguientes input (numero de documento, nombre, apellidos, edad, genero) quiero que al digitar el numero de documento del usuario se carguen automáticamente el nombre, los apellidos, la edad y el genero correspondientes a ese numero de documento.

Espero haberme expresado bien, espero su pronta colaboración.

De antemano muchas gracias.
__________________
Víctor Soto
  #2 (permalink)  
Antiguo 17/06/2014, 15:22
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Cargar input tipo text despues de una consulta a la BD

Envía una petición asíncrona (Ajax) hacia un archivo que haga la búsqueda de los datos y los devuelva como un objeto JSON, luego, simplemente te queda asignar cada valor a las cajas respectivas.

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 17/06/2014, 15:29
 
Fecha de Ingreso: septiembre-2013
Mensajes: 35
Antigüedad: 10 años, 7 meses
Puntos: 1
Respuesta: Cargar input tipo text despues de una consulta a la BD

gracias por tu respuesta alexis88, no soy muy bueno en esto pero le meto ganas, podrías ponerme un ejemplo base de como es lo que dices que haga para empezar desde ahí?

gracias de nuevo por la respuesta.
__________________
Víctor Soto
  #4 (permalink)  
Antiguo 17/06/2014, 16:25
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Cargar input tipo text despues de una consulta a la BD

Aclaro que esto es offtopic pues Ajax es una técnica utilizada en JavaScript, no en PHP. Para ser breve, utilizaré el método Ajax de jQuery.

Código HTML:
Ver original
  1. Buscar: <input type = "text" id = "dato" />
  2.  
  3.     <form action = "modificar.php" method = "post">
  4.         Nombre: <input type = "text" name = "nombre" />
  5.         Apellido: <input type = "text" name = "Apellido" />
  6.         Edad: <input type = "text" name = "Edad" />
  7.         <input type = "hidden" name = "id" />
  8.         <input type = "submit" />
  9.     </form>

Código Javascript:
Ver original
  1. $("#dato").keypress(function(){
  2.     $.ajax({
  3.         url: "busqueda.php?id=" + this.value,
  4.         type: "GET",
  5.         dataType: "JSON"
  6.     }).done(function(response){
  7.         if (response.estado == 1){
  8.             $("form [name=id]").val(response.id);
  9.             $("form [name=nombre]").val(response.nombre);
  10.             $("form [name=apellido]").val(response.apellido);
  11.             $("form [name=edad]").val(response.edad);
  12.         }
  13.         else{
  14.             $("form [name=id]").val("");
  15.             $("form [name=nombre]").val("");
  16.             $("form [name=apellido]").val("");
  17.             $("form [name=edad]").val("");
  18.         }
  19.     });
  20. });

Código PHP:
Ver original
  1. $dato = mysqli_real_escape_string(strip_tags($_GET['id']));
  2. $query = mysqli_query($conexion, 'SELECT * FROM usuarios WHERE id = ' . $dato);
  3. if (mysqli_num_rows($query)){
  4.     $row = mysqli_fetch_array($query);
  5.     $datos = array('id' => $row['id'], 'nombre' => $row['nombre'], 'apellido' => $row['apellido'], 'edad' => $row['edad'], 'estado' => 1);
  6.     mysqli_free_result($query);
  7. }
  8. else
  9.     $datos = array('estado' => 0);
  10.  
  11. echo json_encode($datos);

Ahora, la explicación. En el documento tenemos una caja de texto en la cual ingresaré el nombre de la persona a buscar, mientras que abajo están las cajas que se cargarán con los datos de la persona encontrada. En el código JS, asigno el méto keypress a la caja de búsqueda, indicando que cuando se escriba en ella, se envíe una petición asíncrona al archivo busqueda.php, adjuntado el valor escrito. En el archivo PHP, desinfecto el dato recibido y realizo la búsqueda en la tabla de la base de datos, haciendo un filtrado con el dato recibido para el campo 'id', que en tu caso es el número de usuario. Si obtengo resultados de la búsqueda, creo un array en el que insertaré el 'id', 'nombre', 'apellido' y 'edad' de la persona encontrada en la búsqueda, pero además, habrá un quinto dato de nombre 'estado' con el valor 1, el cual le indicará al archivo anterior si se encontraron o no datos. Si no hay datos, asigno el 'estado' 0 al array. Finalmente, codifico el array en formato JSON y lo imprimo, siendo esta la respuesta de la petición asíncrona.

Regresando al método Ajax, una vez que reciba una respuesta a la petición, verifico el valor de 'estado'; si este es igual a 1, quiere decir que se encontraron coincidencias y procedo a llenar las respectivas cajas de texto con los datos recibidos, caso contrario, dejo las cajas vacías.

Adapta esto a lo que necesitas hacer.

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 17/06/2014, 17:00
 
Fecha de Ingreso: septiembre-2013
Mensajes: 35
Antigüedad: 10 años, 7 meses
Puntos: 1
Respuesta: Cargar input tipo text despues de una consulta a la BD

Alexis88,

Está genial tu respuesta, muy completa, te doy mil gracias.

trato de adaptarlo a lo que tengo pero no consigo que me funcione

te puedo poner mi código y lo que hice con el tuyo y me dices donde he fallado?

Gracias.
__________________
Víctor Soto
  #6 (permalink)  
Antiguo 17/06/2014, 17:16
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Cargar input tipo text despues de una consulta a la BD

Te sugiero que analices con calma el código del ejemplo, intenta adaptarlo y una vez que realmente no veas otra solución, vienes y nos muestras el código. No está difícil de hacer, además, te expliqué todo paso a paso, dale con calma.

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
  #7 (permalink)  
Antiguo 17/06/2014, 17:56
 
Fecha de Ingreso: septiembre-2013
Mensajes: 35
Antigüedad: 10 años, 7 meses
Puntos: 1
Respuesta: Cargar input tipo text despues de una consulta a la BD

alexis88,

Que pena siento al no saber hacer esto, incluso con una ayuda de tan excelente calidad, te voy a poner el código por si te animas a seguirme ayudando

caso_adverso.php

<?php
$dbhost="localhost";
$dbusuario="root";
$dbpassword="";
$db="bd_greasweb";
$con=mysqli_connect($dbhost,$dbusuario,$dbpassword ,$db);

if (mysqli_connect_errno()) {
echo "No se puede conectar a MySQL: " . mysqli_connect_error();
}
?>

<DOCTYPE html>
<html>
<head>
<script>
$("#documento").keypress(function(){
$.ajax({
url: "busqueda.php?documento=" + this.value,
type: "GET",
dataType: "JSON"
}).done(function(response){
if (response.estado == 1){
$("form [name=documento]").val(response.documento);
$("form [name=nombre]").val(response.nombre);
$("form [name=genero]").val(response.genero);
$("form [name=edad]").val(response.edad);
}
else{
$("form [name=documento]").val("");
$("form [name=nombre]").val("");
$("form [name=genero]").val("");
$("form [name=edad]").val("");
}
});
});
</script>
</head>
<body>
EVENTO ADVERSO
<HR>
<form method="POST" action="ingresa_caso.php" name="caso">
<div>
<label for="documento">N&deg; Documento</label>
<input type="text" name="documento" id="documento">
</div>
<div>
<label for="nombre">Nombre paciente</label>
<input type="text" name="nombre">
</div>
<div>
<label for="genero">G&eacute;nero</label>
<input type="text" name="genero">
</div>
<div>
<label for="edad">edad</label>
<input type="text" name="edad">
</div>
<div>
<label for="servicio">Servicio</label>
<select name="servicio">
<?php
if ($result = mysqli_query($con, "SELECT id_servicio, servicio FROM servicios")) {
/* obtener array asociativo */
while ($row = mysqli_fetch_assoc($result)) {
$id = $row['id_servicio'];
$servicio = $row['servicio'];
echo '<option value="' . $id . '">' . $servicio . '</option>';
}
?>

<?php
}
?>
</select>
</div>
<hr>
<input type="submit" name="guardar" value="guardar">
<input type="hidden" name="id_documento">
</form>
</body>
</html>

en ese archivo tengo mi formulario y el código de php que ves en el SELECT que se llama SERVICIO es para traer de la BD los datos de esa tabla.


busqueda.php

<?php
$dbhost="localhost";
$dbusuario="root";
$dbpassword="";
$db="bd_greasweb";
$con=mysqli_connect($dbhost,$dbusuario,$dbpassword ,$db);

if (mysqli_connect_errno()) {
echo "No se puede conectar a MySQL: " . mysqli_connect_error();
}
$dato = mysqli_real_escape_string(strip_tags($_GET['documento']));
$query = mysqli_query($con, "SELECT nombre, genero, edad FROM pacientes WHERE documento = " . $dato);
if (mysqli_num_rows($query)){
$row = mysqli_fetch_array($query);
$datos = array('documento' => $row['documento'], 'nombre' => $row['nombre'], 'genero' => $row['genero'], 'edad' => $row['edad'], 'estado' => 1);
mysqli_free_result($query);
}
else
$datos = array('estado' => 0);

echo json_encode($datos);
?>


y este archivo busqueda.php es el que me pasaste con algunas modificaciones que le hice pero la verdad no me quiere funcionar.


De antemano muchas gracias.
__________________
Víctor Soto
  #8 (permalink)  
Antiguo 17/06/2014, 18:15
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Cargar input tipo text despues de una consulta a la BD

Saca el script de la cabecera y ponlo justo antes de la etiqueta </body> o envuélvelo en esta función:

Código Javascript:
Ver original
  1. $(function(){
  2.     //Aquí iría el código JS
  3. });

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/06/2014, 18:32
 
Fecha de Ingreso: septiembre-2013
Mensajes: 35
Antigüedad: 10 años, 7 meses
Puntos: 1
Respuesta: Cargar input tipo text despues de una consulta a la BD

ya lo hice y sigue sin funcionar :(
__________________
Víctor Soto
  #10 (permalink)  
Antiguo 17/06/2014, 18:42
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Cargar input tipo text despues de una consulta a la BD

¿Se muestra algún mensaje de error o alerta en consola?
__________________
«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
  #11 (permalink)  
Antiguo 17/06/2014, 18:53
 
Fecha de Ingreso: septiembre-2013
Mensajes: 35
Antigüedad: 10 años, 7 meses
Puntos: 1
Respuesta: Cargar input tipo text despues de una consulta a la BD

no muestra nada, simplemente no hace nada, es como si no hubiera introducido el código.
__________________
Víctor Soto
  #12 (permalink)  
Antiguo 17/06/2014, 19:03
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Cargar input tipo text despues de una consulta a la BD

Creo que no incluiste a la librería jQuery en el documento, lo cual me lleva a suponer que no sabes acceder a la consola (F12 y luego clic en 'Console' tanto en Chrome como en Opera. Para Firefox, instala el Firebug). Coloca esto debajo del formulario y antes del código JavaScript:

Código HTML:
Ver original
  1. <script type = "text/javascript" src = "http://code.jquery.com/jquery-1.11.1.min.js"></script>

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
  #13 (permalink)  
Antiguo 17/06/2014, 19:26
 
Fecha de Ingreso: septiembre-2013
Mensajes: 35
Antigüedad: 10 años, 7 meses
Puntos: 1
Respuesta: Cargar input tipo text despues de una consulta a la BD

tenias razón, no había llamado la librería pero aún llamandola sigue sin funcionar, ya ingresé a la consola y me sale este error

Uncaught SyntaxError: Unexpected end of input
__________________
Víctor Soto
  #14 (permalink)  
Antiguo 17/06/2014, 19:33
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Cargar input tipo text despues de una consulta a la BD

¿Te has fijado en cómo abro y cierro cada elemento <input>? Con una barra inclinada justo antes de cerrar la etiqueta. En realidad, también debería de funcionar sin ella, pero por si las dudas, hazlo así. Sería bueno que muestre en qué línea te manda ese error.

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
  #15 (permalink)  
Antiguo 17/06/2014, 19:46
 
Fecha de Ingreso: septiembre-2013
Mensajes: 35
Antigüedad: 10 años, 7 meses
Puntos: 1
Respuesta: Cargar input tipo text despues de una consulta a la BD

si, ya lo hice pero sigue apareciendo el mismo error y en la consola de chrome no dice la linea donde se produce dicho error. no se si estoy frustado, enojado, decepcionado conmigo mismo
__________________
Víctor Soto

Etiquetas: bd, formulario, input, registro, tabla, text, tipo, usuarios
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 18:37.