Foros del Web » Programando para Internet » PHP »

dos formularios juntos

Estas en el tema de dos formularios juntos en el foro de PHP en Foros del Web. Hola gente, A ver si alguien me aclara la cabeza. Tengo el codigo y me funciona a medias. en una misma pagina tengo dos formularios ...
  #1 (permalink)  
Antiguo 19/08/2013, 11:11
 
Fecha de Ingreso: agosto-2008
Ubicación: Miami, FL
Mensajes: 210
Antigüedad: 15 años, 8 meses
Puntos: 2
Pregunta dos formularios juntos

Hola gente,
A ver si alguien me aclara la cabeza.
Tengo el codigo y me funciona a medias.
en una misma pagina tengo dos formularios con select submit, el primero me lo ejecuta bien, pero el segundo no.
Este es el codigo:

Código PHP:
Ver original
  1. <!doctype html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Documento sin título</title>
  6. </head>
  7.  
  8. <body>
  9. <?php
  10.  
  11. $first_name = $_POST['nombre'];
  12. $last_name = $_POST['apellido'];
  13. $address = $_POST['address'];
  14. $pickup_city = $_POST['pickup_city'];
  15. $pickup_state = $_POST['pickup_state'];
  16. $pickup_zip_code = $_POST['pickup_zip_code'];
  17. $phone = $_POST['phone'];
  18.  
  19. ?>
  20.  
  21.  
  22. <form id="form1" name="form1" method="post" action="pickup.php">
  23.   <select name="datos" id="datos" onchange="this.form.submit();">
  24.      <option value="">select one</option>
  25.      <option value="10663">Client</option>
  26.      <option value="1">Trailer Bridge Jack.</option>
  27.      <option value="2">Trailer Bridge PR.</option>
  28.      <option value="3">Crowley NJ.</option>
  29.      <option value="4">Crowley PR.</option>
  30.      <option value="5">Sea Star Line Jack.</option>
  31.      <option value="6">Sea Star Line PR.</option>
  32.      <option value="7">Sea Star Line EV.</option>
  33.   </select>
  34. <br />  
  35. <br />Pickup Contact<br />  
  36. <br />
  37.  
  38.    Terminal :<input name="first_name" type="text" id="first_name" value="<?php echo $first_name ?>"  /> <br />
  39.    Contact :<input name="last_name" type="text" id="last_name" value="<?php echo $last_name ?>"  /> <br />
  40.    Buyer Number :<input name="buyer_number" type="text" id="buyer_number" value=""  /> <br />
  41.    Address :<input name="address" type="text" id="address" value="<?php echo $address ?>"  /> <br />
  42.    Pickup  :<input name="pickup_city" type="text" id="pickup_city" value="<?php echo $pickup_city ?>"  /> <input name="pickup_state_code" type="text" id="pickup_state_code" value="<?php echo $pickup_state_code ?>" size="3" /> <input name="pickup_zip_code" type="text" id="pickup_zip_code" value="<?php echo $pickup_zip_code ?>" size="6" />
  43.    Phone: <input name="phone" type="text" id="phone" value="<?php echo $phone ?>"  /> <br />
  44.  
  45. </fom>
  46. <br />
  47.  
  48. <?php
  49.  
  50. $first_name_dropoff = $_POST['nombre_dropoff'];
  51. $last_name_dropoff = $_POST['apellido_dropoff'];
  52. $address_dropoff = $_POST['address_dropoff'];
  53. $dropoff_city = $_POST['dropoff_city'];
  54. $dropoff_state = $_POST['dropoff_state'];
  55. $dropoff_zip_code = $_POST['dropoff_zip_code'];
  56. $phone_dropoff = $_POST['phone_dropoff'];
  57.  
  58. ?>
  59.  
  60. <form id="form2" name="form2" method="post" action="dropoff.php">
  61.   <select name="datos2" id="datos2" onchange="this.form.submit();">
  62.      <option value="">select one</option>
  63.      <option value="10663">Client</option>
  64.      <option value="1">Trailer Bridge Jack.</option>
  65.      <option value="2">Trailer Bridge PR.</option>
  66.      <option value="3">Crowley NJ.</option>
  67.      <option value="4">Crowley PR.</option>
  68.      <option value="5">Sea Star Line Jack.</option>
  69.      <option value="6">Sea Star Line PR.</option>
  70.      <option value="7">Sea Star Line EV.</option>
  71.   </select>
  72. <br />  
  73. </br />Delivery Contact<br />
  74. <br />
  75.  
  76.    Terminal :<input name="first_name_dropoff" type="text" id="first_name_dropoff" value="<?php echo $first_name_dropoff ?>"  /> <br />
  77.    Contact :<input name="last_name_dropoff" type="text" id="last_name_dropoff" value="<?php echo $last_name_dropoff ?>"  /> <br />
  78.    Buyer Number :<input name="buyer_number" type="text" id="buyer_number" value=""  /> <br />
  79.    Address :<input name="address_dropoff" type="text" id="address_dropoff" value="<?php echo $address_dropoff ?>"  /> <br />
  80.    Pickup  :<input name="dropoff_city" type="text" id="dropoff_city" value="<?php echo $dropoff_city ?>"  /> <input name="dropoff_state_code" type="text" id="dropoff_state_code" value="<?php echo $dropoff_state_code ?>" size="3" /> <input name="dropoff_zip_code" type="text" id="dropoff_zip_code" value="<?php echo $dropoff_zip_code ?>" size="6" />
  81.    Phone: <input name="phone_dropoff" type="text" id="phone_dropoff" value="<?php echo $phone_dropoff ?>"  /> <br />
  82.  
  83. </fom>
  84. </body>
  85. </html>

cada formulario llama otro php que ejecuta la peticion:

Código PHP:
Ver original
  1. <?php
  2.  
  3. $cliente = $_POST['datos'];
  4.  
  5. //1. Crear conexión a la Base de Datos
  6. $conexion = mysql_connect("localhost","yo","contra");
  7. if (!$conexion) {
  8. die("Fallo la conexión a la Base de Datos: " . mysql_error());
  9. }
  10. //2. Seleccionar la Base de Datos a utilizar
  11. $seleccionar_bd = mysql_select_db("mi_base", $conexion);
  12. if (!$seleccionar_bd) {
  13. die("Fallo la selección de la Base de Datos: " . mysql_error());
  14. }
  15.  
  16. $datos_sql = mysql_query("SELECT * FROM quoted WHERE personalID='".$cliente."'");
  17. while ($fila = mysql_fetch_array($datos_sql))
  18. {
  19. echo'
  20.  
  21. <form name="auxiliar" id="auxiliar" method="post" action="order.php">
  22.  <input type="hidden" name="nombre" value="'.$fila['first_name'].'" />
  23.   <input type="hidden" name="apellido" value="'.$fila['last_name'].'" />
  24.   <input type="hidden" name="address" value="'.$fila['address'].'" />
  25.   <input type="hidden" name="pickup_city" value="'.$fila['pickup_city'].'" />
  26.   <input type="hidden" name="pickup_state_code" value="'.$fila['pickup_state_code'].'" />
  27.   <input type="hidden" name="pickup_zip_code" value="'.$fila['pickup_zip_code'].'" />
  28.   <input type="hidden" name="phone" value="'.$fila['phone'].'" />
  29. </form>
  30.  
  31. <script type="text/javascript">
  32.  document.auxiliar.submit();
  33. </script>
  34. ';
  35. }
  36. ?>

el segundo codigo al que llama es:

