Clase Activa

APRENDIENDO A DESARROLLAR UNA MATRIZ CRUD EN PHP

En este recurso vas a encontrar 2 modelos diferentes para realiazar una matriz CRUD con PHP; obseva  cada uno y trata de implementar el que mejor entiendas (el modelo 1 es un diseño mas antiguo e implementa la POO y el modelo 2 es mas moderno y sencillo en su desarrollo) 

Las lineas de color amarillo son suceptibles de cambio dependiendo del nombre de la base de datos, los campos y la definición de variables, tambien los nombres de los enlaces de las paginas segun el interes del desarrollador.

Modelo 2 de Matriz CRUD - Básica

conexion.php  <-- Este es el nombre que debe llevar el archivo

<!DOCTYPE html>
<meta charset="utf-8">
<html>
<head>
 <title>CONEXIÓN A BASE DE DATOS</title>
</head>
<body>
<?php
 $link = mysqli_connect('localhost','root','','base_datos') or die ("Error al conectarse a la base de datos");
?>
<br>
</body>
</html>
_________________________________

index.php

<head>
 <title>MENU MATRIZ CRUD</title>
</head>
<body bgcolor="#e1e1e1">
<center><h2><u>MENU DE OPCIONES</u></h2></center>
<br>
<center>
<table border="1px" align="center">
<tr>
 <td align="center"><form method="get" action="crear.php">
 <input type="submit" name="1" value="CREAR"></form></td>
 <td align="center"><form method="get" action="leer.php">
 <input type="submit" name="2" value="LEER"></form></td>
</tr>
<tr>
 <td align="center"><form method="get" action="actualizar.php">
 <input type="submit" name="3" value="ACTUALIZAR"></form></td>
 <td align="center"><form method="get" action="eliminar.php">
 <input type="submit" name="4" value="ELIMINAR"></form></td>
</tr>
<table>
</center>
</body>
</html>


_________________________________

crear.php

<!DOCTYPE html>
<meta charset="utf-8">
<html>
<head>
 <title>INGRESO DE CLIENTES</title>
</head>
<body bgcolor="#e1e1e1">

<center><h2><u>FORMULARIO DE INGRESO DE CLIENTES</u></h2></center>
<br>
<center>
<form action="" method="post">

 CEDULA: <input required type="" name="ced"><br>
 NOMBRE: <input type="" name="nom"><br>
 EMAIL: <input type="" name="ema"><br>
 SEXO:
 hombre: <input checked type="radio" value="m" name="sex">
 mujer: <input type="radio" value="f" name="sex"><br>
 <input type="submit" />

</form>

<?php

 include ("conexion.php");

 if ($_POST) {

 $ced = $_POST['ced'];
 $nom = $_POST['nom'];
 $ema = $_POST['ema'];
 $sex = $_POST['sex'];

 mysqli_query($link, "INSERT INTO clientes(cedula,nombre,email,sexo) VALUES ('$ced','$nom','$ema','$sex')") or die ("Error al ingresar dato");
 echo "DATO GUARDADO";

 }

?>
<br>
<hr>
<form method="get" action="index.php">
 <input type="submit" name="vol" value="VOLVER">
</form>
</center>
</body>

</html>

_________________________________

leer.php

<!DOCTYPE html>
<meta charset="utf-8">
<html>
<head>
 <title>LECTURA DE CLIENTES</title>
</head>
<body bgcolor="#e1e1e1">

<center><h2><u>TABLA DE CLIENTES INSCRITOS</u></h2></center>
<center>
<table border="1">

<tr>
 <td align="center">CEDULA</td>
 <td align="center">NOMBRE</td>
 <td align="center">EMAIL</td>
 <td align="center">SEXO</td>

</tr>

<?php

include ("conexion.php");

$consulta = mysqli_query($link, "SELECT * FROM clientes") or die ("Error en la consulta de la tabla");

while ($registro = mysqli_fetch_array($consulta)) { ?>
 <tr>
 <td><?php $ced = $registro['cedula'];
 echo "$ced ";?></td>
 <td><?php $nom = $registro['nombre'];
 echo "$nom ";?></td> 
 <td><?php $ema = $registro['email'];
 echo "$ema ";?></td>
 <td><?php $sex = $registro['sexo'];
 echo "$sex ";?></td>
 <?php echo "<br>";?>
 </tr>
 <?php 
}

?>

</table>
<br>
<hr>
<form method="get" action="index.php">
 <input type="submit" name="vol" value="VOLVER">
</form>
</center>
</body>
</html>

_________________________________

actualizar.php

 <!DOCTYPE html>
