Ejercicio básico 36 PHP: Formulario que permita añadir empleados a una base de datos con mysqli
Ejercicio básico 36 PHP: Formulario que permita añadir empleados a una base de datos con mysqli

AVISO: Esta entrada tiene más de dos años desde su publicación. Es posible que el contenido esté desactualizado.

Una vez más aquí, vamos a dejar aquí colgado un nuevo ejercicio de PHP. Si la memoria no me falla, van ya 36. Esta vez será un ejercicio con base de datos (que a final de cuentas es un poco hacia dónde tira esto del PHP). Para conectarnos a la base de datos utilizaremos mysqli (que por lo que dicen en los mentideros de internet mysql se queda desfasado a partir de la versión 5.5 de php), aun que supongo que lo más óptimo sería utilizar PDO.

Bueno, para empezar el ejercicio básico 36 PHP, necesitaremos una base de datos, para crearla solo hay que irse al phpmyadmin (en mi caso, cada cual que utilice el que guste) y crear la base de datos empleados. Dentro creamos una tabla con tres campos, id, nombre y puesto. Se puede utilizar el entorno gráfico o escribir el código, que es tan sencillo como este;

create table empleados (
id int auto_increment primary key,
nombre varchar(20),
puesto varchar(20)
)

A continuación se creará un formulario que permita añadir el nombre y el puesto de un empleado nuevo en la base de datos por medio de mysqli. Bajo el formulario debe aparecer una tabla con el identificador, el nombre y el puesto de todos los empleados contenidos en la base de datos. Si en la base de datos aún no hubiera ningún empleado, en lugar de la tabla se mostraría un texto que avisase de la situación.
Para la conexión de la base de datos se usarán los siguientes datos:

  • Host: localhost
  • Usuario: alumno
  • Clave: alumno
  • Nombre de la base de datos: empleados

La sentencia SQL de consulta de los empleados en la base de datos será:

SELECT id, nombre, puesto FROM empleados

La sentencia SQL para insertar un nuevo empleado será:

INSERT INTO empleados (nombre, puesto) VALUES ('$nombre', '$puesto')

Las variables $nombre y $puesto deben contener el nombre y el puesto del empleado. Estos datos los enviaremos por POST al archivo insertar.php. El identificador se lo asigna la base de datos de forma automática.

Para terminar de hace un poco más interactivo el ejercicio, vamos a añadir un pequeño enlace dentro de la tabla que nos servirá para eliminar el empleado indicado. La sentencia SQL para eliminar el empleado será;

DELETE FROM empleados WHERE id = '".$ID."'

La variable $ID contendrá el id del empleado, la cual será envíada por GET al archivo eliminar.php.

Hasta aquí la explicación del ejercicio, ahora vamos al turrón del asunto, el código.

Ejercicio básico 36 PHP, el código:

conexion.php

<?php
function conexion(){
    //campos de la conexión
    $mysqli = new mysqli("SERVIDORBD", "USUARIO_DB", "PASSWORD", "NOM_DB");
        if ($mysqli->connect_error) { //en caso de que se produzca algún error
            die('Error de Conexión (' .
                    $mysqli->connect_errno . ') ' .
                    $mysqli->connect_error);
        }
    return $mysqli; //devuelve la conexión cada vez que se llama a esta función
}
?>

index.php

