CRUD PHP usando PDO: Ejemplo completo

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
Índice

    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.

    Relacionado  Insertar datos MySQL usando PDO PHP
    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.

    Relacionado  PDO PHP Extensión Base de Datos MySQL
    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".

    Relacionado  Consultar datos MySQL mediante PDO: Ejemplos
    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

     

    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!.

    Entradas Relacionadas

      12 Comentarios

    1. Carlos dice:

      Buenas tardes

      Da problemas la descarga, tanto de pago como gratuita :S

      1. Nestor Tapia dice:

        Hola Carlos

        Gracias por informar, te comento que ya se ha solucionado ese detalle

        Saludos

    2. marcz dice:

      el tutorial está muy bien y se agradece... ahora bien, la sección de descargas del blog es un desastre de diseño. 10 minutos leyendo para para tratar de entender como están organizadas las descargas. Para los tiempos que corren, la buena información es importante pero también la forma de presentarla. Se nota de lejos que no eres diseñador, el diseño está tan centrado en conseguir un pago que descuida la navegabilidad

      1. Manuel dice:

        eres bien quejón, quieres organizado encima. Investiga flojo.!!

    3. Roberto dice:

      Hola, primero que nada gracias por el tutorial.
      Al actualizar un registro, podrias explicarme de donde proviene el valor de actualizar : if(isset($_POST['actualizar'])) Gracias !.

    4. Hola Nestor,
      Gracias por compartir tu sabiduría y me podría y decir como se descarga el proyecto ?
      No funciona la ultima opción o todas

      1. Nestor Tapia dice:

        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.

    5. Martin dice:

      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?

    6. Asaad dice:

      Hola, una consulta, no puedo descargar el ejemplo o es que lo estas comercializando? Saludos

      1. Nestor Tapia dice:

        Hola Asaad

        Para obtener el script tenemos 4 opciones, las tres primeras son descargas de pago pero la cuarta opcion es gratuita.

        Sientete libre de elegir que opcion desear usar.

        Saludos a la distacia.

    7. Enrique Fortunato dice:

      Hola, no puedo descargar el ejemplo o es un producto que esta a la venta?

      1. Nestor Tapia dice:

        Hola Enrique,

        para descargar el script puedes elegir los de pago o si deseas gratis usa la opcion 4, Sientete libre de elegir la opcion.

        Saludos a la distancia.

    Deja una respuesta

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

    Subir