Formulario con php y mysql parte 2

Formulario con php y mysql parte 2

En la entrada pasada creamos la estructura de las páginas de nuestro formulario con php y mysql, ahora en esta otra parte vamos a ver cómo crear la aplicación que validar o procesara la información de esos formularios.

Sesiones y formularios

Antes de empezar a crear el código como siempre te voy pedir algo muy importante que hay que tener en cuenta para crear cualquier aplicación y es tener claro los puntos que necesitas para que no te pierdas y entres en confusiones.

Idea centrar de nuestro formulario con php y mysql

Básicamente lo que queremos conseguir es lo siguiente. Que si el usuario llega a nuestro sitio web ya sea de compras o cualquier otro motivo, este pueda entrar en el formulario y enviarnos sus informaciones.

Entonces la aplicación que crearemos en php funcionara de la siguiente manera

  • Comprobara que la sesión no existe
  • En caso que no exista te manda a la pagina1.php
  • Dentro de la pagina1.php te pide varios datos y estos datos son enviado por un form a a la página procesa.php
  • Una vez en la pagina php primero comprobamos que la sesión no existe
  • Luego comprobamos que los campos no hayan sido enviados en blanco
  • En caso que se hayan enviado en blanco devolvemos un mensaje por la url indicándole al usuario el campo que tiene que llenar
  • Si todo fue enviado entonces creamos la sesión y la guardamos en el servidor con un nombre
  • Con la sesión ya creada enviamos al usuario a la segunda página que es pagina2.php
  • Y la segunda página hace la misma rutina que la primera también he agregado un botón por si el usuario quiere cancelar el formulario y no quiere que se envíen los datos para eso creamos un archivo llamado salir.php que es el que se va a encargar que el usuario sierre la sesión si se presiono el botón cancelar.

Bueno empezamos con nuestro código en php

Lo primero que vamos hacer es colocar el siguiente código al principio de cada archivo antes de cualquier etiqueta o código.

<?php
session_start();
error_reporting(E_ALL^E_NOTICE);
?>

Esta 2 línea de código lo que hacen es comprobar la sesión en el servidor en cada una de las páginas de nuestra aplicación la segunda línea es para no permitir que php nos muestre mensajes de noticias porque no se ha imprimido una variable o algo por el estilo.

Ahora abre el archivo procesar.php y pega el siguiente codigo