Código PHP:
Ver original
  1. <?php
  2.  
  3. $cliente = $_POST['datos2'];
  4.  
  5. //1. Crear conexión a la Base de Datos
  6. $conexion = mysql_connect("localhost","yo","contra");
  7. if (!$conexion) {
  8. die("Fallo la conexión a la Base de Datos: " . mysql_error());
  9. }
  10. //2. Seleccionar la Base de Datos a utilizar
  11. $seleccionar_bd = mysql_select_db("mi_base", $conexion);
  12. if (!$seleccionar_bd) {
  13. die("Fallo la selección de la Base de Datos: " . mysql_error());
  14. }
  15.  
  16. $datos_sql = mysql_query("SELECT * FROM quoted WHERE personalID='".$cliente."'");
  17. while ($fila = mysql_fetch_array($datos_sql))
  18. {
  19. echo'
  20.  
  21. <form name="auxiliar" id="auxiliar" method="post" action="order.php">
  22.  <input type="hidden" name="nombre_dropoff" value="'.$fila['first_name'].'" />
  23.   <input type="hidden" name="apellido_dropoff" value="'.$fila['last_name'].'" />
  24.   <input type="hidden" name="address_dropoff" value="'.$fila['address'].'" />
  25.   <input type="hidden" name="dropoff_city" value="'.$fila['dropoff_city'].'" />
  26.   <input type="hidden" name="dropoff_state_code" value="'.$fila['dropoff_state_code'].'" />
  27.   <input type="hidden" name="dropoff_zip_code" value="'.$fila['dropoff_zip_code'].'" />
  28.   <input type="hidden" name="phone_dropoff" value="'.$fila['phone'].'" />
  29. </form>
  30.  
  31. <script type="text/javascript">
  32.  document.auxiliar.submit();
  33. </script>
  34. ';
  35. }
  36. ?>

al hacer el onchange del primero me carga los datos correctamente, pero al hacer el onchange del segundo me vuelve a ejecutar el primero.

Desde ya muchas gracias por el tiempo prestado
__________________
Se invierte mas dinero en cirugía de pechos y viagra que en la cura del Alzheimer. En unos años tendremos viejas con grandes tetas y viejos con erecciones pero que no recordarán para que sirven..
  #2 (permalink)  
Antiguo 19/08/2013, 11:17
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: dos formularios juntos

¿Te has dado cuenta que cierras ambos formularios con </fom> y no con </form> como debería ser?

Vamos, tu problema es de HTML básico, no tiene relación con PHP.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 19/08/2013, 11:24
 
Fecha de Ingreso: agosto-2008
Ubicación: Miami, FL
Mensajes: 210
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: dos formularios juntos

pateketrueke, perdón, el pasar gran parte de la noche investigando para aprender antes de preguntar conlleva a estos fallos tontos, por suerte hay compañeros que los ven en segundos.

solucionado este tema, me doy cuenta que el fallo que tengo es, que si cargo el primer onchange me carga los datos sin problemas, pero al cargar el segundo onchange me borra los datos de primero.

Alguna idea de como puedo mantener las variables del primero sin que se me borren?

Gracias por la ayuda
__________________
Se invierte mas dinero en cirugía de pechos y viagra que en la cura del Alzheimer. En unos años tendremos viejas con grandes tetas y viejos con erecciones pero que no recordarán para que sirven..
  #4 (permalink)  
Antiguo 19/08/2013, 11:26
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: dos formularios juntos

A la hora de volver a "dibujar" el formulario debes de pintar los valores, ejemplo:
Código PHP:
Ver original
  1. <?php
  2. $nombre = '';
  3. if (is_post()) {
  4.        $nombre = $_POST['nombre'];
  5. }
  6. ?>
  7. <input type="text name="nombre" value="<?php echo $nombre; ?>">

Saludos.
  #5 (permalink)  
Antiguo 19/08/2013, 11:33
 
Fecha de Ingreso: agosto-2008
Ubicación: Miami, FL
Mensajes: 210
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: dos formularios juntos

Hola GatorV,

la verdad no entiendo tu respuesta, bueno en realidad no entiendo donde o en que paso debería crear este codigo.

Perdon pero ya estoy mareado
__________________
Se invierte mas dinero en cirugía de pechos y viagra que en la cura del Alzheimer. En unos años tendremos viejas con grandes tetas y viejos con erecciones pero que no recordarán para que sirven..
  #6 (permalink)  
Antiguo 19/08/2013, 11:54
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: dos formularios juntos

Lo que te trato de decir y dar a entender es que por defecto no se va a volver a llenar tu formulario a menos que tú lo programes así.

Cuando estes dibujando los elementos de tu formulario, tienes que comprobar si ya tenías un valor previo en POST e introducir ese valor en el atributo "value" de tu input para que se vea el valor reflejado.

Saludos.
  #7 (permalink)  
Antiguo 19/08/2013, 12:23
 
Fecha de Ingreso: agosto-2008
Ubicación: Miami, FL
Mensajes: 210
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: dos formularios juntos

ok, la verdad es que no se como va el tema, se lo que necesito hacer y entiendo por que no me da el resultado pero soy incapaz de encontrar la solución.

Probando y probando lo unico que consigo es este error:

Código PHP:
Ver original
  1. Fatal error: Call to undefined function is_post() in /home3/laura/public_html/web_test/dropoff.php on line 8

pero claro, como todo el codigo es un bucle no entiendo bien la razon del mismo.

Gracias
__________________
Se invierte mas dinero en cirugía de pechos y viagra que en la cura del Alzheimer. En unos años tendremos viejas con grandes tetas y viejos con erecciones pero que no recordarán para que sirven..
  #8 (permalink)  
Antiguo 19/08/2013, 12:28
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: dos formularios juntos

is_post no es una función del core, no es que debas de copiar y pegar, debes de entender lo que te digo... te lo pongo más claro a ver si entiendes:

- Tienes que verificar si el método de acceso a tu archivo es POST (aka is_post())
- Sí es post, tienes que ver si tienes el valor de tu formulario
- A la hora de dibujar tu formulario insertas ese valor en el atributo value de tu input.
- Repite X veces por la cantidad de campos que quieras volver a llenar al hacer post.

Saludos.
  #9 (permalink)  
Antiguo 19/08/2013, 12:40
 
Fecha de Ingreso: agosto-2008
Ubicación: Miami, FL
Mensajes: 210
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: dos formularios juntos

ok, creo que el problema aqui es que no nos hemos entendido en lo que yo necesito.

La carga de los datos esta correcta, cuando selecciono la opcion deseada los datos correspondientes se cargar correctamente, hasta ahi todo bien, se como cargar los datos en un formulario dependiendo del select.

Ahora bien, como tengo dos (2) formularios al cargar los datos en el segundo, los datos que tenia cargado en el primero se me han borrado. Lo que yo no puedo hacer es que esos datos que ya estaban cargados en el primer formulario no se borren al cargar los datos del segundo.

el problema, creo yo, es mantener los datos cargados en el primer formulario mientras el segundo hace la peticion para rellenar sus campos.

No se si ahora me explico mejor.

Gracias
__________________
Se invierte mas dinero en cirugía de pechos y viagra que en la cura del Alzheimer. En unos años tendremos viejas con grandes tetas y viejos con erecciones pero que no recordarán para que sirven..
  #10 (permalink)  
Antiguo 19/08/2013, 13:36
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: dos formularios juntos

Claro que te explicas y es lo que te comento, por defecto no va a hacer eso a menos que tú lo programes, tienes que al recargar la pagina imprimir los valores que el usuario te mandó por POST...
  #11 (permalink)  
Antiguo 19/08/2013, 14:22
 
Fecha de Ingreso: agosto-2008
Ubicación: Miami, FL
Mensajes: 210
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: dos formularios juntos

perdona, pero es que no puedo.

No puedo imprimir los valores que el usuario me mando por POST al primer formulario por que no los tengo en ningun lado, digo yo, que a la hora de enviar el segundo formulario debere guardar los datos del primero formulario en algun lugar para poder recuperarlos, no?, es que la logica es muy facil, pero no hay forma.
__________________
Se invierte mas dinero en cirugía de pechos y viagra que en la cura del Alzheimer. En unos años tendremos viejas con grandes tetas y viejos con erecciones pero que no recordarán para que sirven..
  #12 (permalink)  
Antiguo 19/08/2013, 14:39
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: dos formularios juntos

Puedes usar una sesión para almacenarlos y así no tendrías que depender de que te lleguen por POST todo el tiempo.

Saludos.
  #13 (permalink)  
Antiguo 19/08/2013, 18:25
 
Fecha de Ingreso: agosto-2008
Ubicación: Miami, FL
Mensajes: 210
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: dos formularios juntos

pues nada, no lo he podido solucionar, he leido hasta la pagina 23 de los resultados de google y nada.

Gracias igual x tu tiempo
__________________
Se invierte mas dinero en cirugía de pechos y viagra que en la cura del Alzheimer. En unos años tendremos viejas con grandes tetas y viejos con erecciones pero que no recordarán para que sirven..

Etiquetas: Ninguno
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 14:43.