Cita:
Iniciado por usermax
De todas maneras te voy a dar mi punto de vista.
Además cuando rediriges a otra página vas a perder TODAS las variables POST. Y todo es inutil.
Por qué redirigir a otra página, hazlo todo en la misma!
No todo es inutil ya que la finalidad de redirigir al usuario es que no se vuelvan a procesar las variables si es que las variables fueron validas. Por ejemplo: Si la finalidad de este formulario fuera la de guardar los valores de los campos en una bd ¿que crees que sucedería si despues de guardar los datos en la bd, al usuario se le ocurre presionar el botón de "actualizar página"? ¿te imaginas cuantas veces se van a guardar los mismos datos en la bd; para eso es la redirección, de esta manera solucionaríamos este problema ya que aunque presionemos el boton actualizar ya no se procesaran otra vez estas secuencias de comando y lo unico que se actualizará será el mensaje de salida que tenemos en tupagina.php.
Cita:
Iniciado por cala932
El problema me parece es que cuando le das submit, vuelve a procesar la pagina y lo primero que hace es esto:
Código PHP:
$nombre = "";
$ape_pat = "";
$ape_mat = "";
$edad = "";
Quita esa parte y probalo nuevamente, para saber si es lo que te digo. Saludos
Tienes razon en cuanto a que lo primero que se procesa son las variables vacias pero, para que no se quede por siempre ese valor estamos poniendo enseguida un condicional que nos dice: "si se presino el boton enviar...", aquí le asignamos el nuevo valor a estas variables que son los valores que enviamos mediante el metodo POST y de esta forma las variables ya no son vacias "en teoría" ya que el usuario puede enviarnos campos con espacios y esto lo resolvemos validando los campos despues.
Cita:
Iniciado por The Neurochild
Voy a reformular la pregunta, ¿alguien sabe como mandar las variables de formulario.php a tupagina.php? averigüé en otro foro que al redireccionar, se pierde todo lo hecho en la primera página, puesto que el destino no está dentro de la sección "action" del formulario. Que solamente sirve usando variables session. Si conocen del tema, por favor manden un ejemplo con el uso de este tipo de variables...
saludos
The Neurochild
Eso es totalmente cierto, para eso tienes que realizar todo lo que quieres hacer con esas variables antes de redireccionar, la finalidad de redireccionar es la que le acabo de expliacar al amigo usermax. Checa el ejemplo y ve lo que puse antes del header:
formulario.php
Código PHP:
<?php
// Valores por default de las variables
$nombre = "";
$ape_pat = "";
$ape_mat = "";
$edad = "";
if( isset( $_POST['submit'] ) )
{
// Creamos nombres de variables cortos
$nombre = trim( $_POST['nombre'] );
$ape_pat = trim( $_POST['ape_pat'] );
$ape_mat = trim( $_POST['ape_mat'] );
$edad = trim( $_POST['edad'] );
$sexo = trim( $_POST['sexo'] );
$ocupacion = trim( $_POST['ocupacion'] );
// validamos que se hayan enviado los campos nombre, edad y alguno de los 2 apellidos
if( ( !empty( $nombre ) && !is_numeric( $nombre ) ) && ( !empty( $ape_pat ) || !empty( $ape_mat ) ) && ( !is_numeric( $ape_pat ) && !is_numeric( $ape_mat ) ) && ( !empty( $edad ) && is_numeric( $edad ) ) && !empty( $sexo ) && !empty( $ocupacion) )
{
/*
En esta parte haces todo lo que consideres necesario con las variables, por ejemplo
se me ocurre que guardes estos datos en una bd. Despues de ejecutar el query y de verifi
car que todo haya salido bien ahora si redirigimos hacia otra página para que le indiquemos
al usuario que todo salio bien y que sus datos han sido guardos.
*/
header( "Location: tupagina.php" );
exit;
}
else
{
echo "Por favor corrija los campos marcados con rojo.</br>";
if( empty( $nombre ) || is_numeric( $nombre ) )
$nombre = $nombre."\" style=\"background-color: #FF0000\"";
if( empty( $ape_pat ) && empty( $ape_mat ) )
{
echo "Por favor, de los campos que estan marcados con verde llene alguno de ellos.</br>";
$ape_pat = $ape_pat."\" style=\"background-color: #00FF00\"";
$ape_mat = $ape_mat."\" style=\"background-color: #00FF00\"";
}
if( is_numeric( $ape_pat ) )
$ape_pat = $ape_pat."\" style=\"background-color: #FF0000\"";
if( is_numeric( $ape_mat ) )
$ape_mat = $ape_mat."\" style=\"background-color: #FF0000\"";
if( empty( $edad ) || !is_numeric( $edad ) )
$edad = $edad."\" style=\"background-color: #FF0000\"";
if( empty( $sexo ) )
$sexo = "nada";
if( empty( $ocupacion ) )
$ocupacion = "vacio";
echo "<p>";
}
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin título</title>
</head>
<body>
<p>
Los campos marcados con asterisco (*) son obligatorios y en cuanto a los apellidos, por lo menos debe escribir uno:</p>
<form action="<?php echo $SERVER['PHP_SELF']; ?>" method="post" name="forma">
<p>Nombre:
<input name="nombre" type="text" value="<?php echo $nombre; ?>" />
<br />
Apellido Paterno:
<input name="ape_pat" type="text" value="<?php echo $ape_pat; ?>" /><br />
Apellido Materno:
<input name="ape_mat" type="text" value="<?php echo $ape_mat; ?>" /><br />
Edad:
<input name="edad" type="text" value="<?php echo $edad; ?>" /></br>
Sexo:
Hombre<input type="radio" name="sexo" value="Hombre" <?php if( $sexo == "Hombre" ) echo "checked"; elseif( $sexo == "nada" ) echo "style=\"background-color: #FF0000\""; ?> >
Mujer<input type="radio" name="sexo" value="Mujer" <?php if( $sexo == "Mujer" ) echo "checked"; elseif( $sexo == "nada" ) echo "style=\"background-color: #FF0000\""; ?> ></br>
Ocupación:
<select name="ocupacion" <?php if( $ocupacion == "vacio" ) echo "style=\"background-color: #FF0000\""; ?> >
<option value="">Seleccione una ocupación</option>
<option value="director" <?php if( $ocupacion == "director" ) echo "selected"; ?> >Director</option>
<option value="ejecutivo" <?php if( $ocupacion == "ejecutivo" ) echo "selected"; ?> >Ejecutivo</option>
<option value="otro" <?php if( $ocupacion == "otro" ) echo "selected"; ?> >Otro</option>
</select><p>
<input name="submit" type="submit" value="Enviar" /></p>
</form>
</body>
</html>
tupagina.php
Código PHP:
<?php
// aunque se presione F5 o el botón de actualizar lo unico que se procesará será este
// mensaje de salida
echo "Se enviaron los campos correctamente";
?>
Creo que toda la confución la generé yo desde un principio al no explicarme bien, trate de ser lo más explicito que pude

espero que ahora me hayan entendido mejor y que ahora si les trabaje bien su código. Suerte