<?php
require_once 'conexion/conexion.php'; //importamos la conexión a la BD
?>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Ejercicio 36</title>
    </head>
    <body>
        <div align="center"><h1>Añadir empleados a la B.D. (ejercicio 36) con mysqli</h1><br>
        <!--formulario para insertar empleado-->
        <form  method="post" action="insertar.php" name="form" enctype="multipart/form-data">
            <ul><li> Nombre:&nbsp;<input type="text" name="nombre" maxlength="20" size="20"></li><br>
            <li>Puesto:&nbsp;<input type="text" name="puesto" maxlength="20" size="20"></li><br>
            <input type="submit" name="enviar" value="Añadir">
        </form>
        </div> 
        <div align="center"> <h2>Listado de empleados actuales</h2></div>
        <?php
         $mysqli=  conexion(); //llamamos a la conexión
         $sql = "SELECT id, nombre, puesto FROM empleados"; //consulta sql para listar campos
         $result = $mysqli->query($sql); //mandamos el sql a la base de datos y el resultado se guarda en $result
         $resu=$result; //dentro de $resu guardamos también el resultado de la consulta
         //Si la consulta devuelve 0 filas se muestra el mensaje de que no hay empleados
           if ( $result->num_rows == 0) {
       ?>
           <div align='center'><hr width='30%'><span style="font-weight: bold; font-size: 24px;">No hay empleados en la BD</span><br /></div>
        <?php
            } else { //si se encuentran resultados
        ?>
          <table border="1" width="30%" align="center">
               <tr>
                   <td align="center"><strong>ID</strong></td>
                   <td align="center"><strong>Nombre</strong></td>
                   <td align="center"><strong>Puesto</strong></td>
                   <td align="center"><strong>Acción</strong></td>
               </tr>
        <?php   
                //realizamos el bucle mientras  $resu contenga resultados
                 while ($reg =$resu->fetch_array()) { 
        ?>
           
               <tr>
                   <!--llamamos a cada uno de los campos mediante el array $reg y el nombre de cada uno de los campos
                   de la base de datos-->
                   <td align="center"><?php echo $reg['id']; ?></td> 
                   <td align="center"><?php echo $reg['nombre']; ?></td>
                   <td align="center"><?php echo $reg['puesto']; ?></td>
                   <td align="center">
                       <!--botón eliminar que pasa a eliminar.php el id del usuario-->
                       <a href="eliminar.php?id=<?php echo $reg['id'];?>" title='Eliminar usuario'>Eliminar</a>
                   </td>
               </tr>
           
        <?php
                 }
                 $resu->close(); //liberamos el resultado de la sentencia
        ?>
           </table>
        <?php
            }
            
            $mysqli->close(); //cerramos la conexión
        ?>
    </body>
</html>

insertar.php

<?php
require_once 'conexion/conexion.php';
//traemos el nombre y el puesto mediante post
$nombre=$_POST['nombre'];
$puesto=$_POST['puesto'];
//llamamos a la conexión
$mysqli=  conexion();
//creamos la sentencia de inserción con el nombre y el puesto (el id se omite ya que es autoincremental)
$sql="INSERT INTO empleados (nombre, puesto) VALUES ('$nombre', '$puesto')";
//mandamos el sql a la base de datos
$result=$mysqli->query($sql);
$mysqli->close(); //cerramos la conexión
echo "<div align='center'><h1>Empleado a&ntilde;adido correctamente</h1><br>"
. "<a href='index.php'>Volver</a></div>";

eliminar.php

<?php
require_once 'conexion/conexion.php';
$ID=$_GET['id']; //traemos el id de usuario mediante get
$mysqli=conexion();//llamamos a la conexión
//montamos la sentencia de borrado
$sql="DELETE FROM empleados WHERE id = '".$ID."'";
//mandamos el sql contra la base de datos
$result = $mysqli->query($sql);
$mysqli->close(); //cerramos la conexión
echo "<script type=''>
            alert('Empleado eliminado correctamente.');
            window.location='index.php';
            </script>";

Quiero aclarar el que archivo conexion.php lo he metido dentro de un directorio llamado conexión.

Para ver el ejercicio básico 36 PHP en funcionando solo hay que hacer click en este enlace. Aun que he de decir que he deshabilitado la posibilidad de escribir en el archivo.

.







¿Qué te ha parecido este post?

¡Haz clic en una estrella para calificarla!

Puntuación media 0 / 5. Recuento de votos: 0

¡No hay votos hasta ahora! Sé el primero en calificar esta publicación.

No te pierdas otros artículos ...

¡Síguenos en las redes sociales!

¡Lamentamos que esta publicación no te haya sido útil!

¡Permítanos mejorar esta publicación!

¿Cuéntanos cómo podemos mejorar esta publicación?

Deja una respuesta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.