¿Qué es CRUD?

Es un acrónimo para las maneras en las que se puede operar sobre información almacenada. usualmente se refiere a operaciones llevadas a cabo en una base de datos o un almacén de datos,  también pude aplicar a funciones de un nivel superior de una aplicación como soft donde la información no es realmente eliminada, sino es marcada como eliminada a tráves de un estatus.

CRUD hace referencia a las cuatro operaciones fundamentales de aplicaciones persistentes en sistemas de bases de datos:

  • Create: (Crear registros)
  • Read: Retrieve (Leer registros)
  • Update: (Actualizar registros)
  • Delete: Destroy (Borrar registros)

CRUD resume las funciones requeridas por un usuario para crear y gestionar datos, dichas operaciones están específicamente adaptadas a los requisitos del sistema y de usuario ya sea para la gestión de bases de datos o para el uso de aplicaciones.

Dependiendo de la configuración regional, las operaciones CRUD pueden implementarse de diferentes maneras, como lo muestra la siguiente tabla:

CRUD-OperationSQLRESTful HTTPXQuery
CreateINSERTPOST, PUTinsert
ReadSELECTGET, HEADcopy/modify/return
UpdateUPDATEPUT, PATCHreplace, rename
DeleteDELETEDELETEdelete

Frameworks CRUD: capa de acceso a las bases de datos

CRUD demanda varios pasos de transacción, de forma que los datos no se recogen una vez se han introducido, sino que es necesario pulsar la opción “Guardar” o “Continuar”. 

 framework CRUD pueden aplazarse para ser ejecutadas en diferentes plazos este hecho resulta de gran importancia para sistemas multiusuario, pues permite que varias personas lean los mismos datos al mismo tiempo.

Existen numerosos frameworks con un concepto CRUD basados en diferentes lenguajes y plataformas. A continuación, presentamos algunos ejemplos:

Lenguaje o plataformaFramework
JavaSpring, JDBC (The Java Database Connectivity), Hibernate, JBoss Seam, Isis
PHPLaravel, Yii, CakePHP, Zikula, Symfony, TYPO3 Flow
PerlCatalyst, Gantry
PythonDjango, SQLAlchemy, web2py
GroovyGrails
.NETNHibernate, ADO.NET/Entity Framework
RubyRuby on Rails
JavaScriptBackbone.js, Angular

Cómo desarrollar un CRUD PHP grid para tu base de datos.

En este momento te vamos a enseñar cómo crear una interfaz de arranque para MySQL, el sistema de base de datos más utilizado, que permita el acceso a través operaciones CRUD.

Para manipular la base de datos se utiliza, en este caso, el lenguaje de script del lado del servidor PHP y la extensión PHP Data Objects (PDO).

1. El primer paso consiste en crear una tabla de base de datos simple que pueda ser manipulada con operaciones CRUD a lo largo de este tutorial. Para ello, importa la siguiente tabla de ejemplo en tu base de datos MySQL:

CREATE TABLE `customers` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`name` VARCHAR( 100 ) NOT NULL ,
`email` VARCHAR( 100 ) NOT NULL ,
`mobile` VARCHAR( 100 ) NOT NULL
) ENGINE = INNODB;

La tabla se utiliza para recopilar información del usuario como nombre, correo electrónico y número de teléfono.

A cada entrada se le asigna automáticamente una clave principal (AUTO_INCREMENT PRIMARY KEY), es decir un identificador único.

en el siguiente paso vamos a  regular las conexiones de apertura y de cierre de la base de datos. 

Luego crea un archivo PHP con el nombre database.php y añade la siguiente secuencia de comandos con la clase “Database” para gestionar las conexiones de la base de datos.

<?php
class Database 
{
private static $dbName = 'nombre_de_la_basededatos'; 
private static $dbHost = 'localhost';
private static $dbUsername = 'nombre_de_usuario';
private static $dbUserPassword = 'contraseña';

private static $cont = null;

public function __construct() {
die('Init-Función no permitida');
}

public static function connect() {
// Permitir solo una conexión para la totalidad del acceso
if ( null == self::$cont )
{
  try
  {
    self::$cont = new PDO( "mysql:host=".self::$dbHost.";"."dbname=".self::$dbName, self::$dbUsername, self::$dbUserPassword);
  }
  catch(PDOException $e)
  {
    die($e->getMessage());
  }
} 
return self::$cont;
}

public static function disconnect()
{
self::$cont = null;
}
}

