Foros del Web » Programando para Internet » PHP »

Problema: Form y correción de campos erróneos

Estas en el tema de Problema: Form y correción de campos erróneos en el foro de PHP en Foros del Web. Hola a todos. Vengo a pedirles ayuda por que tengo un problema que no puedo resolver. He buscado por varios lugares y no logro dar ...
  #1 (permalink)  
Antiguo 01/06/2010, 23:15
 
Fecha de Ingreso: enero-2010
Mensajes: 7
Antigüedad: 14 años, 2 meses
Puntos: 0
Problema: Form y correción de campos erróneos

Hola a todos. Vengo a pedirles ayuda por que tengo un problema que no puedo resolver. He buscado por varios lugares y no logro dar con alguna pista para encontrar la solución.

Estoy intentando creando una sección de una página en php donde el usuario ingresa los detalles de una propiedad a una base de datos. La cosa es que los campos que el usuario debe llenar son muchos, aproximadamente 60, pero hay 5 que son expresamente obligatorios.
Naturalmente, confiaría en que la persona que va ingresar los datos no cometería el error de olvidarlos, pero para estar seguro decidí crear una verificación para comprobar que esos 5 campos estén correctamente completados. Y aquí está el problema, la verificación pude hacerla sin más inconvenientes, pues es muy sencilla, pero si alguno de los datos está mal, al redireccionar nuevamente a la sección de carga se pierden absolutamente todos los datos que se habían completado en el form, hay que rellenar todo de nuevo y resultaría por demás tedioso escribir nuevamente los 60 campos.
Lo único que se me ocurrió fué hacer un botón para que el usuario haga click y mediante un "history.back()" regresarlo para hacer la corrección, pero se pierden igual. Me resulta raro, por que había utilizado anteriormente algo similar y funcionaba perfecto, y he revisado mi código una y otra vez y la estructura es la misma, debería funcionar.

Si alguien puede aconsejarme algún otro método se lo agradecería. O si el tema ya se ha tratado en algún otro lado sería de mucha ayuda que me facilitaran algún link.

Desde ya muchas gracias.
  #2 (permalink)  
Antiguo 01/06/2010, 23:30
 
Fecha de Ingreso: enero-2010
Mensajes: 7
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Problema: Form y correción de campos erróneos

Jajaja. Ya encontré la solución en éste mismo foro. http://www.forosdelweb.com/f18/formulario-php-mantener-datos-418357/. Ahora mi consulta es cómo puedo hacer para conservar los estados de un select con éste mismo método.
Si alguien me puede ayudar gracias.

Última edición por noirmadness; 01/06/2010 a las 23:36
  #3 (permalink)  
Antiguo 02/06/2010, 05:01
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 6 meses
Puntos: 214
Respuesta: Problema: Form y correción de campos erróneos

Hola
Bueno, pues que método estas usando? get? post?
cuando envias variables al php, ellas llegan con el nombre del objeto que las contiene,
por ej si tu select se llama categoria entonces al php llegara una variable del arreglo
get o post (dependiendo del method de tu formulario, si no tiene nada, es get por defecto si no me equivoco)

entonces dicha variable se llamara $_GET['categoria'] o $_POST['categoria'], y por esto mismo al devolverla podrías usar, como ya lo estas haciendo con el botón, uso de esta o bueno no se como estes haciendolo en el botón

el caso es que en el select iria un if donde preguntes si esa variable es igual al option o value del select (entonces en cada option iria este if o si lo creas dinámico más sencillo) y si son iguales, pues que lo haga selected

ahora, solo a modo de pregunta, como estas haciendo las validaciones? con php o con js? y si es con js, pues podrías evitar que el formulario sea enviado sin esos datos llamando a una función en el onSubmit del form y obligandolo a un return, así

Ej

Código HTML:
Ver original
  1. <form action=""......... onSubmit="return validar()"/>

y en la función js
Código Javascript:
Ver original
  1. function validar(){
  2. if(campo.value == '')
  3. {
  4. alert("Ingrese valor");
  5. return false;
  6. }else
  7. {
  8. return true;
  9. }
  10. }

saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #4 (permalink)  
Antiguo 02/06/2010, 07:36
 
Fecha de Ingreso: enero-2010
Mensajes: 7
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Problema: Form y correción de campos erróneos

mortiprogramador, gracias por responder.
Con respecto a tu pregunta: los estoy validando con php. No tengo muchos conocimientos de js. Se qué es conveniente validar antes de enviar los datos, pero por el momento prefiero sacarme ésta duda.

Como dije en mi autorespuesta, ya encontré la solución para rellenar los campos del form usando la variable SESSION de ésta manera:

Código PHP:
Ver original
  1. $_SESSION['dir'] = $_POST['dir'];

para recojer los datos y guardarlos en la variable SESSION y luego la verificación y la redirección si los datos son erróneos.

Código PHP:
Ver original
  1. <input type="text" name="dir" value="<?php if (isset($_SESSION['dir'])){ echo $_SESSION['dir']; }?>" />

Entonces listo, si la variable 'dir' se encuentra almacenada en la variable SESSION luego de la redirección, rellena el input con dicha variable.

Mi problema ahora es cómo hacer para devolver automáticamente la el estado de un select. Lo que he logrado es ésto:

Código PHP:
Ver original
  1. <select name="tipo">
  2.    <?php if (isset($_SESSION['tipo'])){ echo "<option value='".$_SESSION['tipo']."'>".$_SESSION['tipo']."</option>"; } ?>
  3.    <option value="Bodega">Bodega</option>
  4.    <option value="Casa">Casa</option>
  5.    <option value="Departamento">Departamento</option>
  6.    <option value="Finca">Finca</option>
  7.    <option value="Local Comercial">Local Comercial</option>
  8.    <option value="Terreno">Terreno</option>
  9. </select>

La verdad es que funciona, el tema es que cuando redirecciona me duplica un option, por que escribe el option de php, y luego los de html.
Por ejemplo, en el código anterior, si el usuario ha seleccionado la opción bodega, cuando redirecciona, en el select aparece seleccionado Bodega, pero si lo despliego la lista tengo nuevamente bodega más abajo repetido.

Pensé en generar el select mediante un "switch", pero me resulta engorroso y no creo que llegue a ser funcional, pues uso unos 30 select con opciones diferentes.
  #5 (permalink)  
Antiguo 02/06/2010, 11:01
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 6 meses
Puntos: 214
Respuesta: Problema: Form y correción de campos erróneos

Hola
Bueno, eso te ocurre porque estas dibujando otro option en php
Lo que te propuse en mi post anterior, era que pusieras un if en los
options, tal vez no me di a entender, voy a darte un ejemplo

Código PHP:
Ver original
  1. <select name="tipo">
  2.    <option value="Bodega" <?php  if (isset($_SESSION['tipo']) && $_SESSION['tipo'] == 'Bodega'){ echo 'selected'; } ?> >Bodega</option>
  3. //y asi con los demás options
  4. </select>

Por eso preguntaba también si generabas este select dinámicamente,
pues te quedaría más fácil hacerlo, por ej con un array php

Código PHP:
Ver original
  1. $array = ('Bodega','otro');
  2. <select name="tipo">
  3. for($i=0;$i<count($array),$i++)
  4. {
  5. if (isset($_SESSION['tipo']) && $_SESSION['tipo'] == $array[$i]
  6. {
  7. echo '<option value="<?php echo $array[$i]?>" selected  >$array[$i]</option>';
  8. }
  9. else
  10. {
  11. echo '<option value="<?php echo $array[$i]?>"   >$array[$i]</option>';
  12. }
  13. }
  14. <option value="Bodega" <?php  if (isset($_SESSION['tipo'])  && $_SESSION['tipo'] == 'Bodega'){ echo 'selected'; } ?>  >Bodega</option>
  15. //y asi con los demás options
  16. </select>

Se puede mejorar ese if claro esta
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #6 (permalink)  
Antiguo 02/06/2010, 18:51
 
Fecha de Ingreso: enero-2010
Mensajes: 7
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Problema: Form y correción de campos erróneos

Si, ahora comprendo lo que me decías. Y tenés total razón. Voy a intentar resolverlo de ese modo. Sin embargo ya empecé con js, estuve adentrandome en el tema y me parece más seguro para evitar errores que puedan cometer los usuarios, y además es más sencillo el tema de los avisos cuando hay conflicto con los datos.
De todos modos gracias por tu ayuda, no voy a utilizar tu solución por el momento pero realmente me hizo un gran click para situaciones posteriores.
  #7 (permalink)  
Antiguo 02/06/2010, 19:24
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 6 meses
Puntos: 214
Respuesta: Problema: Form y correción de campos erróneos

Hola
Bueno, pues javascript te ayuda a ser más interactivo en cuanto a validaciones se refiere, pero tiene solo un pequeño inconveniente
(derkenuke, caricatos, no alisten armas!!) y es que puede desactivarse, y pues si esto ocurre, tu página puede tener inconvenientes, así que te recomiendo uses ambas validaciones, si bien es más trabajo en principio, puedes poner las validaciones en funciones para hacerlas reusables

saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #8 (permalink)  
Antiguo 03/06/2010, 02:22
 
Fecha de Ingreso: enero-2010
Mensajes: 7
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Problema: Form y correción de campos erróneos

Pequeño detalle. Voy a tenerlo en cuenta.
Muchas gracias por tu atención.
Saludos.

Etiquetas: campos, formulario
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 08:14.