Foros del Web » Programando para Internet » PHP »

Duda: No Limpiar los campos de los formularios al actualizar.

Estas en el tema de Duda: No Limpiar los campos de los formularios al actualizar. en el foro de PHP en Foros del Web. Buenas tengo un problema, yo quiero que cuando el usuario se este registrando y me valide los datos ingresados (la validacion la hago con php[Datos ...
  #1 (permalink)  
Antiguo 03/05/2011, 22:54
Avatar de jorge_613  
Fecha de Ingreso: abril-2011
Ubicación: Maracaibo
Mensajes: 19
Antigüedad: 13 años
Puntos: 0
Pregunta Duda: No Limpiar los campos de los formularios al actualizar.

Buenas tengo un problema, yo quiero que cuando el usuario se este registrando
y me valide los datos ingresados (la validacion la hago con php[Datos vacios, Email Invalido, COntraseña Muy COrta Etc]) este me redirecciona a la misma pagina y me muestra el mensaje con el error correspondiente.!
Hasta alli todo bien.

Ahora, yo quiero que una vez me muestre el error y se actualize la pagina, este no me borre la informacion que haya ingresado el usuario en los campos, aunque esta alla sido "invalida" para que simplemente cambie los valores invalidos y no tenga que llenar todo nuevamente..

Es es lo que quiero. Gracias.
Guienme en lo mas posible pro favor.

Espero haberme explicado. gracias.
  #2 (permalink)  
Antiguo 04/05/2011, 00:19
 
Fecha de Ingreso: noviembre-2010
Ubicación: El Salvador
Mensajes: 44
Antigüedad: 13 años, 5 meses
Puntos: 6
Respuesta: Duda: No Limpiar los campos de los formularios al actualizar.

Captura los $_POST de las variables anteriores.
Por ejemplo tenes un input así
<input type="text" name="correo" />

Cuando envíes los datos captura el post y metelo como value de nuevo al campo
<input type="text" name="correo" value="<?php echo $_POST["correo"] ?>"/>

me explico?
  #3 (permalink)  
Antiguo 04/05/2011, 00:48
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 19 años, 10 meses
Puntos: 832
Respuesta: Duda: No Limpiar los campos de los formularios al actualizar.

Cita:
Iniciado por hugotuxsv Ver Mensaje
Cuando envíes los datos captura el post y metelo como value de nuevo al campo
<input type="text" name="correo" value="<?php echo $_POST["correo"] ?>"/>

me explico?
Lo que sugieres devuelve error si el campo está vacío. Mejor así:
Código PHP:
Ver original
  1. value="<?php echo isset($_POST['correo']) ? $_POST['correo'] : null; ?>"
  #4 (permalink)  
Antiguo 04/05/2011, 08:35
Avatar de Sotelio  
Fecha de Ingreso: mayo-2011
Ubicación: Santiago de Chile
Mensajes: 68
Antigüedad: 12 años, 11 meses
Puntos: 21
Respuesta: Duda: No Limpiar los campos de los formularios al actualizar.

Hola, no es lo mismo un error que un "notice". Lo que puso @hugotuxsv mostrará un notice.

De todas maneras es mejor validar la variable antes de mostrarla.

Yo lo haría así, en la cabecera del archivo:

Código PHP:
Ver original
  1. <?php
  2.  
  3. $correo = "";
  4. if (!empty($_POST["correo"]))
  5.    $correo = $_POST["correo"];
  6.  
  7. ?>

Y luego en el código html sólo:

Código HTML:
Ver original
  1. <input type="text" name="correo" value="<?php echo $correo;?>" />

Esto con la intención de separar lo más posible la presentación del código (siguiendo la idea del concepto MVC)

Otra opción de asignar las variables es usar extract($_POST, 1), el 1 para que sobreescriba la variable $correo si existe. En este ejemplo sí existe.

Saludos
Sotelio
  #5 (permalink)  
Antiguo 04/05/2011, 10:09
 
Fecha de Ingreso: noviembre-2010
Ubicación: El Salvador
Mensajes: 44
Antigüedad: 13 años, 5 meses
Puntos: 6
Respuesta: Duda: No Limpiar los campos de los formularios al actualizar.

ahh pero eso facilmente se hacer que no te muestre los mensajes si esta vacío, solo le agregas una "@" antes de la variable capturada.

<input type="text" name="correo" value="<?php echo @$_POST["correo"] ?>"/>
  #6 (permalink)  
Antiguo 05/05/2011, 00:15
Avatar de jorge_613  
Fecha de Ingreso: abril-2011
Ubicación: Maracaibo
Mensajes: 19
Antigüedad: 13 años
Puntos: 0
Exclamación Respuesta: Duda: No Limpiar los campos de los formularios al actualizar.

Lamentablemente no me funciona ninguna de las opciones.
Gracias por responder, Karma +1.

Y o utilizo por ejemplo una de estas validaciones:


Código PHP:
//Validar Campos  vacios
    
if(isset($_POST['send'])){
if(empty(
$nombre_usuario) || empty($apellido_usuario
                || empty(
$dia) || empty($mes) || empty($anno))
{
 
header ("Location: registro.php?error=camposvacios");//Redirecciono al archivo form.html
   
$error="vacio";
   }
    } 
Como ven utilizo un Header que me redirecciona a la pagina para que despues con este codigo:

Código PHP:
<?php if (@$_GET['error'] == "camposvacios") : ?>
<div class="error">
    <strong>Todos los Campos son Obligatorios.</strong>
</div>
<?php endif; ?>
Mostrar el error correspondiente, quizas sea culpa del Header Location el cual no me sirva sus opciones, que me recomiendan. gracias.
  #7 (permalink)  
Antiguo 05/05/2011, 04:28
 
Fecha de Ingreso: noviembre-2010
Ubicación: El Salvador
Mensajes: 44
Antigüedad: 13 años, 5 meses
Puntos: 6
Respuesta: Duda: No Limpiar los campos de los formularios al actualizar.

Pero no es necesario que hagas un header, ya hiciste la captura si algún campo esta vacío, en vez del header imprime el error ahí "Todos los Campos son Obligatorios." y a continuación imprime de nuevo el formulario utilizando los campos que te recomendaba:

<input type="text" name="correo" value="<?php echo @$_POST["correo"] ?>"/>
  #8 (permalink)  
Antiguo 05/05/2011, 18:32
Avatar de jorge_613  
Fecha de Ingreso: abril-2011
Ubicación: Maracaibo
Mensajes: 19
Antigüedad: 13 años
Puntos: 0
Respuesta: Duda: No Limpiar los campos de los formularios al actualizar.

No, aun no me funciona.. Ni modo lo dejare asi xD
Gracias a todos por responder.
  #9 (permalink)  
Antiguo 05/05/2011, 22:58
Avatar de Sotelio  
Fecha de Ingreso: mayo-2011
Ubicación: Santiago de Chile
Mensajes: 68
Antigüedad: 12 años, 11 meses
Puntos: 21
Respuesta: Duda: No Limpiar los campos de los formularios al actualizar.

Hola

El problema es que todos los que respondimos asumimos que el archivo donde se validaban los campos era el mismo archivo donde estaba el formulario. Y según el código que pegaste (debiste hacerlo desde el principio) la validación se hace en un archivo distinto.

Lo que deseas hacer podría ser con sesiones, por ejemplo:

archivoquerecibelosdatos.php
Código PHP:
<?php
session_start
();
/* para validar los campos especificados en $campos */
$error false;
$campos = array("nombre""correo""etc");
foreach (
$campos as $campo) {
   if (empty(
$_POST[$campo))
     
$error true;
   
/* aquí guardo todos los datos ingresados en el formulario, en la sesión */
   
$_SESSION[$campo] = $_POST[$campo];
}

/* si hubo algún campo vacío */
if ($error) { // redireccion con javascript
  
?>
  <script>document.location='registro.php?error=camposvacios';</script>
  <?php
  
die();
} else {
   
/* qué se hace si no hubo error ?? */
}

?>
Luego, en registro.php debes suponer que siempre hay datos en la sesión, o por lo menos verificar:

registro.php
Código PHP:
<?php
$nombre 
"";
$correo "";
$etc "";

/* con extract() generas todos los datos en la sesión como variables.
De esa manera, si en la sesión hay un campo $_SESSION["nombre"], su valor reemplazará a la variable $nombre definida antes  */
if (!empty($_SESSION))
    
extract($_SESSION1); 


?>
Luego en el formulario, del mismo archivo registro.php
Código HTML:
Ver original
  1. <form action="archivoquerecibelosdatos.php" method="post">
  2.  
  3. Nombre:
  4. <input type="text" value="<?php echo $nombre;?>" />
  5. <br />
  6. Correo:
  7. <input type="text" value="<?php echo $correo;?>" />
  8. </form>
  9. <?php if (@$_GET['error'] == "camposvacios") : ?>
  10.    <div class="error">
  11.        <strong>Todos los Campos son Obligatorios.</strong>
  12.    </div>
  13. <?php endif; ?>

Si te fijas, yo trato de separar la generación de las variables con lo que es estrictamente código html (en registro.php). Al final igual se mezcla html con php, pero la idea es que sea lo menor posible.

Ojalá se entienda.

Saludos
Sotelio
  #10 (permalink)  
Antiguo 05/05/2011, 23:23
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 11 meses
Puntos: 322
Respuesta: Duda: No Limpiar los campos de los formularios al actualizar.

Sotelio lamento informarte que sí es un error, solo que en errores PHP hay distintos niveles. Al tipo de error que te refieres es un error a nivel NOTICE. Lo mejor es evitar cualquier tipo de error.
hugotuxsv, trata de nunca usar @ si no es necesario porque está comprobado que gasta muchos recursos. Por qué? Porque tiene que ejecutar la función, analizar si devuelve error, esconderlo, etc...

La mejor opción hasta ahora es la de metacortex que es parecida a la de sotelio a excepción de que se usa operador ternario (más corto) y se usa el método isset

Saludos!
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #11 (permalink)  
Antiguo 06/05/2011, 00:12
Avatar de jorge_613  
Fecha de Ingreso: abril-2011
Ubicación: Maracaibo
Mensajes: 19
Antigüedad: 13 años
Puntos: 0
Exclamación Respuesta: Duda: No Limpiar los campos de los formularios al actualizar.

Gracias a todos por responder, por sus sugerencias y demas he aprendido muchas otras cosas.

Sotelio, lamentablmente el codigo que me pasaste ..valida pero no me muestra los valores. perolo seguire intentando hasta que lo logre, muchas gracias a todos.

Pd: Es recomendable mostrar los errores en la url de esta forma:


Código PHP:
registro.php?error=camposvacios 
Hay forma de ocultarlo?
O simplemente se debe hacer de otra forma.? gracias. y Karma +1.
  #12 (permalink)  
Antiguo 06/05/2011, 00:22
 
Fecha de Ingreso: noviembre-2010
Ubicación: El Salvador
Mensajes: 44
Antigüedad: 13 años, 5 meses
Puntos: 6
Respuesta: Duda: No Limpiar los campos de los formularios al actualizar.

Cita:
Iniciado por Sourcegeek Ver Mensaje
hugotuxsv, trata de nunca usar @ si no es necesario porque está comprobado que gasta muchos recursos. Por qué? Porque tiene que ejecutar la función, analizar si devuelve error, esconderlo, etc...

La mejor opción hasta ahora es la de metacortex que es parecida a la de sotelio a excepción de que se usa operador ternario (más corto) y se usa el método isset

Saludos!
Gracias por el dato, es algo que en verdad no sabía, lo acabo de investigar en php.net y en la nota lo aclara.
http://www.php.net/manual/en/languag...rorcontrol.php

De hecho un código de ejemplo utilizando la "@" dice que toma 1.75 veces más de tiempo en ejecutarse, aunque en promedio solo agrega 0.005 ms a cada llamada.
http://www.php.net/manual/en/languag...rol.php#102543
__________________
http://blog.kiuvox.com
  #13 (permalink)  
Antiguo 07/05/2011, 18:49
Avatar de jorge_613  
Fecha de Ingreso: abril-2011
Ubicación: Maracaibo
Mensajes: 19
Antigüedad: 13 años
Puntos: 0
Exclamación Respuesta: Duda: No Limpiar los campos de los formularios al actualizar.

Cita:
Iniciado por pokelatios Ver Mensaje
te recomiendo leerte esto:

[url]http://iseventh.zxq.net/?seccion=registrodeusuarios[/url]
No entiendo exactamente tu aporte, cual es tu punto?
Gracias.
  #14 (permalink)  
Antiguo 07/05/2011, 20:15
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 11 meses
Puntos: 322
Respuesta: Duda: No Limpiar los campos de los formularios al actualizar.

Cita:
aunque en promedio solo agrega 0.005 ms a cada llamada.
Si pero a la larga generaría mucha espera de más.. Imagina que pasaría si tenemos una DB con un millón de registros y 15 funciones con @ =/

Cita:
No entiendo exactamente tu aporte, cual es tu punto?
Por favor no hagas click en el enlace, el usuario hizo spam en los últimos minutos en varios post. Esperemos a ver que medidas toman los moderadores, ya porté sus mensajes spam
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #15 (permalink)  
Antiguo 07/05/2011, 20:50
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 19 años, 10 meses
Puntos: 832
Respuesta: Duda: No Limpiar los campos de los formularios al actualizar.

Cita:
Iniciado por Sourcegeek Ver Mensaje
La mejor opción hasta ahora es la de metacortex que es parecida a la de sotelio a excepción de que se usa operador ternario (más corto) y se usa el método isset
Sin el isset inevitablemente devuelve error a menos que, desde luego, se apague E_NOTICE previamente.
  #16 (permalink)  
Antiguo 07/05/2011, 21:41
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 11 meses
Puntos: 322
Respuesta: Duda: No Limpiar los campos de los formularios al actualizar.

Si claro, es la función que sirve para checar la existencia de una variable (por no decir la set-encia (?))
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #17 (permalink)  
Antiguo 08/05/2011, 00:35
Avatar de jorge_613  
Fecha de Ingreso: abril-2011
Ubicación: Maracaibo
Mensajes: 19
Antigüedad: 13 años
Puntos: 0
Respuesta: Duda: No Limpiar los campos de los formularios al actualizar.

Cita:
Iniciado por Sourcegeek Ver Mensaje
Si pero a la larga generaría mucha espera de más.. Imagina que pasaría si tenemos una DB con un millón de registros y 15 funciones con @ =/


Por favor no hagas click en el enlace, el usuario hizo spam en los últimos minutos en varios post. Esperemos a ver que medidas toman los moderadores, ya porté sus mensajes spam
Lamentablmente si hice click al enlace, esperemos no haya contaminado mi pc con cualquier cosa extraña, sin embargo encontre cosas interesantes en su web! hahah
Gracias por el aviso.
  #18 (permalink)  
Antiguo 08/05/2011, 13:29
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 11 meses
Puntos: 322
Respuesta: Duda: No Limpiar los campos de los formularios al actualizar.

No, desconfia de eso.
Yo digo que no hagas click porque asi subes el contador de visitas de su pagina, que es lo que quiere lograr haciendo spam. No hay que ayudarles! Estan violando las reglas del foro, ademas de que el spam es de muy mal gusto.

Saludos!
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies

Etiquetas: campos, limpiar, 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 19:34.