debemos tomar en cuenta que para formar la estructura esencial, es necesario concentrarse en la realización de las diferentes operaciones CRUD. 

Enseguida vamos a poner en marcha la operación create en la que  se necesita otra página HTML con campos de formulario para introducir los datos de usuario vinculados en index.php y a los que se puede acceder a través de un botón en la interfaz Bootstrap.

Para mayor comodidad se recomienda comenzar con la creación de este botón, abriendo index.php y añadiendo el siguiente fragmento de código al elemento <div class=»row»> de la tabla:

<p>
  <a href="create.php" class="btn btn-success">Create</a>
</p>

En el fragmento de código puedes ver que los datos se están vinculando al archivo create.php, aunque este todavía no exista.

Al realizar una prueba del grid de Bootstrap, esta muestra que hay un botón pero, al hacer clic sobre él, este dirige a una página de error.

Para finalizar y hacer válida la operación create debes crear el archivo create.php y añadir el siguiente código:

<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="utf-8">
<link href="css/bootstrap.min.css" rel="stylesheet">
</head>

<body>
<div class="container">

<div class="span10 offset1">
<div class="row">
<h3>Create a Customer</h3>
</div>

<form class="form-horizontal" action="create.php" method="post">
<div class="form-group <?php echo !empty($nameError)?'has-error':'';?>">
<label class="control-label">Name</label>
<div class="controls">
<input name="name" type="text" placeholder="Nombre" value="<?php echo !empty($name)?$name:'';?>">
<?php if (!empty($nameError)): ?>
<span class="help-inline"><?php echo   $nameError;?></span>
<?php endif; ?>
</div>
</div>
<div class="form-group <?php echo !empty($emailError)?'has-error':'';?>">
<label class="control-label">E-Mail-Adresse</label>
<div class="controls">
<input name="email" type="text" placeholder="Correo Electrónico" value="<?php echo !empty($email)?$email:'';?>">
<?php if (!empty($emailError)): ?>
<span class="help-inline"><?php echo   $emailError;?></span>
<?php endif;?>
</div>
</div>
<div class="form-group <?php echo !empty($mobileError)?'has-error':'';?>">
<label class="control-label">Móvil</label>
<div class="controls">
<input name="mobile" type="text" placeholder="Mobilnummer" value="<?php echo !empty($mobile)?$mobile:'';?>">
<?php if (!empty($mobileError)): ?>
<span class="help-inline"><?php echo $mobileError;?></span>
<?php endif;?>
</div>
</div>
<div class="form-actions">
<button type="submit" class="btn btn-success">Create</button>
<a class="btn" href="index.php">Back</a>
</div>
</form>
</div>

</div> <!-- /container -->
</body>
</html>

El código genera el formulario HTML que permite personalizar la información en los campos nombre, correo electrónico y móvil.

Para cada casilla se crea una variable PHP que, en combinación con el fragmento de código que presentamos a continuación. genera mensajes de error cuando no se realiza ninguna entrada en el campo correspondiente:

<?php 

require 'database.php';

if ( !empty($_POST)) {
// Detectar errores de validación 
$nameError = null;
$emailError = null;
$mobileError = null;

// Capturar valores de entrada
$name = $_POST['name'];
$email = $_POST['email'];
$mobile = $_POST['mobile'];

// Validar entrada
$valid = true;
if (empty($name)) {
$nameError = Por favor, introduce tu nombre';
$valid = false;
}

if (empty($email)) {
$emailError = 'Por favor, introduce una dirección de correo electrónico';
$valid = false;
} else if ( !filter_var($email,FILTER_VALIDATE_EMAIL) ) {
$emailError = 'Por favor, introduce una dirección de correo electrónico';
$valid = false;
}

if (empty($mobile)) {
$mobileError = 'Por favor, introduce tu número de móvil';
$valid = false;
}

// Daten eingeben
if ($valid) {
     $pdo = Database::connect();
     $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     $sql = "INSERT INTO customers (name,email,mobile) values(?, ?, ?)";
     $q = $pdo->prepare($sql);
     $q->execute(array($name,$email,$mobile));
     Database::disconnect();
     header("Location: index.php");
}
      }
?>

de esta forma emos logrado crear una página create.php a la que se accede haciendo clic en el botón crear y que permite al usuario introducir su información.

Deja una respuesta