<meta charset="utf-8">
<html>
<head>
 <title>ACTUALIZAR CLIENTES</title>

</head>
<body bgcolor="#e1e1e1">

<center><h2><u>FORMULARIO PARA ACTUALIZAR CLIENTES</u></h2></center>
<br>
<center>
<?php

 include ("conexion.php");
 $con = mysqli_query($link, "SELECT * from clientes");
 $reg = mysqli_fetch_array($con);
?>

<form action="" method="post">
 <select name="perso">
  <?php
  do  {
  $id = $reg['id_cliente'];
  $nom = $reg['nombre'];
  ?>
  <option value="<?php echo $id; ?>"><?php echo $nom; ?>
  </option>
  <?php
  } while ($reg = mysqli_fetch_array($con))
  ?>
 </select>
 <input type="submit" name="actu" value="Traer Datos" />
</form>
<?php
 if (isset($_POST['actu'])) {
  $per = $_POST['perso'];
  $con1 = mysqli_query($link, "SELECT * from clientes where id_cliente='$per'") or die(mysqli_error());
  $reg1 = mysqli_fetch_array($con1);
  $ced=$reg1['cedula'];
  $nom=$reg1['nombre'];
  $ema=$reg1['email'];
  $sex=$reg1['sexo'];
 
?>
 <form action="" method="post">
  <input type="hidden" name="ids" value="<?php echo $per; ?>">
  CEDULA:<input type="" name="ced" value="<?php echo $ced; ?>"><br>
  NOMBRE:<input type="" name="nom" value="<?php echo $nom; ?>"><br>
  EMAIL:<input type="" name="ema" value="<?php echo $ema; ?>"><br>
  GENERO:<br>
  Hombre:<input <?php if ($sex=="m"){echo "checked";}?> type="radio" name="sex" value="m">
  Mujer:<input <?php if ($sex=="f"){echo "checked";}?> type="radio" name="sex" value="f"><br><br>
  <input type="submit" name="actufinal" value="Actualizar Datos" />
 </form>
<?php
}
?>

<?php
 if (isset($_POST['actufinal'])) {
  $ids = $_POST['ids'];
  $cedu = $_POST['ced'];
  $nomb = $_POST['nom'];
  $emai = $_POST['ema'];
  $sexo = $_POST['sex'];
  mysqli_query($link, "UPDATE clientes set cedula='$cedu', nombre='$nomb', email='$emai', sexo='$sexo' where id_cliente='$ids'")or die(mysqli_error());
  echo "<script type='text/javascript'>alert('Dato Actualizado');location='actualizar.php'</script>";
  //echo "<script alert('Dato Actualizado' ; location='actualizar.php')</script>";
 }
?>
<br>
<hr>
<form method="get" action="index.php">
 <input type="submit" name="vol" value="VOLVER">
</form>
</body>
</html>


_________________________________

eliminar.php

<!DOCTYPE html>
<meta charset="utf-8">
<html>
<head>
 <title>ELIMINAR CLIENTES</title>
</head>
<body bgcolor="#e1e1e1">

<center><h2><u>FORMULARIO PARA ELIMINAR CLIENTES</u></h2></center>
<br>
<center>
<?php 

include ("conexion.php");
$con = mysqli_query($link, "SELECT * from clientes");
$reg = mysqli_fetch_array($con);

?>

<form action="" method="post">
 SELECCIONE PARA ELIMINAR
 <select name="persona">
   <option>Seleccione</option>
  <?php
   do {
   $id = $reg['id_cliente'];
   $nom = $reg['nombre'];
  ?>
  <option value="<?php echo $id; ?>"><?php echo $nom; ?></option>
  <?php
  } while ($reg = mysqli_fetch_array($con));
  ?>
 </select>
 <br>
 <br>
<input type="submit" name="eliminar" value="Eliminar Dato">

<?php 
 if (isset($_POST['persona'])){
 $per = $_POST['persona'];
 mysqli_query($link, "DELETE from clientes where id_cliente='$per'") or die(mysqli_error());
 header("location:eliminar.php");
 }
?>

</form>
<br>
<hr>
<form method="get" action="index.php">
 <input type="submit" name="vol" value="VOLVER">
</form>
</center>
</body>
</html>



__________________________________________________________

Modelo 1 de Matriz CRUD. - POO

Vamos a ver cómo crear un CRUD en PHP (create, read, update, delete), en la programación Web con PHP.

Para desarrollar el ejemplo, debes tener un editor en mi caso utilizo Sublime Text, además necesitas un entorno que te permita desarrollar aplicaciones para PHP, este puede ser: XAMPP que es el que he utilizado en este ejemplo.


QUÉ VAMOS HACER?

