Foros del Web » Programando para Internet » PHP »

Rellenar campos cogiendolos de una bd por php

Estas en el tema de Rellenar campos cogiendolos de una bd por php en el foro de PHP en Foros del Web. Hola a todos.! Tengo un formulario el cual introduces codigo trabajo (obligatorio), y luego puedes elegir entre rellenar código cliente o nombre del cliente. Una ...
  #1 (permalink)  
Antiguo 08/04/2014, 04:45
Avatar de HackID1  
Fecha de Ingreso: febrero-2013
Ubicación: En Update
Mensajes: 492
Antigüedad: 11 años, 9 meses
Puntos: 17
Rellenar campos cogiendolos de una bd por php

Hola a todos.!

Tengo un formulario el cual introduces codigo trabajo (obligatorio), y luego puedes elegir entre rellenar código cliente o nombre del cliente.

Una vez rellene esto quiero que justo debajo de estos 3 campos aparezcan otros campos almacenados en la bd en la tabla clientes pertenecientes al cliente que se ha insertado.

El formulario es este.

Código HTML:
Ver original
  1. <form name="form_recibe" action="trabajos2.php" method="post" onsubmit="return comprobar()">
  2.            
  3.         -Campos obligatorios (*) <br/><br/>
  4.            
  5. <label>(*) C&oacute;digo Trabajo: </label>
  6. <input type="text" name="codtrabajo" onfocus="restaurar()" />
  7.         <br/><br/>
  8.                
  9. <label>(*) C&oacute;digo Cliente: </label>
  10. <input type="text" name="codcliente" maxlength="50" onfocus="restaurar()"  />
  11.     <br/><br/>
  12.                    
  13. <label>(*) Nombre: </label>
  14. <input type="text" name="nombre" maxlength="50" onfocus="restaurar()"  />
  15.         <br/><br/>
  16.  
  17. <label>(*) Apellido: </label>
  18.                     <input type="text" name="apellido" maxlength="50"
  19.                         onfocus="restaurar()"  />
  20.                     <br/><br/>
  21.            
  22.                    
  23. <input name="enviar" type="submit" value="Enviar datos."/>
  24.                
  25.                
  26.     </form>
  27.     </body>
  28. </html>

¿Cómo puedo mostrar esos mismos datos pero en este misma pagina, es para tener esa información hay mismo y seguir con el programa.?

Los campos que quiero tener son: Nombre telefono y email del cliente que corresponde.

NOTA: Nombre aparece si solo se ha rellenado el codigo cliente, o viceversa que aparezca codigo cliente si se ha rellenado el nombre y apellido.

Que esos campos (nombre, telefono, email) aparezcan justo debajo de mi formulario para continuar y poder ver a simple vista esos datos.

Saludos!..
__________________
Puntuar +1 es buena forma de dar las gracias. :P
Your Time is limited, so don't waste it living someone else´s life.
Por: HackID1

Última edición por HackID1; 08/04/2014 a las 04:50
  #2 (permalink)  
Antiguo 08/04/2014, 05:03
Avatar de temerariomalaga  
Fecha de Ingreso: marzo-2013
Ubicación: Londres
Mensajes: 156
Antigüedad: 11 años, 8 meses
Puntos: 9
Respuesta: Rellenar campos cogiendolos de una bd por php

Si quieres que al introducir el codigo del trabajo y del cliente te aparezca automáticamente el nombre, el telefono y el mail entonces tendrás que utilizar ajax para hacerlo. Te explico por pasos:
Primero crea un div con un id. En este div se mostraran los datos. También asignale un id a al codigo del trabajo y al del cliente
Después crea un archivo js con el siguiente codigo.
Código Javascript:
Ver original
  1. function carga()
  2. {
  3. var trabajo=document.getElementById("trabajo").value;
  4. var cliente=document.getElementById("cliente").value;
  5. var xmlhttp;
  6.  
  7. if (window.XMLHttpRequest){
  8.  
  9. xmlhttp=new XMLHttpRequest();
  10. }
  11. else{
  12.  
  13. xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  14. }
  15. xmlhttp.onreadystatechange=function()
  16. {
  17. if (xmlhttp.readyState==4 && xmlhttp.status==200)
  18. {
  19. document.getElementById("id del div donde se mostraran los datos").innerHTML=xmlhttp.responseText;
  20. }
  21. }
  22. xmlhttp.open("POST","script php con la consulta",true);
  23. xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
  24. xmlhttp.send("trabajo="+trabajo+"&cliente="+cliente);
  25. }
Después crea el script php con la consulta sql.
Código PHP:
Ver original
  1. $trabajo=$_POST['trabajo'];
  2. $cliente=$_POST['cliente'];
  3. /*Aquí iria la consulta*/
  4. /*A continuacion lee los resultados y guardalos en variables*/
  5. $nombre=$row['Nombre'];
  6. /*Imprime los input con el valor de la variable*/
  7. echo "<td>Nombre</td>";
  8. echo "<td><input type="text" value="$nombre"></td>;
despues asignale por ejemplo al input cliente el evento onchange="carga()";
__________________
Málaga Club de Fútbol: Memoria, Compromiso, Fe
  #3 (permalink)  
Antiguo 08/04/2014, 08:46
Avatar de HackID1  
Fecha de Ingreso: febrero-2013
Ubicación: En Update
Mensajes: 492
Antigüedad: 11 años, 9 meses
Puntos: 17
Respuesta: Rellenar campos cogiendolos de una bd por php

Holaa gracias por tu respuesta, bueno he estado bastante rato intentando ver mi fallo he cambiado varias veces la consulta etc, el input value tambien lo he cambiado de muchas formas y no me visualiza los datos correctos.

En si.

este es mi código aquí lo expongo.

Lo que quiero es que en el formulario introduzcas ya sea o el codcliente o el codtrabajo y los otros datos se rellenen extrayendo los datos de la bd.

Código PHP:
Ver original
  1. <?php
  2.  
  3. /*Script autorellenar formulario trabajos.php*/
  4.  
  5. $trabajo=$_POST['codtrabajo'];
  6. $cliente=$_POST['codcliente'];
  7.  
  8. /*Aquí la consulta*/
  9.    
  10. include ("abre_conexion.php");
  11.  
  12. $query="SELECT  cl.nombre, cl.apellido, cl.telefono, cl.email
  13.             FROM clientes cl, trabajos tr
  14.             WHERE  cl.codcliente = '$cliente'
  15.             AND cl.codcliente = tr.codcliente
  16.             ";
  17.        
  18. // enviamos la consulta a MySQL
  19. $datos = mysql_query($query, $conexion_db) or die(mysql_error());
  20.  
  21. //mientras alla datos los muestro.
  22. /* esto es lo unico que se visualiza, el nombre correctamente.*/
  23. while ($row = mysql_fetch_assoc($datos)) {
  24.    echo $row['nombre']."<br>";
  25. }
  26.  
  27. /*A continuacion lee los resultados y guardalos en variables*/
  28. $nombre = $row['nombre'];
  29. $apellido = $row['apellido'] ;
  30. $telefono = $row['telefono'] ;
  31. $email = $row['email'] ;
  32.  
  33.  
  34. /*Imprime los input con el valor de la variable*/
  35.  
  36. echo "<td>Nombre</td>";
  37. echo "<td><input type='text' value='$nombre'> </td>";
  38.  
  39. echo "<td>Apellido</td>";
  40. echo "<td><input type='text' value='$apellido'> </td>";
  41.  
  42. echo "<td>Telefono</td>";
  43. echo "<td><input type='text' value='$telefono'> </td>";
  44.  
  45. echo "<td>Email</td>";
  46. echo "<td><input type='text' value='$email'> </td>";
  47.  
  48.  /*en este input sale el input y dentro $nombre, en vez de el nombre extraido de la bd.*/
  49.  echo "<td>Nombre</td>";
  50. echo '<td><input type="text" value="$nombre"></td>';
  51.  
  52.  ?>

El formulario mio no hace caso a el dato que yo escriba en los input:

Código HTML:
Ver original
  1. <label>(*) C&oacute;digo Trabajo: </label>
  2.                     <input type="text" name="codtrabajo"
  3.                          id="trabajo" />
  4.                     <br/><br/>
  5.                    
  6.                         <!-- onchange="carga()"; llama rellenar_campos.php-->
  7.                     <label>(*) C&oacute;digo Cliente: </label>
  8.                     <input type="text" name="codcliente" maxlength="50"
  9.                           id="cliente"  onchange="carga()"; />
  10.                     <br/><br/>

Solamente que cuando me situo encima de el este hace que aparezca abajo el resto de inputs como tu decias, pero en cada input no se ven los datos extraidos.

¿Qué puedo estar haciendo mal,??
La query la he probado de mil formas y ninguna me dio resultado.

Te dejo mi bd. que son 2 tablas haber si me puedes ayudar.

Código SQL:
Ver original
  1. -- CREACION TABLAS bd  control1
  2.  
  3.     /* pongo fecha varchar10 para permitir almacenar la forma de dd/mm/yy*/
  4. CREATE TABLE clientes (
  5.         codcliente  INT NOT NULL,
  6.         nombre      VARCHAR(50),
  7.         apellido    VARCHAR(50),
  8.         telefono    INT,
  9.         email       VARCHAR(50),
  10.     PRIMARY KEY (codcliente)
  11.             );
  12.            
  13.             /* campo: tipo_imagen: almacena tipo imagen MIME */
  14. CREATE TABLE trabajos (
  15.         codtrabajo      INT AUTO_INCREMENT,
  16.         codcliente      INT NOT NULL,
  17.         tipo_trabajo    VARCHAR(20),
  18.         estado          VARCHAR(20),   
  19.         descripcion     text,
  20.     PRIMARY KEY (codtrabajo),
  21.     FOREIGN KEY (codcliente) REFERENCES clientes(codcliente)
  22.             );

