Ver Mensaje Individual
  #28 (permalink)  
Antiguo 18/04/2007, 09:10
Avatar de Erikfrancisco
Erikfrancisco
 
Fecha de Ingreso: noviembre-2003
Ubicación: Estado de México
Mensajes: 503
Antigüedad: 21 años, 3 meses
Puntos: 4
Re: Formulario + campos obligatorios + menus desplegables

Cita:
Iniciado por usermax Ver Mensaje
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 Ver Mensaje
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 Ver Mensaje
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&iacute;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