PDO PHP

CRUD PHP usando PDO: Ejemplo completo

CRUD PHP usando PDO. En este artículo mostraremos un ejemplo completo para hacer operaciones con la base de datos denominado CRUD (crear, leer, actualizar y eliminar) usando el lenguaje PHP y su extensión PDO. En anteriores post hemos aprendido sobre sobre el manejo de los componentes de un crud y la conexión con la base de datos.

CRUD PHP usando PDO Ejemplo completo
CRUD PHP usando PDO Ejemplo completo

Recursos:CRUD PHP usando PDO

Para poder crear un CRUD PDO necesitamos de algunos recursos fundamentales y a continuación los detallare:

  • Lenguaje PHP.- En este ejemplo usaremos PHP. Sin embargo, también debe estar habilitada la extensión PDO.
  • Base de datos MySQL.- Lo usaremos para recuperar la información e inserción de los datos.
  • Librería BootStrap.- Su uso es de estética para nuestro proyecto y rápido desarrollo de sistemas
  • HTML5.- Lo usaremos como base para poder crear tablas, formularios etc.

Pasos: CRUD PHP usando PDO

Primeramente tenemos que tener una tabla con su respectiva base de datos en MySQL y la secuencia de comandos SQL.

1.- Creación de conexión PDO: BDconect.php

El siguiente código muestra cómo crear una conexión PDO en PHP y para este ejemplo usaremos el fichero con el nombre de BDconect.php

<?php
// DB CREDENCIALES DE USUARIO.
define('DB_HOST','localhost');
define('DB_USER','root');
define('DB_PASS','');
define('DB_NAME','php_insertarpdo');
// Ahora, establecemos la conexión.
try
{
// Ejecutamos las variables y aplicamos UTF8
$connect = new PDO("mysql:host=".DB_HOST.";dbname=".DB_NAME,DB_USER, DB_PASS,
array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"));
}
catch (PDOException $e)
{
exit("Error: " . $e->getMessage());
}
?>

2.- Insertar PDO PHP: Insert Into

En este ejemplo usaremos un botón HTML que llamara a un formulario para poder recoger la información y posteriormente insertar registros. Por lo tanto, si el formulario es visible podemos ingresar la información necesaria para agregar una nueva fila en nuestra tabla MySQL.

Insertar registros PHP PDO
Insertar registros PHP PDO

a) Formulario HTML

Aquí en este formulario incluiremos los campos que deseamos recoger y luego enviarlo a la BD. Sin embargo, solo se habilitara si se presiona el botón “Nuevo registro“.

<!-- Insertar Registros-->
<?php 
if (isset($_POST['formInsertar'])){?>
    <div class="col-12 col-md-12"> 
<form action="" method="POST">
  <div class="form-row">
    <div class="form-group col-md-6">
      <label for="nombres">Nombres</label>
      <input name="nombres" type="text" class="form-control" placeholder="Nombres">
    </div>
    <div class="form-group col-md-6">
      <label for="edad">Apellidos</label>
      <input name="apellidos" type="text" class="form-control" id="edad" placeholder="Apellidos">
    </div>
  </div>
<div class="form-row">  
    <div class="form-group col-md-6">
      <label for="profesion">Profesión</label>
      <input name="profesion" type="text" class="form-control" id="profesion" placeholder="Profesion">
    </div>

  <div class="form-group col-md-6">
    <label for="Estado">Estado</label>
    <select required name="estado" class="form-control" id="Estado">
    <option value=""><< >></option>
    <option value="Colombia">Colombia</option>
    <option value="Argentina">Argentina</option>
    <option value="Ecuador">Ecuador</option>
    <option value="Peru">Peru</option>
    <option value="Brasil">Brasil</option>
    <option value="Bolivia">Bolivia</option>
    <option value="Chile">Chile</option>
    </select>
  </div>

</div>
<div class="form-group">
  <button name="insertar" type="submit" class="btn btn-primary  btn-block">Guardar</button>
</div>
</form>
    </div> 
<?php }  ?>
<!-- Fin Insertar Registros-->

b) Código PHP de inserción a la BD

Este script será el encargado de enviar los datos del formulario a la base de datos. Sin embargo, tendrá que pasar algunas validaciones para verificar la información.

<?php
if(isset($_POST['insertar'])){
///////////// Informacion enviada por el formulario /////////////
$nombres=$_POST['nombres'];
$apellidos=$_POST['apellidos'];
$profesion=$_POST['profesion'];
$estado=$_POST['estado'];
$fregis = date('Y-m-d');
///////// Fin informacion enviada por el formulario ///

////////////// Insertar a la tabla la informacion generada /////////
$sql="insert into tbl_personal(nombres,apellidos,profesion,estado,fregis) values(:nombres,:apellidos,:profesion,:estado,:fregis)";

$sql = $connect->prepare($sql);

$sql->bindParam(':nombres',$nombres,PDO::PARAM_STR, 25);
$sql->bindParam(':apellidos',$apellidos,PDO::PARAM_STR, 25);
$sql->bindParam(':profesion',$profesion,PDO::PARAM_STR,25);
$sql->bindParam(':estado',$estado,PDO::PARAM_STR,25);
$sql->bindParam(':fregis',$fregis,PDO::PARAM_STR);

$sql->execute();

$lastInsertId = $connect->lastInsertId();
if($lastInsertId>0){

echo "<div class='content alert alert-primary' > Gracias .. Tu Nombre es : $nombres </div>";
}
else{
echo "<div class='content alert alert-danger'> No se pueden agregar datos, comuníquese con el administrador </div>";

print_r($sql->errorInfo()); 
}
}// Cierra envio de guardado
?>

3.- PHP PDO: Leer

