Crear formularios con php y mysql

Crear formularios con php y mysql

Hola amigos nuevamente nos encontramos en otra entrada que la pidió un usuario en el area de pide tu entrada, en este tema vamos a tratar el mismo formulario con php y mysql que creamos en entradas anteriores el cual lo puedes ver a continuación.

Modificando nuestro formularios con php y mysql anterior

En esta ocasión vamos a modificar dicho formulario con php y mysql para hacer algo parecido pero esta vez con input file para subir imágenes u otro archivo, Como esto fue explicado en un mini-tutorial anterior no voy a explicar nada de lo que antes explique, solo me voy a centrar en explicar las cosas nuevas que hemos creado en el formulario con php y mysql para poder agregar las imágenes.

Preparando el entorno para nuestros formularios con php

Si leíste el mini-tutorial de formulario con php y mysql entonces sabrás que tenemos que crear 5 archivos que al final del mini-tutorial se los voy a facilitar para su descarga. En esta ocasión vamos hacer una ligera modificación del código php que creamos anteriormente exactamente en el archivo procesar.php y guardar.php asi como el código php que tenemos en la pagina1.php.

Modificando nuestro formularios con php y mysql

Primero vamos a modificar el código del archivo pagina1.php que va a quedar tal cual aparece aquí debajo.
Pagina1.php

<?php
session_start();
error_reporting(E_ALL^E_NOTICE);
?>
<!DOCTYPE html>
<head>
<meta charset="utf-8" />
<title>formularios con php y mysql utilizando sesiones</title>
<link rel="stylesheet" href="style.css" type="text/css" />
</head>
<body>
<div id="header">
<h1>Formularios con php y mysql</h1>
</div>
<div id="cuerpo">
<div id="formulario">
<h2>Pagina Principal</h2>
<?php if(($_SESSION) and ($_GET['id']==4)){?>
<font color="#FF0000"><b>Hola!,</b>
<?php echo $_SESSION['nombre']?> confirma tus datos<br /></font>
<b>Provincia: <?php echo $_SESSION['provincia']; ?></b> <br />
<b>Localidad: <?php echo $_SESSION['localidad']; ?></b> <br />
<b>Titulo: <?php echo $_SESSION['titulo']; ?></b> <br />
<b>Descripcion: <?php echo $_SESSION['descripcion']; ?></b> <br />
<b>Correo: <?php echo $_SESSION['mail1']; ?></b> <br />
<b>Telefono: <?php echo $_SESSION['telefono']; ?></b> <br />
<b>Imagen 1: <?php echo $_SESSION['img1']; ?></b> <br />
<b>Imagen 2: <?php echo $_SESSION['img2']; ?></b>
<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="guardar.php" method="post">
<input type="submit" value="Confirmar" id="procesar"/>
</form>

<?php
}else{
?>
<?php
if($_GET['id']=='provincia'){
echo '<font color="#FF0000">Falta la provincia</font>';
}elseif($_GET['id']=='localidad'){
echo '<font color="#FF0000">Falta la localidad</font>';
}elseif($_GET['id']=='titulo'){
echo '<font color="#FF0000">Falta el titulo</font>';
}elseif($_GET['id']=='descripcion'){
echo '<font color="#FF0000">Falta la descripcion</font>';
}elseif($_GET['id']=='nombre'){
echo '<font color="#FF0000">Falta el nombre</font>';
}elseif($_GET['id']=='correo'){
echo '<font color="#FF0000">Falta el correo</font>';
}elseif($_GET['id']=='correo2'){
echo '<font color="#FF0000">Tienes que repetir el correo</font>';
}elseif($_GET['id']=='Npas'){
echo '<font color="#FF0000">Los correos no coinciden</font>';
}elseif($_GET['id']=='telefono'){
echo '<font color="#FF0000">Falta el campo telefono</font>';
}
?>
<form action="procesar.php" method="post">
<input type="hidden" name="pagina"  value="1"/>
<b>Provincia:</b><br />
<input type="text" name="provincia" value="<?php echo $_SESSION['provincia']; ?>"><br />
<b>Localidad:</b><br />
<input type="text" name="localidad" value="<?php echo $_SESSION['localidad']; ?>"><br />
<b>Titulo:</b><br />
<input type="text" name="titulo" value="<?php echo $_SESSION['titulo']; ?>"><br />
<b>Descripcion:</b><br />
<input type="text" name="descripcion" value="<?php echo $_SESSION['descripcion']; ?>"><br />
<b>Nombre:</b><br />
<input type="text" name="nombre" value="<?php echo $_SESSION['nombre']; ?>"><br />
<b>E-Mail:</b><br />
<input type="text" name="mail1" value="<?php echo $_SESSION['mail1']; ?>"><br />
<b>Rep. E-Mail:</b><br />
<input type="text" name="mail2" value="<?php echo $_SESSION['mail2']; ?>"><br />
<b>Telefono:</b><br />
<input type="text" name="telefono" value="<?php echo $_SESSION['telefono']; ?>"><br />
<input type="reset" value="Borrar Todo" id="procesar" />
<input type="submit" value="Siguiente" id="procesar" />
</form>
<?php } ?>
</div>
</div>
<div id="footer">
Creado por <font color="#FF0000">Eriberto Rodriguez</font> de <a href="http://www.comocrearmiweb.com" title="como crear mi web">Como crear mi web</a>
</div>
</body>
</html>

 

Creando otras propiedades para nuestros formularios con php y mysql

Hora vamos a modificar las otras dos paginas que contienen los demás formularios y vamos a eliminar los input de texto y en sustitución vamos a colocar un input type file para poder agregar imágenes desde nuestro ordenador. El código quedaría tal cual aparece a continuación.
Pagina2.php

<?php
session_start();
error_reporting(E_ALL^E_NOTICE);
?>
<!DOCTYPE html>
<head>
<meta charset="utf-8" />
<title>formulario con php y mysql utilizando sesiones</title>
<link rel="stylesheet" href="style.css" type="text/css" />
</head>
<body>
<div id="header">
<h1>Formulario con php y mysql</h1>
</div><div id="cuerpo">
<div id="formulario">
<h2>Pagina II</h2>
<form action="procesar.php" method="post" enctype="multipart/form-data">
<input type="hidden" name="pagina" value="2"/>
<input type="file" name="img1" />
<input type="submit" value="Siguiente" id="procesar" />
</form>
<form action="salir.php" method="post">
<input type="submit" value="Cancelar" id="procesar"/>
</div>
</div>
<div id="footer">
Creado por <font color="#FF0000">Eriberto Rodriguez</font> de <a href="http://www.comocrearmiweb.com" title="como crear mi web">Como crear mi web</a>
</div>
</body>
</html>

Pagina3.php

<?php
session_start();
error_reporting(E_ALL^E_NOTICE);
?>
<!DOCTYPE html>
<head>
<meta charset="utf-8" />
<title>formulario con php y mysql utilizando sesiones</title>
<link rel="stylesheet" href="style.css" type="text/css" />
</head>
<body>
<div id="header">
<h1>Formulario con php y mysql</h1>
</div><div id="cuerpo">
<div id="formulario">
<h2>Pagina III</h2>
<form action="procesar.php" method="post" enctype="multipart/form-data">
<input type="hidden" name="pagina" value="3" />
<input type="file" name="img2" />
<input type="reset" value="Borrar Todo" id="procesar" />
<input type="submit" value="Finalizar" id="procesar" />
</form>
<form action="salir.php" method="post">
<input type="submit" value="Cancelar" id="procesar"/>
</div>
</div>
<div id="footer">
Creado por <font color="#FF0000">Eriberto Rodriguez</font> de <a href="http://www.comocrearmiweb.com" title="como crear mi web">Como crear mi web</a>
</div>
</body>
</html>

Si te fijas en estas paginas lo que hemos hecho es eliminar el código php que teníamos en el mini-tutorial anterior de formulario con php y mysql porque en este ya no nos va a servir de nada.
Ahora bien para almacenar las fotos y poder explicar el archivo procesar.php tenemos que tener bien claro que es lo que queremos hacer con estas 2 imágenes que piensa subir el usuario porque dependiendo del caso entonces vamos a tener que crear uno u otro código php al igual que la tabla donde almacenaremos el contenido en nuestra base de datos.

Algunas cosas a tener en cuenta

Por qué digo esto? Pues porque no es lo mismo que un usuario pueda subir fotos después que allá iniciado sesión y que la suba a su perfil para verla o que este usuario la valla subiendo antes de iniciar sesión. Me explico si el usuario no ha iniciado sesión y quiere poner fotos de perfil solo pueda subir una imagen por filas en la tabla MySQL, en cambio si dicho usuario ya inicio sesión entonces ahora si podemos utilizar una sola fila para almacenar todas las imágenes que el usuario quiera.

En cambio para hacerlo de esa manera se necesita un algoritmo demasiado complejo como el que usa facebook o algo parecido.
Con estos puntos bien claro entonces vamos a pasar a explicar el código del archivo procesar.php que es el que se encargar de comprobar las 3 páginas que le enviaran dichos datos y dependiendo de una cosa o la otra nos ira diciendo qué camino seguir.
procesar.php

<?php
session_start();
error_reporting(E_ALL^E_NOTICE); // no permitimos que php muestre noticias
$primera=$_REQUEST['pagina']; // comprobamos que pagina se ha enviado/*********** Primer bloque de codigos ************/
if($primera==1){
$provincia=$_REQUEST['provincia'];
if(!$provincia==''){// Sometemos los datos  a comprobacion de no estar vacio
$_SESSION['provincia']=$provincia;
$localidad=$_REQUEST['localidad'];
if(!$localidad==''){
$_SESSION['localidad']=$localidad;
$titulo=$_REQUEST['titulo'];
if(!$titulo==''){
$_SESSION['titulo']=$titulo;
$descripcion=$_REQUEST['descripcion'];
if(!$descripcion==''){
$_SESSION['descripcion']=$descripcion;
$nombre=$_REQUEST['nombre'];
if(!$nombre==''){
$_SESSION['nombre']=$nombre;
$correo=$_REQUEST['mail1'];
if(!$correo==''){
$_SESSION['mail1']=$correo;
$email2 = $_REQUEST['mail2'];
if(!$email2==''){
$_SESSION['mail2']= $email2;
if($correo == $email2){
$telefono=$_REQUEST['telefono'];
if(!$telefono==''){
$_SESSION['telefono']=$telefono;
header("Location: pagina2.php");
}else{
header("Location: pagina1.php?id=telefono");
}
}else{header("Location: pagina1.php?id=Npas");}
}else{header("Location: pagina1.php?id=correo2");}
}else{ header("Location: pagina1.php?id=correo");}
}else{header("Location: pagina1.php?id=nombre");}
}else{header("Location: pagina1.php?id=descripcion");}
}else{header("Location: pagina1.php?id=titulo");}
}else{header("Location: pagina1.php?id=localidad");}
}else{header("Location: pagina1.php?id=provincia");
}
}else{

/*********** Segundo bloque de codigos ************/

if($primera == 2){
// recuperamos la primera imagen
$directorio = $_SERVER['DOCUMENT_ROOT'].'/bancas/sistemas/imagen/';
// Recibo los datos de la imagen
$nombre=$_FILES['img1']['name'];
$tipo=$_FILES['img1']['type'];
$tamano = $_FILES['img1']['size'];
// Muevo la imagen desde su ubicación
// temporal al directorio definitivo
move_uploaded_file($_FILES['img1']['tmp_name'],$directorio.$nombre);
$_SESSION['img1']=$nombre;
header('Location: pagina3.php');
}else{
header('Location: pagina3.php');
}

/*********** Tercer bloque de codigos ************/

//compruebo que se envio la pagina numero 3 y subo la segunda imagen si existe
if($primera == 3){
$directorio = $_SERVER['DOCUMENT_ROOT'].'/bancas/sistemas/imagen/';
// Recibo los datos de la imagen
$nombre=$_FILES['img2']['name'];
$tipo=$_FILES['img2']['type'];
$tamano = $_FILES['img2']['size'];
// Muevo la imagen desde su ubicación
// temporal al directorio definitivo
move_uploaded_file($_FILES['img2']['tmp_name'],$directorio.$nombre);
$_SESSION['img2']=$nombre;
header("Location: pagina1.php?id=4");

}
}

?>

Si te fijas este archivo a diferencia del otro tiene 3 bloques de código que corresponden a las 3 páginas que le van a enviar datos, pero si te fijas mejor veras que hay 2 bloques de código que son prácticamente lo mismo que es el código que corresponde a las imágenes ya que estos son que subirán las imágenes que nos va a enviar cada página. En caso de querer agregar más imágenes solo tienen que copiar el bloque de imagen y seguir colocándolo más abajo solo hay que cambiarle el nombre del objeto que vamos a recibir en este caso img1 por el que le hallas puesto al nuevo formulario.

Algo que hay que tener en cuenta en el bloque de codigo de las imagenes es la ruta en la cual vamos a guardar dicha imagen, ya que esto va a depender del directorio donde tengamos ubicado los archivos de nuestra web, asi que antes de ponerte a probar el sistema te recomiendo que cambie la ruta por el directorio correcto donde estan los archivos de tu web. En este caso tiene la siguiente direccion porque hay es que estoy haciendo el tutorial pero si tu directorio se llama web entonces cambia este nombre por /web/sistema/imagenes/ y con esto no tendras problama para subir las imagenes.

$directorio = $_SERVER['DOCUMENT_ROOT'].'/bancas/sistemas/imagen/';

Básicamente lo que hacemos en este archivo es en el primer bloque de código validar los campos que nos envía el usuario y guardarlo en sesiones, luego en el segundo y tercer bloque lo que hacemos es recuperar la imagen que nos envían tanto la pagina2 como la pagina3 y enviarla al servidor y guardarnos el nombre de dicha imagen si existe para que el usuario la pueda enviar a la base de datos, en cambio si no existe entonces no se envía nada a la base de datos y no se crea una sesión con dicho nombre.
Ahora pasamos al archivo que guardara los datos del usuario en la base de datos que es guardar.php
Guardar.php

<?php
session_start(); // comprobamos la session
error_reporting(E_ALL^E_NOTICE); // no permitimos que php muestre noticias
$servidor="localhost"; // colocamos los datos de la conexion al servidor
$usuario="root";
$clave="";
$base_de_datos="noticias";// Recuperamos la sesiones y la almacenamos en variables
$nombre =$_SESSION['nombre'];
$provincia =$_SESSION['provincia'];
$titulo = $_SESSION['titulo'];
$localidad = $_SESSION['localidad'];
$descripcion = $_SESSION['descripcion'];
$correo = $_SESSION['mail1'];
$telefono = $_SESSION['telefono'];
$imagen1 = $_SESSION['img1'];
$imagen2 = $_SESSION['img2'];
// hacemos la conexion
$conexion = mysql_connect($servidor,$usuario,$clave);
// selecionamos la base de datos
mysql_select_db($base_de_datos,$conexion);

// armacenamos la consulta en una variable
$query="INSERT INTO usuario(provincia,localidad,titulo,descripcion,correo,telefono,img1,img2)VALUES('$provincia','$localidad','$titulo','$descripcion','$correo','$telefono','$imagen1','$imagen2')";

// ejecutamos la consulta a la base de datos
$consulta=mysql_query($query,$conexion);
if($consulta){
header('Location: salir.php');
}else{
header('Location: pagina1.php?id=no');
}

?>

Este archivo es muy simple ya que lo que vamos hacer es una conexión con la base de datos y vamos a recuperar todas las variables de sesión que el usuario ha creado en nuestro servidor en ese momento. En caso que el usuario haya obviado alguna entonces esta no estará activa y no se enviara a la base de datos.

Luego de esto vemos la consulta a la base de datos para almacenar todas las sesiones activas y si todo se ha hecho correctamente dirigimos al usuario a una página llamada salir.php que se encargara de eliminar todas esas variables de sesión que quedaron activa y luego de eliminarlo lo podemos enviar a la pagina que nosotros queramos solo especificándoselo en el archivo salir.php, Yo en este caso lo envié a la pagina1.php pero tú puedes dirigirlo a la pagina que quieras.

Ahora les voy a colocar el código del archivo que tendrá el espacio para guardar todo lo que le enviemos desde nuestros formularios me refiero la tabla que guardara todo en nuestra base de datos en este caso como el ejemplo lo voy hacer con 2 imágenes y como te explique antes solo voy a poner 2 filas para las imágenes.

CREATE TABLE IF NOT EXISTS `usuario` (
`id` int(11) DEFAULT NULL,
`provincia` varchar(45) DEFAULT NULL,
`localidad` varchar(45) DEFAULT NULL,
`titulo` varchar(45) DEFAULT NULL,
`descripcion` varchar(45) DEFAULT NULL,
`correo` varchar(45) DEFAULT NULL,
`telefono` varchar(45) DEFAULT NULL,
`img1` varchar(45) DEFAULT NULL,
`img2` varchar(45) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Aunque te comente antes que con una fila se puede hacer pero dependiendo el caso si es para perfiles como para tener una galeria de fotos en tu propio perfil o para inicio de sesión.

En este caso solo esta creado para inicio de sesion ya lo de una galeria para presentar imagenes en tu perfil seria otro algoritmo mucho mas complejo.

Queda por demas decirle que el codigo esta comprobado y 100% funcionando a la perfesion para tener todos los archivos puedes descargarlo en el siguiente link o verlo en el que esta mas bajo.

Descargar formulario con php y mysql

Ver formularios en funcionamiento

Un cordial saludo y hasta la proxima entrada…

No Responses

Deja un comentario

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