elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Combinación Letal!: Formulario y PHP
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Combinación Letal!: Formulario y PHP  (Leído 2,921 veces)
The Neurochild

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Combinación Letal!: Formulario y PHP
« en: 17 Abril 2007, 21:15 pm »

Buena tardes, soy nuevo en este foro. Les mando un codigo que hasta los momentos funcionaba, pero con un pequeño detalle:

formulario
Código:
<?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) )
   {
      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 
$nombre = $_POST['nombre'];
$ape_pat = $_POST['ape_pat'];
$ape_mat = $_POST['ape_mat'];
$edad = $_POST['edad'];
$sexo = $_POST['sexo'];
$ocupacion = $_POST['ocupacion'];
echo $nombre." ".$ape_pat." ".$ape_mat." ".$edad." ".$sexo." ".$ocupacion."<br>";
echo "Se enviaron los campos correctamente";
// hacemos lo que se nos antoje con las variables
?>

Ahora, les digo cual es el problema: a pesar de validar todos los campos del formulario (que no estén vacios), me dá la impresion que en la siguiente página no imprime los valores de formulario.php (realizado por el método post). Notese que el action sirve para que no se mande nada hasta que los campo obligatorios estuviesen llenos y la pagina de destino, tupagina.php, está puesta en la instrucción header para cuando dicha acción esté realizada.

Como hago para que se muestren las variables del formulario en la pagina siguiente?

Espero una pronta respuesta...

Atentamente

The Neurochild


En línea

alone-in-the-chat


Desconectado Desconectado

Mensajes: 587


Ver Perfil
Re: Combinación Letal!: Formulario y PHP
« Respuesta #1 en: 17 Abril 2007, 21:26 pm »

Al hacer el redirect estas perdiendo las variables que enviaste por el formulario usando el metodo POST
algo sencillo y rapido seria que metas esas valores que llegan x POST a variables de session
entonces ya podrias trabajarlos en la otra pagina
Saludos.


En línea

Because maybe
You're gonna be the one that saves me
And after all
You're my wonderwall
d[n_n]b
Casidiablo
Desarrollador
Colaborador
***
Desconectado Desconectado

Mensajes: 2.919



Ver Perfil WWW
Re: Combinación Letal!: Formulario y PHP
« Respuesta #2 en: 17 Abril 2007, 21:27 pm »

El problema es que tu lo que haces con el header() es simplemente redireccionar a la página tupagina.php, pero obviamente "redireccionando" no se envian datos (ni GET ni POST). La verdad no conozco ninguna funcion para hacer lo que quieres. Pero... porque no pones lo que está dentro de tupagina.php en el formulario, así (esta es la manera fácil):
Código:
<?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) )
   {
      $nombre = $_POST['nombre'];
$ape_pat = $_POST['ape_pat'];
$ape_mat = $_POST['ape_mat'];
$edad = $_POST['edad'];
$sexo = $_POST['sexo'];
$ocupacion = $_POST['ocupacion'];
echo $nombre." ".$ape_pat." ".$ape_mat." ".$edad." ".$sexo." ".$ocupacion."<br>";
echo "Se enviaron los campos correctamente";
// hacemos lo que se nos antoje con las variables
   }
   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>

Otra manera más elegante es como dice alone-in-the-chat...
En línea

дٳŦ٭
GNU/Linux Infrastructure Specialist
Ex-Staff
*
Desconectado Desconectado

Mensajes: 5.110


Ver Perfil WWW
Re: Combinación Letal!: Formulario y PHP
« Respuesta #3 en: 18 Abril 2007, 01:46 am »

Cookies.

O como ya te dijo mi colega alone-in-the-chat usa variables de sesión.

Saludos
En línea

The Neurochild

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Combinación Letal!: Formulario y PHP
« Respuesta #4 en: 18 Abril 2007, 14:46 pm »

Alguien podría enseñarme un ejemplo de como se guarda en una variable session con este ejemplo. en verdad necesito eso, admito que soy principiante en esto de PHP, pero seé las bases del mismo

Atentamente

The Neurochild
En línea

romi

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Combinación Letal!: Formulario y PHP
« Respuesta #5 en: 27 Abril 2007, 03:34 am »

Bueno no se si apuntabas a esto  pero espero que te sirva el ejemplo a cont.:

 
//aca primero te conectas a la base de datos...si es que usas...
//veo si existe el usuario
$usuario=$_POST["usuario"];//obtengo datos del form
$contraseña=$_POST["contraseña"];
              //Sentencia SQL para buscar un usuario con esos datos
$ssql = "SELECT * FROM `amigos` WHERE `User`='$usuario' and `Password`='$contraseña'";
             //Ejecuto la sentencia
 
$rdoConsulta=mysql_query($ssql,$conexion);
 
 if (mysql_num_rows($rdoConsulta)!=0)
    {
      session_start();

//DE LA FORMA SIGUIENTE "MANTENES" los valores ingresados por el usuario en el form.De esta manera luego podes usarlas en cualquier otra pagina del sitio por decirlo asi...
      $_SESSION["autentificado"]="SI"; ; //agrega la variable de session autentificado
      $_SESSION["usuario"]=$usuario;
..........continua script ......


esa es una forma de mantener valores en el form y ademas guardarlos permanentes usando una base de datos.

O sea el $_SESSION["NOMBRE-VAR"] es como un array asociativo, lñe ingresas los valores q queres vos...depsues si los necesitas en otro lado...haces $_mivariable=$_SESSION["nombredevariable que queres"]



}
« Última modificación: 27 Abril 2007, 03:38 am por romi » En línea

Rudy21

Desconectado Desconectado

Mensajes: 154


Rudy21 Web Design


Ver Perfil WWW
Re: Combinación Letal!: Formulario y PHP
« Respuesta #6 en: 1 Mayo 2007, 01:04 am »

Bueno no c si ya hayas solucionado tu problema pero aki te dejo loq ue yo ago apra las essiones

primero vemos si se ha iniciao la sesion SI NO la iniciamos

Código:
<?php
if (!isset($_SESSION)) {
  session_start();
}

despues de eso Pues Metes Tus Variables POST a las Vaiables de Session:

Código:
<?php
$_SESSION['nombre'] = $_POST['nombre'];

y así sucesivamente con los demás datos

y en tupagina.php

ya no usas $_POST['nombre']

sino
$nombre = $_SESSION['nombre'];


solo te digo que en lo primero de tupagina.php y en el formulario metas lo de iniciar la sessión


Salu2

si tienes dudas postea y te ayudo / ayudamos
En línea


[.:: NauJFracT ::.]


Desconectado Desconectado

Mensajes: 458


[ .:: NauJFracT ::.]


Ver Perfil
Re: Combinación Letal!: Formulario y PHP
« Respuesta #7 en: 2 Mayo 2007, 06:42 am »

o si quieres puedes enviar tu formulario con algo de JS...
Código:
document.elnombredetuform.submit()
En línea

De vuelta...
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
El imparable avance de la impresión 3D permite crear crearuna pistola letal e...
Noticias
wolfbcn 1 1,041 Último mensaje 14 Julio 2015, 04:44 am
por survivor_evil
Holanda aprobará una «pastilla letal» para los mayores de 70 cansados de vivir
Foro Libre
Machacador 2 1,299 Último mensaje 5 Febrero 2020, 21:42 pm
por Machacador
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines