En esta entrada voy a explicar como se inserta un registro en una tabla de una base de datos Mysql con o procedimiento PDO
Preparamos en primero lugar el formulario onde vamos registrando los datos que queremos insertar
Codigo html del formulario
<!doctype html> <html lang="en"> <head> <title>Title</title> <!-- Required meta tags --> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <!-- Bootstrap CSS v5.2.1 --> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-iYQeCzEYFbKjA/T2uDLTpkwGzCiq6soy8tYaI1GyVh/UjpbCx/TYkiZhlZB6+fzT" crossorigin="anonymous"> </head> <body> <header> <nav class="navbar navbar-expand navbar-light bg-light"> <ul class="nav navbar-nav"> <li class="nav-item"> <a class="nav-link" href="insertar_personal.php">Insertar</a> </li> <li class="nav-item"> <a class="nav-link" href="lista_personal.php">Lista Personal</a> </li> </ul> </nav><br> </header> <main> <div class="container border border-danger border-2 p-3"> <form action="" method="post" class="row g-2 bg-warning p-3"> <label for="">nombres</label> <input class="form-control" type="text" name="txtNombre" id=""> <label for="">email</label> <input class="form-control" type="email" name="txtEmail" id=""> <label for="">edad</label> <input class="form-control" type="text" name="txtEdad" id=""> <label for="">pais</label> <input class="form-control" type="text" name="txtPais" id=""> <label for="">fecha</label> <input class="form-control" type="date" name="txtFecha" id=""> <button name="insertar" type="submit" class="btn btn-success btn-block">Guardar</button> </form> </div> </main> <footer> <!-- place footer here --> </footer> <!-- Bootstrap JavaScript Libraries --> <script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.6/dist/umd/popper.min.js" integrity="sha384-oBqDVmMz9ATKxIep9tiCxS/Z9fNfEXiDAYTujMAeBAsjFuCZSmKbSSUnQlmh/jp3" crossorigin="anonymous"> </script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.1/dist/js/bootstrap.min.js" integrity="sha384-7VPbUDkoPSGFnVtYi0QogXtr74QeVeeIs99Qfg5YCF+TidwNdjvaKZX19NZ/e6oz" crossorigin="anonymous"> </script> </body> </html>
...
Como bien sabemos el formulario tiene que hacer un envio por POST y la accion la dejamos en blanco para que se redirecione a la propria pagina.
1-Declaramos la condicional de envío
Cuando hacemos clic en el button enviar o guardar o insertar dependiendo de como se le llame, hacemos un envio tipo POST
Como la accion esta en blanco el envio sera hecho a la propria pagina, asi que ya dentro del codigo php vamos a verificar esa condicion
if(isset($_POST['insertar'])){ .... }
2-Condiciones de datos
En esta seccion podemos ver varias condiciones, como por ejemplo que:
- Los datos no vayam vacios
- Los datos (Email, telefono etc) no sean repetidos
NOTA para verificar si el telefono o email existe en la base de datos hay que hacer otra consulta dentro de la condicion
if (empty($_POST['txtNombre']) || empty($_POST['txtEmail'])) { ?> <script> alert('Tiene que rellenar todos los campos'); </script> <?php }
Las variables enviadas
Si hasta este punto esta todo bien, las validaciones correctas, y hubo envio POST procedemos a recopilar los datos enviados del formulario en variables
$name = $_POST['txtNombre']; $email = $_POST['txtEmail']; $edad = $_POST['txtEdad']; $pais = $_POST['txtPais']; $fecha = $_POST['txtFecha']; print_r($_POST);
Crear una consulta INSERT
Llego el momento de crear la consulta para insertar el registro
$sql = ("INSERT INTO tbl_personal (idPersonal, nombres, email, edad, pais, fecha_registro) VALUES (NULL, :nombres, :email, :edad, :pais, :fecha);"); $stmt = $pdo->prepare($sql); $stmt->bindParam('nombres', $name); $stmt->bindParam('email', $email); $stmt->bindParam('edad', $edad); $stmt->bindParam('pais', $pais); $stmt->bindParam('fecha', $fecha); $stmt->execute();
1º-Preparar la consulta
$sql = ("INSERT INTO tbl_personal (idPersonal, nombres, email, edad, pais, fecha_registro) VALUES (NULL, :nombres, :email, :edad, :pais, :fecha);"); $stmt = $pdo->prepare($sql);
2º-Enlazamos los parametros (bindParam) con las variables
$stmt->bindParam('nombres', $name); $stmt->bindParam('email', $email); $stmt->bindParam('edad', $edad); $stmt->bindParam('pais', $pais); $stmt->bindParam('fecha', $fecha);
Ejecutamos la consulta:
$stmt->execute();
Comprovacion de la isercion
Llegados a este punto nos resta saber si la insercion fue excitosa o no
Si lo fue nos redimensionara a la lista del personal y si no nos enviara un alert alertandonos de lo ocorrido
if ($lastInsertId > 0) { header('location:lista_personal.php'); } else { echo "No se pueden agregar datos, comuníquese con el administrador"; print_r($stmt->errorInfo()); }
Codigo del ejemplo completo
<?php include_once('conexion.php'); $alert = ''; if (isset($_POST['insertar'])) { //print_r($_POST); // exit; //Verificacion si el input va vacio if (empty($_POST['txtNombre']) || empty($_POST['txtEmail'])) { ?> <script> alert('Tiene que rellenar todos los campos'); </script> <?php } else { $name = $_POST['txtNombre']; $email = $_POST['txtEmail']; $edad = $_POST['txtEdad']; $pais = $_POST['txtPais']; $fecha = $_POST['txtFecha']; print_r($_POST); $sql = ("INSERT INTO tbl_personal (idPersonal, nombres, email, edad, pais, fecha_registro) VALUES (NULL, :nombres, :email, :edad, :pais, :fecha);"); $stmt = $pdo->prepare($sql); $stmt->bindParam('nombres', $name); $stmt->bindParam('email', $email); $stmt->bindParam('edad', $edad); $stmt->bindParam('pais', $pais); $stmt->bindParam('fecha', $fecha); $stmt->execute(); $lastInsertId = $pdo->lastInsertId(); if ($lastInsertId > 0) { header('location:lista_personal.php'); } else { echo "<div class='content alert alert-danger'> No se pueden agregar datos, comuníquese con el administrador </div>"; print_r($stmt->errorInfo()); } } } ?> <!doctype html> <html lang="en"> <head> <title>Title</title> <!-- Required meta tags --> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <!-- Bootstrap CSS v5.2.1 --> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-iYQeCzEYFbKjA/T2uDLTpkwGzCiq6soy8tYaI1GyVh/UjpbCx/TYkiZhlZB6+fzT" crossorigin="anonymous"> </head> <body> <header> <nav class="navbar navbar-expand navbar-light bg-light"> <ul class="nav navbar-nav"> <li class="nav-item"> <a class="nav-link" href="insertar_personal.php">Insertar</a> </li> <li class="nav-item"> <a class="nav-link" href="lista_personal.php">Lista Personal</a> </li> </ul> </nav><br> </header> <main> <div class="container border border-danger border-2 p-3"> <h1 class="text-center " style="font-family: Cambria, Cochin, Georgia, Times, 'Times New Roman', serif;"> Insertar datos del personal</h1><br> <form action="" method="post" class="row g-2 bg-warning p-3"> <label for="">nombres</label> <input class="form-control" type="text" name="txtNombre" id=""> <label for="">email</label> <input class="form-control" type="email" name="txtEmail" id=""> <label for="">edad</label> <input class="form-control" type="text" name="txtEdad" id=""> <label for="">pais</label> <input class="form-control" type="text" name="txtPais" id=""> <label for="">fecha</label> <input class="form-control" type="date" name="txtFecha" id=""> <button name="insertar" type="submit" class="btn btn-success btn-block">Guardar</button> </form> </div><br> </main> <footer> <!-- place footer here --> </footer> <!-- Bootstrap JavaScript Libraries --> <script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.6/dist/umd/popper.min.js" integrity="sha384-oBqDVmMz9ATKxIep9tiCxS/Z9fNfEXiDAYTujMAeBAsjFuCZSmKbSSUnQlmh/jp3" crossorigin="anonymous"> </script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.1/dist/js/bootstrap.min.js" integrity="sha384-7VPbUDkoPSGFnVtYi0QogXtr74QeVeeIs99Qfg5YCF+TidwNdjvaKZX19NZ/e6oz" crossorigin="anonymous"> </script> </body> </html>
0 Comentarios
Si desea contactar comigo, lo puede hacer atravez deste formulario gracias