PHP - Error al llenar formulario con PHP

 
Vista:

Error al llenar formulario con PHP

Publicado por Ivan (1 intervención) el 30/08/2008 03:30:45
Hice un formulario con codigo PHP que se conecta a base de datos Mysql pero cuando...?
cuando se llena el formulario y le dan sumit, para mandar la informacion al servidor, se verifica. Entonces si hay un error, marca el error y me regresa al formulario, pero todo lo que se lleno se borra. No se queda en el formulario. ¿que estara mal en el script?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Error al llenar formulario con PHP

Publicado por Diego Romero (1450 intervenciones) el 30/08/2008 11:18:06
Nada está mal con ese script. Así es el funcionamiento normal de las cosas.

Es tu trabajo como programador hacer que los datos ingresados por el usuario se recuperen en caso de que tenga que volver a ingresarlos corregidos.

Un ejemplo sencillo de cómo puedes hacer esto. Supondré que tienes dos archivos, uno con e formulario HTML y otro es el script de validación.

---- formulario.php ----
<?php
session_start();
$nombre = "";
$apellido = "";
if (isset($_SESSION["datos"])) {
$nombre = $_SESSION["datos"]["nombre"];
$nombre = $_SESSION["datos"]["apellido"];
}
?>
<html>
<body>
<form name="form1" action="validar.php" method="post">
<input type="text" name="nombre" value="<?=$nombre?>">
<input type="text" name="apellido" value="<?=$apellido?>">
<input type="submit" name="submit" value="enviar">
</body>
</html>
------ fin formulario.php --------
------ validar.php -------
<?php
session_start();
$_SESSION["datos"] = Array();

$nombre = @$_POST["nombre"];
$_SESSION["datos"]["nombre"] = $nombre;
$apellido = @$_POST["apellido"];
$_SESSION["datos"]["apellido"] = $apellido;

$err = false;
if (validar_nombre($nombre) == false) { $err = true; }
if (validar_apellido($apellido) == false) { $err = true; }
if ($err) { header("Location: formulario.php"); exit; } // Si hay error en los datos, volver al formulario.

// resto del código aquí...

unset($_SESSION["datos"]); // Si no hubo errores destruir la variable de sesión
?>
----- fin validar.php ----

En formulario.php se abre una sesión. Se inicializan un par de variables. Luego se pregunta si existe el array $_SESSION["datos"], si es así, significa que el usuario ya pasó por este formulario, entonces se procede a extraer los datos del array que fue seteado en validar.php.
Luego esos datos son puestos en el value de los inputs.
Si no existía el array $_SESSION["datos"], las variables inicializadas mostrarán nada porque implica que es la primera vez que el usuario llegó al formulario.

En validar.php se abre una sesión. Se crea el array $_SESSION["datos"] (si ya existía, sus datos se pierden, lo cual es correcto porque esos datos ya no son válidos), se pasan los datos de $_POST a variables de trabajo (para que sea más fácil trabajar con ellas más adelante) y con ellas se van creando posiciones en el array $_SESSION["datos"]. Luego se procede a validar cada uno de los datos (mediante funciones, eso te lo dejo a tu gusto). Si resulta que hay un error en los datos, se manda de regreso al formulario. Si no, se procede con el resto del código. Finalmente, como los datos son correctos, se elimina el array $_SESSION["datos"] puesto que los datos ya fueron usados.

¿Preguntas?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error al llenar formulario con PHP

Publicado por Pineapple (183 intervenciones) el 30/08/2008 11:18:44
No hay nada malo es caracteristica de algunos exploradores, ahora porque no lo verificas campos antes de hacer el submit con javascript, o si lo que entiendo esque quieres revisar los datos de tu formulario con algunos del servidor bueno, pues recuperas los datos con el post o get y los evaluas a tu campo

$_POST['tu_campo']

esto lo pones en cada campo en el value, espero haberme explicado, si no ahi me avisas.

Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar