Para insertarmos un registro en una base de datos mysql desde un formulario html con PDO
debemos proceder de la seguiente forma:
primero tendremos que tener un formulario html que tenga dos atributos importantes, uno el de action que es el que nos va a decir onde enviaremos la informacion
si esta en blanco esa informacion ira directamente al mismo formulario en que estamos trabajando.
si tiene una ruta, esa nos informara onde ir.
normalmente es un otro fichero especifico para enviar los datos a la base de datos
Otro dato importante que debe tener el formulario es un button, con el atributo submit que es el encargado de nos decir si los datos fueram enviados o no
El atributo method se encargara de decirenos como seran enviados los datos.
Si queremos enviar fotos o archivos, hay que poner un atributo mas, que es el seguiente: enctype="multipart/form-data" este atributo se va encargar de enviar los datos tipo FILE
toda esta informacion la encontremos en la entrada Atributos de formularios en html
...Recibir los datos
Para recibir los datos primero tendremos que verificar si fue hecho un envio o no, si no el fluxo del codigo se saldra
if ($_POST) { }
adentro de la verificacion de POST tenemos que verificar que ciertos campos sean requeridos, o sea que no vengam vacios
If ($_POST){ if (empty($_POST['txtNombre'])) {En este ejemplo verificamos el campo "txtNombre"
} }
Asi que tendremos que hacer varias validaciones, para que los campos que nosotros veamos que no se deben dejar vacios, no se dejen
podremos comprobar se el usuario, empleado, puesto, articulo o lo que sea si ya existe o no, esto para que no se repitan los datos
En la tabla usuarios es muy comum verificar si ya existe ese correo electronico o telefono, pero neste ejemplo no vamos a ver esas validaciones,
Insertar los datos
Se los pasos anteriores ya estan todos validados, entonces ya podemos insertar los datos en la base de datos
Para eso hacemos la recopilacion de datos que vienen atravez de POST e seguidamiente la consulta insertar
Ejemplo de recopilacion de datos vindos del formulario por el methodo POST
//Ponemos en variables lo que viene en POST $nombres = $_POST['txtNombre']; //Variable que viene del POST $prApellido = $_POST['txtApellido']; $sgApellido = $_POST['txtSegApellido']; //insertar el nombre de la foto $foto = $_FILES['foto']['name']; $cv = $_FILES['cur']['name']; $puesto = $_POST['txtPuesto']; $fecha = $_POST['fecha'];
Seguidamente enviamos los parametros (campos) a la base de datos
e por ultimo executamos la consulta
$sql = ('INSERT INTO tbl_empleados(idEmpleado, nombres, primeroApellido, segundoApellido, foto, cv, idPuesto, fecha) VALUES (NULL,:nombres,:primeroApellidos,:segundoApellido,:foto,:cv,:idPuesto,:fecha) '); $stmt = $pdo->prepare($sql); //Preparacion de la sentencia $stmt->bindParam(':nombres', $nombres); $stmt->bindParam(':primeroApellidos', $prApellido); $stmt->bindParam(':segundoApellido', $sgApellido); //Adjuntar la foto $fecha_foto = new DateTime(); //creamos una fecha para cambiar el nombre da foto $nombre_foto = ($foto != '') ? $fecha_foto->getTimestamp() . '_' . $_FILES['foto']['name'] : ''; $tmp_foto = $_FILES['foto']['tmp_name']; //moviendo el archivo a la carpeta (Imagens) if ($tmp_foto != '') { move_uploaded_file($tmp_foto, "./Imagens/" . $nombre_foto); } //cambiamos el nombre del archivo a grabar $stmt->bindParam(':foto', $nombre_foto); //Adjuntar el archivo $fecha_ = new DateTime(); //creamos una fecha para cambiar el nombre da foto $nombre_cv = ($cv != '') ? $fecha_->getTimestamp() . '_' . $_FILES['cur']['name'] : ''; $tmp_cv = $_FILES['cur']['tmp_name']; //Mover el archivo para una carpeta if ($tmp_cv != '') { //moviendo el archivo a la carpeta (pdf) move_uploaded_file($tmp_cv, "./pdf/" . $nombre_cv); } $stmt->bindParam(':cv', $nombre_cv); $stmt->bindParam(':idPuesto', $puesto); $stmt->bindParam(':fecha', $fecha); //Valores a insertar $stmt->execute(); //execucion de la consulra header('location:index.php'); //redirigir al index.php
Este codigo requiere un poco de atencion y una explicacion extra, asi que la pongo en seguida
Como estamos viendo nel codigo la insercion es igual que todas las inserciones en PDO
Primero recuperamos en variables los datos que nos llegam por el method post desde el formulario
seguidamente hacemos la consulta de insertar normalmente y los datos se insertam, pero hay dos archivos, que para que los podamos ver en la listagen tendremos que moverlos a una carpeta
Esos archivos son los de la foto y tambien el curriculum vitae
me voy a referir al de la foto en concreto ya que el otro se hace exatamente igual
Como sabemos si subimos on archivo dentro de una carpeta con un nombre que ya existe este se subscribe
En este caso no queremos que eso pase asi que tendremos que darle un nombre que no exista, haciendo uso de una fecha y hora en concreto
Pasos para mover el archivo
1º-Vamos entonces crear una variable con el nombre fecha_foto
$fecha_ = new DateTime(); //creamos una fecha para cambiar el nombre da foto
2º-Creamos el nombre de la foto
$nombre_foto = ($foto != '') ? $fecha_foto->getTimestamp() . '_' . $_FILES['foto']['name'] : '';
3º-Le signamos un nombre temporal
$tmp_foto = $_FILES['foto']['tmp_name'];
4º-Si ese nombre no esta en blanco lo movemos para la carpeta asignada
//moviendo el archivo a la carpeta (Imagens) if ($tmp_foto != '') { move_uploaded_file($tmp_foto, "./Imagens/" . $nombre_foto); }
5º- Le cambiamos el parametro pelo nombre del archivo
//cambiamos el nombre del archivo a grabar $stmt->bindParam(':foto', $nombre_foto);
Lo demas es seguir el codigo anterior, e asi tendremos la insercion de nuestra foto, el curriculum y los demas campos insertados
0 Comentarios
Si desea contactar comigo, lo puede hacer atravez deste formulario gracias