Inicio Apuntes FPApuntes DAW 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

Publicado por entreunosyceros
Publicado el: Última actualización:

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.

.

También te puede interesar ...

Deja un comentario

* Al utilizar este formulario, aceptas que este sitio web almacene y maneje tus datos.

Adblock Detectado!!

Ayúdanos deshabilitando la extensión AdBlocker de tu navegador para visitar esta web.
Si no sabes hacerlo en Chrome, consulta el siguiente enlace. Si utilizas Firefox, puedes consultar este otro enlace.
Esto mejorará tu experiencia en este sitio web.