<?php
session_start();
error_reporting(E_ALL^E_NOTICE); // no permitimos que php muestre noticias
$primera=$_REQUEST['pagina']; // comprobamos que pagina se ha enviado
if($primera==1){
$nombre=$_REQUEST['name'];
if(!$nombre==''){// Sometemos los datos  a comprobacion de no estar vacio
$_SESSION['nombre']=$nombre;
$apellido=$_REQUEST['apellido'];
if(!$apellido==''){
$_SESSION['apellido']=$apellido;
$correo=$_REQUEST['correo'];
if(!$correo==''){
$_SESSION['correo']=$correo;
$edad=$_REQUEST['edad'];
if(!$edad==''){
$_SESSION['edad']=$edad;
$sexo=$_REQUEST['sexo'];
if(!$sexo==''){
$_SESSION['sexo']=$sexo;
$ocupacion=$_REQUEST['ocupacion'];
if(!$ocupacion==''){
$_SESSION['ocupacion']=$ocupacion;
$sortero=$_REQUEST['sortero'];
if(!$sortero==''){
$_SESSION['sortero']=$sortero;
header("Location: pagina2.php");
}else{
header("Location: pagina1.php?id=sortero");
}
}else{header("Location: pagina1.php?id=ocupacion");}
}else{header("Location: pagina1.php?id=sexo");}
}else{header("Location: pagina1.php?id=edad");}
}else{header("Location: pagina1.php?id=correo");}
}else{header("Location: pagina1.php?id=apellido");}
}else{header("Location: pagina1.php?id=nombre");
}
}elseif($primera==2){ // comprobamos que la pagina enviada es la 2
$pais=$_REQUEST['pais'];
if(!$pais==''){ // comprobamos que que los campos no esten en blanco
$_SESSION['pais']=$pais; // si la variable contiene dato la guardamos en una sesion y asi sucesivamente
$probincia=$_REQUEST['probincia'];
if(!$probincia==''){
$_SESSION['probincia']=$probincia;
$municipio=$_REQUEST['municipio'];
if(!$municipio==''){
$_SESSION['municipio']=$municipio;
$casacalle=$_REQUEST['casacalle'];
if(!$casacalle==''){
$_SESSION['casacalle']=$casacalle;
$producto=$_REQUEST['producto'];
if(!$producto==''){
$_SESSION['producto']=$producto;
$precio=$_REQUEST['precio'];
if(!$precio==''){
$_SESSION['precio']=$precio;
$cantidad=$_REQUEST['cantidad'];
if(!$cantidad==''){
$_SESSION['cantidad']=$cantidad;
header("Location: pagina3.php"); // si todo salio bien redireccionamos al usuario a la siguiente pagina
}else{
header("Location: pagina2.php?id=cantidad"); // si alguno de los campos esta vacio impidimos que el usuario pase a la siguiente pagina y lo devolvemos a la pagina con un mensaje del campo que falta
}
}else{header("Location: pagina2.php?id=precio");}
}else{header("Location: pagina2.php?id=producto");}
}else{header("Location: pagina2.php?id=casacalle");}
}else{header("Location: pagina2.php?id=municipio");}
}else{header("Location: pagina2.php?id=probincia");}
}else{header("Location: pagina2.php?id=pais");}
}elseif($primera==3){ // comprobamos que la pagina sea la 3
$modopago=$_REQUEST['mpago'];
if(!$modopago==''){ // sometemos los datos a comprobasion
$_SESSION['modopago']=$modopago;
$fecha=$_REQUEST['fecha'];
if(!$fecha==''){
$_SESSION['fecha']=$fecha;
$referencia=$_REQUEST['referencia'];
if(!$referencia==''){
$_SESSION['referencia']=$referencia;
$web=$_REQUEST['web'];
if(!$web==''){
$_SESSION['web']=$web;
$telefono=$_REQUEST['telefono'];
if(!$telefono==''){
$_SESSION['telefono']=$telefono;
$celular=$_REQUEST['celular'];
if(!$celular==''){
$_SESSION['celular']=$celular;
$pin=$_REQUEST['pin'];
if(!$pin==''){
$_SESSION['pin']=$pin;
header("Location: pagina1.php?id=4"); // si todo salio bien lo mandamos a la pagina1.php con un parametro por url de 4 para sacar un mensaje
}else{
header("Location: pagina3.php?id=pin"); // si hay algun campo vacio devolvemos el usuario y le indicamos que campo es que esta vacio
}
}else{header("Location: pagina3.php?id=celular");}
}else{header("Location: pagina3.php?id=telefono");}
}else{header("Location: pagina3.php?id=web");}
}else{header("Location: pagina3.php?id=referencia");}
}else{header("Location: pagina3.php?id=fecha");}
}else{header("Location: pagina3.php?id=modopago");}
}else{
header("Location:".$_SERVER['HTTP_REFERER']);
}
?>

Bueno ese es nuestro archivo procesar.php ahora vamos agarrar cada uno de los parámetros que este archivo nos mande por URL en cada una de las paginas.

Primero vamos a agarrar los datos en caso que el usuario haya rellenado todos los campos bien y que desee enviar sus datos a la base de datos.
<h2>Pagina Principal</h2>
Debajo de este linea copia el siguiente codigo.

<?php if(($_SESSION) and ($_GET['id']==4)){?>
<font color="#FF0000"><b>Hola!,</b>
<?php echo $_SESSION['nombre']?> confirma tus datos<br /></font>
<b>Nombre:</b> <?php echo $_SESSION['nombre']?><br />
<b>Apellido:</b> <?php echo $_SESSION['apellido']?><br />
<b>Correo:</b> <?php echo $_SESSION['correo']?><br />
<b>Edad:</b> <?php echo $_SESSION['edad']?><br />
<b>Sexo:</b> <?php echo $_SESSION['sexo']?><br />
<b>Ocupacion:</b> <?php echo $_SESSION['ocupacion']?><br />
<b>Pais:</b> <?php echo $_SESSION['pais']?></b><br />
<b>Probincia:</b> <?php echo $_SESSION['probincia']?><br />
<b>Municipio:</b> <?php echo $_SESSION['municipio']?><br />
<b>Direccion:</b> <?php echo $_SESSION['casacalle']?><br />
<b>Producto a comprar:</b> <?php echo $_SESSION['producto']?></b><br />
<b>Precio producto:</b> <?php echo $_SESSION['precio']?><br />
<b>Modo a pagar:</b> <?php echo $_SESSION['modopago']?><br />
<b>Fecha de hoy:</b> <?php echo $_SESSION['fecha']?><br />
<b>Referido por:</b> <?php echo $_SESSION['referencia']?><br />
<b>Tu sitio web:</b> <?php echo $_SESSION['web']?><br />
<b>No.Telefono:</b> <?php echo $_SESSION['telefono']?><br />
<b>Celular:</b> <?php echo $_SESSION['celular']?><br />
<b>Tu pin:</b> <?php echo $_SESSION['pin']?><br />
<font color="#99FF00">Si son correcto envia tu solicitud</font><br />
<form action="salir.php" method="post">
<input type="submit" value="Cancelar" id="procesar"/>
</form>
<form action="#" method="post">
<input type="submit" value="Confirmar" id="procesar"/>
</form><?php
}else{
?>
<?php
if($_GET['id']=='nombre'){
echo '<font color="#FF0000">Falta el nombre</font>';
}elseif($_GET['id']=='apellido'){
echo '<font color="#FF0000">Falta el apellido</font>';
}elseif($_GET['id']=='correo'){
echo '<font color="#FF0000">Falta el correo</font>';
}elseif($_GET['id']=='edad'){
echo '<font color="#FF0000">Falta la edad</font>';
}elseif($_GET['id']=='sexo'){
echo '<font color="#FF0000">Falta el sexo</font>';
}elseif($_GET['id']=='ocupacion'){
echo '<font color="#FF0000">Falta la ocupacion</font>';
}elseif($_GET['id']=='sortero'){
echo '<font color="#FF0000">Falta el campo soltero o casado</font>';
}
?>

Con el codigo anterior para que funcione tienes que buscar el final del formulario o sea la etiqueta de sierre </form>
y despues de esta etiqueta colocar esta linea de codigo.

<?php } ?>

Esta linea de codigo lo que hace es cerrar nuestro codigo php que teniamos abierto arriba en caso de que se hayan enviado todos los datos correctos.

Qué hacemos con este código? Simple si te fijas lo que hacemos aquí es comprobar la URL con el método GET y ver si coincide con el id que nos ha enviado el archivo procesar.php en caso de que alguno coincida entonces nos imprime un mensaje en caso que no entonces todo paso bien.

Ahora voy a colocar el mismo código que valida las 2 páginas siguientes colócalos debajo de la misma etiqueta que colocaste el primero pero en la pagina correspondiente.

pagina2.php

<?php
if($_GET['id']=='pais'){
echo '<font color="#FF0000">Falta el nombre del pais</font>';
}elseif($_GET['id']=='probincia'){
echo '<font color="#FF0000">Falta la probincia</font>';
}elseif($_GET['id']=='municipio'){
echo '<font color="#FF0000">Falta el municipio</font>';
}elseif($_GET['id']=='casacalle'){
echo '<font color="#FF0000">Falta la direccion</font>';
}elseif($_GET['id']=='producto'){
echo '<font color="#FF0000">Falta el nombre del producto</font>';
}elseif($_GET['id']=='precio'){
echo '<font color="#FF0000">Falta el precio del producto</font>';
}elseif($_GET['id']=='cantidad'){
echo '<font color="#FF0000">Falta la cantidad a comprar</font>';
}
?>

pagina3.php

<?php
if($_GET['id']=='modopago'){
echo '<font color="#FF0000">Falta el modo a pagar/font>';
}elseif($_GET['id']=='fecha'){
echo '<font color="#FF0000">Tienes que poner una fecha</font>';
}elseif($_GET['id']=='referencia'){
echo '<font color="#FF0000">Tienes que poner una referencia</font>';
}elseif($_GET['id']=='web'){
echo '<font color="#FF0000">Pon una pagina web o blog</font>';
}elseif($_GET['id']=='telefono'){
echo '<font color="#FF0000">Escribe un numero de telefono</font>';
}elseif($_GET['id']=='celular'){
echo '<font color="#FF0000">Escribe un numero de celular</font>';
}elseif($_GET['id']=='pin'){
echo '<font color="#FF0000">Pon un pin</font>';
}
?>

Ahora si te fijas tenemos que recuperar los datos de cada campo de texto cosa que si el usuario dejo un vacio cuando el archivo procesar.php le mande el parámetro por la url solo este vacío el que dejo en blanco y los demás estén con el dato que puso.

Por esta razón te dije en la entrada anterior que dejara la propiedad value de los input en blanco.

Como vamos hacer eso? Pues simple piensa un poquito, si el usuario mando un dato en un campo de texto entonces se supone que la sesión para ese determinado campo se creó ahora si la mando en blanco no se creo nada. Entonces lo que tenemos que hacer es agarrar la sesión que se creó y imprimirla en cada uno de los campos de texto en caso que tengan algún dato lo muestra en caso que no entonces no muestra nada, así de simple XD jejeje.

Entonces copia cada una de esta linea de codigo en su campo de texto correspondiente ojo solo dentro del value=”” ejemplo <input type=”nombre” name=”nombre” value=”<?php echo $_SESSION[‘nombre’]; ?>”>
Bueno creo que mas claro de hay no puede estar aqui te pongo todas las lineas de codigo para que la ponga en sus campos correspondiente en cada una de las paginas.

 

<?php echo $_SESSION['nombre']?>
</b> <?php echo $_SESSION['apellido']?>
<?php echo $_SESSION['correo']?>
<?php echo $_SESSION['edad']?>
<?php echo $_SESSION['sexo']?>
<?php echo $_SESSION['ocupacion']?>
<?php echo $_SESSION['pais']?></b>
<?php echo $_SESSION['probincia']?>
<?php echo $_SESSION['municipio']?>
<?php echo $_SESSION['casacalle']?>
<?php echo $_SESSION['producto']?>
<?php echo $_SESSION['precio']?>
<?php echo $_SESSION['modopago']?>
<?php echo $_SESSION['fecha']?>
<?php echo $_SESSION['referencia']?>
<?php echo $_SESSION['web']?>
<?php echo $_SESSION['telefono']?>
</b> <?php echo $_SESSION['celular']?>
<?php echo $_SESSION['pin']?>

En caso que se me haya escapado alguna solo copia una y cámbiale el nombre por el nombre del campo de texto y listo.

Ahora te pongo el codigo de los archivos salir.php y sesion.php

salir.php

<?php
session_start();
session_unset();
session_destroy();
header("Location: pagina1.php");
?>

En este archivo de salir.php lo que hacemos es primero comprobamos que la sesion exite, segundo si exite la cargamos, y tercero la destruimos y redireccionamos al usuario a la pagina1.php y todo sin que el se pueda dar cuenta.

sesion.php

<?php
session_start();
if(session_start()){
header("Location:".$_SERVER['HTTP_REFERER']);
}else{
header("Location: pagina1.php");
}
?>

Bueno esta por demas decir que el sistema funciona bien en un 100% si lo quieres comprobar vuelve a ver el ejemplo del sistema formulario con php y mysql

Si quieres probar con los archivos aqui se los dejo.

Volver O Descargar:  Formularios con php y mysql parte 1

Descargar Formulario con php y mysql

En una proxima entrada vamos a ver como guardarlo en una base de datos.

Un cordial saludo y hasta la proxima

 

Comments

  1. By Anónimo

Deja un comentario

Tu dirección de correo electrónico no será publicada.