Como vez el campo codcliente pertenece a tabla clientes, y es una FKey en la tabla trabajos.

Muchas gracias por tu tiempo y aún asi me has ayudado muchisimo, pero aún veo que los valores no se ven en cada input correspondiente :( .

Saludos!!

PD: pienso que es algo en la consulta que esta mal, como he dicho la he probado de mil formas y no me funciona.
__________________
Puntuar +1 es buena forma de dar las gracias. :P
Your Time is limited, so don't waste it living someone else´s life.
Por: HackID1
  #4 (permalink)  
Antiguo 08/04/2014, 14:38
Avatar de temerariomalaga  
Fecha de Ingreso: marzo-2013
Ubicación: Londres
Mensajes: 156
Antigüedad: 11 años, 8 meses
Puntos: 9
Respuesta: Rellenar campos cogiendolos de una bd por php

Siendo una tabla hija de la otra puedes unirlas usando inner join y así no tienes que comparar los dos codigos de clientes. Prueba la siguiente consulta porque yo creo que el fallo está ahí.
Código MySQL:
Ver original
  1. SELECT  cl.nombre, cl.apellido, cl.telefono, cl.email
  2.             FROM clientes cl INNER JOIN trabajos tr
  3.             ON cl.codcliente=tr.codcliente
  4.             WHERE  cl.codcliente = '$cliente';
__________________
Málaga Club de Fútbol: Memoria, Compromiso, Fe
  #5 (permalink)  
Antiguo 08/04/2014, 14:51
Avatar de HackID1  
Fecha de Ingreso: febrero-2013
Ubicación: En Update
Mensajes: 492
Antigüedad: 11 años, 9 meses
Puntos: 17
Respuesta: Rellenar campos cogiendolos de una bd por php

Lo he probado pero aún así no me rellena los campos.
Hay otra forma de hacer esto?
Gracias por tu ayuda, pero aún sigo fallando cambie la consulta por la que tu me diste pero nada no se muestran los valores.

Creo que se podría hacer también

Código PHP:
Ver original
  1. $codcliente = $_POST['codcliente'] ;
  2.  
  3.  
  4.         if ($codcliente != "" || $codcliente != 0) {
  5.             include('abre_conexion.php');  
  6.  
  7.                 $query = "select * from $tabla_db1 where codcliente = '$codcliente'";
  8.                 $result = mysql_query($query);
  9.  
  10.             while ($registro = mysql_fetch_array($result)){
  11.  
  12.             echo "
  13.  
  14. <td width='50%'><p align='center'><input type='text' name='codcliente' size='20' value='".$registro['codcliente']."' readonly='readonly'></td>
  15.  
  16. <td width='50%'><p align='center'><input type='text' name='nombre' size='20' value='".$registro['nombre']."' readonly='readonly'></td>
  17.  
  18. <td width='50%'><p align='center'><input type='text' name='apellido' size='20' value='".$registro['apellido']."' readonly='readonly'></td>
  19.  
  20. <td width='50%'><p align='center'><input type='text' name='email' size='20' value='".$registro['email']."' readonly='readonly'></td>
  21. ";

Esto lo stoy probando en otra página y funciona mostrando el valor de la página, pero aún asi hay que darle a un botón input type="submit" y eso es lo que me gustaría evitar con tu ayuda.

PD= esto es otro codigo jeje. para otra página. ya mañana probaré haber si encuentro otra solución al problema aquí planteado o si me pueden seguir ayudando aqui en el foro.

Saludoo!!
__________________
Puntuar +1 es buena forma de dar las gracias. :P
Your Time is limited, so don't waste it living someone else´s life.
Por: HackID1
  #6 (permalink)  
Antiguo 08/04/2014, 15:17
Avatar de temerariomalaga  
Fecha de Ingreso: marzo-2013
Ubicación: Londres
Mensajes: 156
Antigüedad: 11 años, 8 meses
Puntos: 9
Respuesta: Rellenar campos cogiendolos de una bd por php

Para evitar usa un input utiliza el código javascript que puse en mi primera respuesta. Para probarlo recuerda que el evento onchange en un input se activa cuando la caja de texto pierde el foco, es decir, haces click en otra caja de texto o en el resto de la página. Comprueba que hayas importado el archivo javascript que contiene la función, que hayas definido el evento onchange en el input que deseas. Ve probando poco a poco y prueba a realizar la consulta sin php, es decir, directamente desde mysql. Espero que soluciones esto prontito
__________________
Málaga Club de Fútbol: Memoria, Compromiso, Fe

Etiquetas: bd, campos, formulario, html, rellenar, tabla
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 09:03.