Vamos hacer un ejemplo muy sencillo, que nos va permitir ingresar, editar, leer y eliminar los datos de una tabla llamada libros y aunque es una sola tabla con tan solo 4 campos, te da la pauta suficiente para hacerlo con más tablas que tengan más campos.


ESTRUCTURA DEL PROYECTO?

La estructura queda con 8 archivos que los describo de forma general a continuación:


  • index.php: Es un archivo que contiene html y lo que muestra son las opciones Ingresar y Ver, las mismas que direccionan a las páginas ingresar.php y mostrar.php respectivamente. 
  • conexion.php: Este archivo contiene el código para la conexión con MySQL.
  • libro.php: Contiene la clase Libro, con sus respectivas propiedades y métodos getters y setters.
  • crud_libro.php: Este archivo tiene los métodos crud para la tabla libros.
  • administrar_libro.php: Funciona como un controlador que redirecciona dependiendo la petición hecha desde la vista.
  • Finalmente se encuentran los archivos 
  • ingresar.php, mostrar.php y actualizar.php cuyas funciones son fácilmente reconocibles por los nombres que llevan.


CÓMO EMPEZAMOS?

Para empezar debes crear una carpeta llamada crud-basico dentro de la siguiente ruta C:\xampp\htdocs\

Una vez creada, la vas abrir con el editor que utilices, en mi caso con Sublime Text (File->Open Folder).


CREANDO LA BASE DE DATOS:

Antes de continuar con la codificación, vamos a crear una base de datos en MySQL llamada biblioteca con una tabla llamada libros así:

Clic en la imagen...


ARCHIVO DE CONEXIÓN A LA BASE DE DATOS:

De regreso a Sublime Text dentro de esta carpeta (crud-basico) creas el primero de 8 archivos, el primer archivo que creas es el de conexión a la base de datos, al mismo que lo vas a llamar conexion.php, y que contendrá el siguiente código.

Clic en la imagen...

Lo que creamos es una clase para conectarnos a la base de datos biblioteca, la conexión se la realiza a través de la interfaz que proporciona un conjunto de funciones que nos permiten acceder a las tablas de una base de datos.

El constructor de la clase recibe 3 parámetros: el origen de la base de datos, el usuario, la clave y un último parámetro que permite manejar alguna excepción que pueda ocurrir, ya sea debido a que el nombre de la base de datos, clave o usuario no fueran los correctos .


CREANDO LA VISTA PRINCIPAL:

Lo que vamos hacer ahora es crear la vista principal de nuestra aplicación, este archivo se va llamar index.php puesto que es lo primero que se va mostrar al usuario.

Clic en la imagen...

Lo más importante de este archivo son el direccionamiento a las páginas ingresar.php que permite crear un nuevo libro y mostrar.php, que muestra todos los libros guardados.


FORMULARIO PARA INGRESAR UN LIBRO:

El siguiente archivo que vamos a crear, permite ingresar los datos del libro y crear la petición para guardar los datos en la base, creamos el archivo con el nombre de ingresar.php


Clic en la imagen...

Para que una petición sea enviada y procesada en el servidor debe estar dentro de un formulario html; así mismo se debe poner la página en la que será procesada la petición (action) que para este caso es el archivo administrar_libro.php que lo crearemos más adelante.

Algo interesante es el elemento <input type=’hidden’ name=’insertar’ value=’insertar’>, se lo pone como (hidden) oculto puesto que se lo utiliza para determinar si debe incorporar al código de ingresar en el archivo administrar_libro.php .


LA CLASE LIBRO:

El siguiente archivo libro.php contiene la clase Libro que permite mapear los atributos a la tabla libros.

Clic en la imagen...


LA CLASE CON LAS FUNCIONES CRUD:

En el archivo crud_libro.php vamos a codificar las funciones CRUD para la tabla libros.

Clic en la imagen...


EL ARCHIVO QUE HARÁ DE CONTROLADOR:

Ahora creamos el archivo administrar_libro.php este archivo hará las funciones de un controlador, ya que procesará de acuerdo a la petición que le sea enviado desde la vista.

Clic en la imagen...


LA VISTA MOSTRAR LIBROS:

Llamado mostrar.php, lo que hace es mostrar todos los libros guardados.

Clic en la imagen...


LA VISTA PARA ACTUALIZAR UN LIBRO:

El archivo actualizar.php permite modificar los datos de un libro y posteriormente guardarlos.

Clic en la imagen...


RESULTADO FINAL:

1er Pantallazo:



2do Pantallazo:


3er Pantallazo:

Cibergrafía:
https://www.ecodeup.com


No hay comentarios:

Publicar un comentario