Creando CRUD en PHP: Operaciones Básicas para La Gestión de Bases de Datos
Creando CRUD en PHP: Operaciones Básicas para La Gestión de Bases de Datos
Para la creación de nuestro CRUD utilizaremos PDO, una capa abstracta para PHP que nos permite realizar
consultas a bases de datos y que soporta una gran variedad de motores diferentes como MySQL, SQLServer,
Oracle…
Una vez creada la tabla también crearemos nuestra entidad "vehiculo", que será la data a mapear ya sea para
listar, registrar, eliminar o modificar sobre la base de datos. En este caso el código PHP que utilizaremos será:
class Vehiculo
{ private $id;
private $marca;
private $modelo;
private $kilometros;
El método __GET($k) se encarga de devolver el valor del atributo indicado. En cambio, el método __SET($k,
$v) asignará el valor $v al atributo indicado en el parámetro $k.
Constructor
El constructor se encargará de crear el objeto PDO que luego utilizaremos para ejecutar nuestras
instrucciones en la base de datos. El código para esto es:
Aquí lo que debemos hacer es indicar los datos que utilizaremos para conectarnos a la base de datos. Estos
datos son:
- host: nombre del servidor en el que está ubicada la base de datos. Normalmente suele ser "localhost".
- dbname: Nombre de la base de datos. En nuestro ejemplo la hemos llamado "vehiculo".
- dbuser: Se trata del nombre del usuario que tendrá acceso a la base de datos. En nuestro caso el usuario es
"root".
- dbpass: Sería la contraseña asociada al usuario de base de datos. En nuestro ejemplo le hemos puesto
"xxxxxx".
foreach($stm->fetchAll(PDO::FETCH_OBJ) as $r)
{
$alm = new Vehiculo();
$alm->__SET('id', $r->id);
$alm->__SET('marca', $r->marca);
$alm->__SET('modelo', $r->modelo);
$alm->__SET('kilometros', $r->kilometros);
$result[] = $alm;
}
return $result;
}
catch(Exception $e)
{
die($e->getMessage());
}
}
Lo primero que haremos será crearnos un array de nombre $result donde almacenaremos los diferentes
vehículos que forman parte de nuestra base de datos. Esto se hace mediante la siguiente instrucción:
$result = array();
En este caso hemos indicado mediante la instrucción SQL "SELECT * FROM vehiculo" que nos devuelva todos
los registros almacenados en la base de datos. El encargado de ejecutar esta instrucción SQL será el método
"execute()".
Una vez ejecutada la instrucción tendremos que recorrer todos esos registros para crear los diferentes
vehículos, a fin de almacenarlos en nuestro array $result.
foreach($stm->fetchAll(PDO::FETCH_OBJ) as $r)
{
$alm = new Vehiculo();
$alm->__SET('id', $r->id);
$alm->__SET('marca', $r->marca);
$alm->__SET('modelo', $r->modelo);
$alm->__SET('kilometros', $r->kilometros);
$result[] = $alm;
}
Por último, sólo falta devolver el array que contiene la información para poder mostrarla de la forma que
queramos en nuestra página web.
return $result;
$alm->__SET('id', $r->id);
$alm->__SET('marca', $r->Nombre);
$alm->__SET('modelo', $r->Apellido);
$alm->__SET('kilometros', $r->Sexo);
return $alm;
} catch (Exception $e)
{
die($e->getMessage());
}
}
Debemos fijarnos en que a este método se le pasa como argumento el id del vehículo que queremos
recuperar de la base de datos.
Después, creamos un objeto vehículo vacío donde colocaremos la información recuperada de la base de
datos.
Por último, devolvemos el objeto vehículo que hemos creado y donde hemos almacenado la información
recuperada de la base de datos.
return $alm;
Este objeto podrá ser utilizado en nuestra página web para mostrar los datos de ese vehículo.
Función
guardar
Vamos a seguir ahora con la función que nos permite guardar nuevos vehículos en nuestra base de datos. El
código sería el siguiente.
$this->pdo->prepare($sql)
->execute(
array(
$data->__GET('marca'),
$data->__GET('modelo'),
$data->__GET('kilometros')
)
);
} catch (Exception $e)
{
die($e->getMessage());
}
}
Al igual que en el caso anterior, a esta función se le pasa como parámetro un objeto vehículo que contiene la
información que vamos almacenar en base de datos. Esta información la hemos podido sacar de un
formulario, un archivo xml o incluso otra base de datos.
Lo siguiente será crear la instrucción SQL que insertará la información en la base de datos y que corresponde
al siguiente trozo de código.
En el código anterior se observa que se hace uso del método "__GET()" para conseguir la información de cada
uno de los atributos del objeto vehículo que se le ha pasado por parámetro.
Función
modificar
La función modificar es muy similar al caso anterior donde hemos visto el proceso de registro.
$this->pdo->prepare($sql)
->execute(
array(
$data->__GET('marca'),
$data->__GET('modelo'),
$data->__GET('kilometros'),
$data->__GET('id')
)
);
} catch (Exception $e)
{
die($e->getMessage());
}
}
Como en el anterior, al método se le pasaría como argumento un objeto vehículo con los datos a modificar.
A continuación, se crearía la instrucción SQL que se encargaría de modificar la información, de forma similar
a lo visto en el caso anterior.
$this->pdo->prepare($sql)
->execute(
array(
$data->__GET('marca'),
$data->__GET('modelo'),
$data->__GET('kilometros'),
$data->__GET('id')
)
);
Función
eliminar
La última de las funciones sería la encargada de eliminar los registros de la base de datos. El código sería el
siguiente:
Lo que se pasa por parámetros a la función es el id del vehículo que vamos a eliminar.
Ese id, será el que utilicemos para crear la consulta SQL encargada de realizar el borrado del registro.
Al igual que en todos los casos anteriores, el método "execute" será el encargado de ejecutar la instrucción
SQL.
Código completo de nuestro CRUD
A continuación, os dejamos el código completo de la clase que contendrá todas las funciones del CRUD que
hemos explicado.
class VehiculoModel
{
private $pdo;
foreach($stm->fetchAll(PDO::FETCH_OBJ) as $r)
{
$alm = new Vehiculo();
$alm->__SET('id', $r->id);
$alm->__SET('marca', $r->marca);
$alm->__SET('modelo', $r->modelo);
$alm->__SET('kilometros', $r->kilometros);
$result[] = $alm;
}
return $result;
}
catch(Exception $e)
{
die($e->getMessage());
}
}
public function recuperarVehiculo($id)
{
try
{
$stm = $this->pdo
->prepare("SELECT * FROM vehiculo WHERE id = ?");
$stm->execute(array($id));
$r = $stm->fetch(PDO::FETCH_OBJ);
$alm = new Vehiculo();
$alm->__SET('id', $r->id);
$alm->__SET('marca', $r->marca);
$alm->__SET('modelo', $r->modelo);
$alm->__SET('kilometros', $r->kilometros);
return $alm;
} catch (Exception $e)
{
die($e->getMessage());
}
}
public function eliminar($id)
{
try
{
$stm = $this->pdo
->prepare("DELETE FROM vehiculo WHERE id = ?");
$stm->execute(array($id));
} catch (Exception $e)
{
die($e->getMessage());
}
}
public function modificar(Vehiculo $data)
{
try
{
$sql = "UPDATE vehiculo SET
marca = ?,
modelo = ?,
kilometros = ?
WHERE id = ?";
$this->pdo->prepare($sql)
->execute(
array(
$data->__GET('marca'),
$data->__GET('modelo'),
$data->__GET('kilometros'),
$data->__GET('id')
)
);
} catch (Exception $e)
{
die($e->getMessage());
}
} public function Registrar(Vehiculo
$data)
{
try
{
$sql =
"INSERT
INTO
vehiculo
(marca,mode
lo,kilometr
os)
VALUES (?, ?, ?)";
$this->pdo->prepare($sql)
->execute(
array(
$data->__GET('marca'),
$data->__GET('modelo'),
$data->__GET('kilometros')
)
);
} catch (Exception $e)
{
die($e->getMessage());
}
}
}
Estas mismas operaciones que hemos creado para nuestra tabla vehículo, la podemos utilizar para cualquier
otra, modificando el nombre de los campos. El pasó final, sería utilizar algo de código HTML para crear la
estructura que permitiese elegir entre las diferentes acciones que hemos explicado a lo largo de nuestro
White Paper.