Esta opción es muy importante porque nos permite leer y mostrar la información existente en una tabla haciendo uso de una consulta SQL. Sin embargo, estamos usando PDO como conexión a MySQL.

<table class="table table-bordered table-striped">
<thead class="thead-dark">
    <th width="18%">Nombres</th>
    <th width="22%">Apellidos</th>
    <th width="22%">Profesión</th>
    <th width="14%">Estado</th>
    <th width="13%">Fecha registro</th>
    <th width="13%" colspan="2"></th>
</thead>
<tbody>
<?php
$sql = "SELECT * FROM tbl_personal"; 
$query = $connect -> prepare($sql); 
$query -> execute(); 
$results = $query -> fetchAll(PDO::FETCH_OBJ); 

if($query -> rowCount() > 0)   { 
foreach($results as $result) { 
echo "<tr>
<td>".$result -> nombres."</td>
<td>".$result -> apellidos."</td>
<td>".$result -> profesion."</td>
<td>".$result -> estado."</td>
<td>".$result -> fregis."</td>
<td>
<form method='POST' action='".$_SERVER['PHP_SELF']."'>
<input type='hidden' name='id' value='".$result -> id."'>
<button name='editar'>Editar</button>
</form>
</td>

<td>
<form  onsubmit=\"return confirm('Realmente desea eliminar el registro?');\" method='POST' action='".$_SERVER['PHP_SELF']."'>
<input type='hidden' name='id' value='".$result -> id."'>
<button name='eliminar'>Eliminar</button>
</form>
</td>
</tr>";

   }
 }
?>
</tbody>
</table>
Visualizar registros
Visualizar registros

4.- Actualizar fila de base de datos

Para poder realizar esta acción nos apoyaremos en un formulario HTML y en ese formulario mostraremos la información extraída de la BD y posteriormente poder modificar algunos valores según corresponda.

Actualizar registros
Actualizar registros
<?php
    
if(isset($_POST['actualizar'])){
///////////// Informacion enviada por el formulario /////////////
$id=trim($_POST['id']);
$nombres=trim($_POST['nombres']);
$apellidos=trim($_POST['apellidos']);
$profesion=trim($_POST['profesion']);
$estado=trim($_POST['estado']);
$fregis = date('Y-m-d');
///////// Fin informacion enviada por el formulario /// 

////////////// Actualizar la tabla /////////
$consulta = "UPDATE tbl_personal
SET `nombres`= :nombres, `apellidos` = :apellidos, `profesion` = :profesion, `estado` = :estado, `fregis` = :fregis
WHERE `id` = :id";
$sql = $connect->prepare($consulta);
$sql->bindParam(':nombres',$nombres,PDO::PARAM_STR, 25);
$sql->bindParam(':apellidos',$apellidos,PDO::PARAM_STR, 25);
$sql->bindParam(':profesion',$profesion,PDO::PARAM_STR,25);
$sql->bindParam(':estado',$estado,PDO::PARAM_STR,25);
$sql->bindParam(':fregis',$fregis,PDO::PARAM_STR);
$sql->bindParam(':id',$id,PDO::PARAM_INT);

$sql->execute();

if($sql->rowCount() > 0)
{
$count = $sql -> rowCount();
echo "<div class='content alert alert-primary' > 

Gracias: $count registro ha sido actualizado  </div>";
}
else{
    echo "<div class='content alert alert-danger'> No se pudo actulizar el registro  </div>";

print_r($sql->errorInfo()); 
}
}// Cierra envio de guardado
?>

5.- Eliminar fila mediante PDO

El siguiente código PHP muestra cómo accionar la consulta de eliminación mediante la conexión PDO. Es por eso que usaremos la consulta: “delete from table“.

Eliminar registros
Eliminar registros
<?php  
if(isset($_POST['eliminar'])){
////////////// Actualizar la tabla /////////
$consulta = "DELETE FROM `tbl_personal` WHERE `id`=:id";
$sql = $connect-> prepare($consulta);
$sql -> bindParam(':id', $id, PDO::PARAM_INT);
$id=trim($_POST['id']);

$sql->execute();

if($sql->rowCount() > 0)
{
$count = $sql -> rowCount();
echo "<div class='content alert alert-primary' > 
Gracias: $count registro ha sido eliminado  </div>";
}
else{
    echo "<div class='content alert alert-danger'> No se pudo eliminar el registro  </div>";

print_r($sql->errorInfo()); 
}
}// Cierra envio de guardado
?>

Conclusión: CRUD PHP usando PDO

En este artículo estamos usando la extensión PDO del PHP y su uso es muy recomendado entre los programadores que usan base de datos.

Como han podido observar su implementación no es complicado y podemos incorporarlo sin problemas en nuestros proyectos que estemos realizando y sui ya lo tenemos desarrollado podemos migrar a esa extensión.

Descarga del ejemplo completo

Les dejare un archivo ZIP con todos los recursos y la base del ejemplo, un paquete completo

 

Descarga 156 Sistemas PHP & MySQL

Nestor Tapia

Bloggero, amante de la programación PHP, innovador y me fascina compartir información. Desde que conocí el entorno informatico y el internet me llamó la atención la programación, Por tal motivo he creado mi blog BAULPHP.COM para compartir mis experiencias con todos ustedes. ¡Gracias por leerme!.

Publicaciones relacionadas

7 comentarios

    1. Hola Mario

      Para descargar puedes usar cualquiera de las 4 opciones y si deseas puedes usar la opción 4 que es 0 pago y sigue los pasos, te abrirá una opción de agregar al carrito de compras, sigue los pasos y aparecerá el enlace para descargar gratis.

      Saludos.

  1. Hola Nestor
    En primer lugar gracias por compartir tu sabiduría y en segundo quisiera agregarle un paginador pues en la tabla tengo muchos datos ¿hay alguna forma de hacerlo?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba