Eliminar registro con PDO

En esta ocasión explico cómo eliminar registro de una tabla MySQL con PDO

Para eliminar un registro que tenemos en una tabla de registros, por ejemplo, de personas, procedemos de la siguiente forma:

1º-Envio del registro a eliminar

En el listado de personal (tabla de ejemplo) tenemos un button de Eliminar que al hacer clic nos envía el id del registro a eliminar a una página de eliminación onde vamos mostrar el registro que queremos eliminar


 <button name="eliminar" type="submit" class="btn btn-danger  btn-block">Eliminar</button>
        



...

Recibir el registro a eliminar

Después de ser hecho el envió por POST del registro a eliminar verificamos que registro es exactamente con una consulta SELECT

Ya lo he dicho en más de una ocasión que cuando se trata de consultar la base de datos para hacer cualquier consulta, hay que hacer una conexión a la misma

También una buena práctica es cerrar esa conexión cuando no hace falta

        //Mostrar Resultado a eliminar
include_once('conexion.php');
if (empty($_GET['id'])) {
    header('location: listado_autores.php');
}
$idPersonal = $_GET['id'];
//1) Variable de la consulta:
$sql = "SELECT * FROM tbl_personal Where idPersonal=$idPersonal and estatus=1";
//2) Preparar la consulta:
$stmt = $pdo->prepare($sql);
//3) Ejecutar la consulta SQL:
$stmt->execute();
//4) Asignar variable de resultado
$results = $stmt->fetchAll(PDO::FETCH_OBJ);
//Mostra el resultado en un array
// print_r($results);
//6) Mostrar resultados encontrados
if ($stmt->rowCount() > 0) {
    // Usaremos el ciclo para mostrar resultados
    foreach ($results as $result) {
        print_r($result);
    }
}
    



Mostrar datos

Para mostrar el dato a eliminar usamos una tabla, o formulario, en este caso voy usar un formulario

        <form action="" method="post">

            <div class="p-5 mb-4 bg-light rounded-3">
                <div class="container-fluid py-5 bg-warning">
                    <div class="card “>
                        <h1 class="display-5 fw-bold text-danger “> Usted va a eliminar el siguiente Registro </h1>
                        <div class="card-body “>
                            <label for="">
                                <h3>ID</h3>
                            </label>
                            < input type="text" name="txtId" id="" value="<?php echo " $result-> idPersonal" ?>">
                            <label for="">
                                <h3>Nombres</h3>
                            </label>
                            < input type="text" name="txtname" id="" value="<?php echo " $result-> nombres" ?>">
                            <label for="">
                                <h3>Pais</h3>
                            </label>
                            < input type="text" name="txtPais" id="" value="<?php echo " $result->pais" ?>">
                        </div>
                    </div><br>
                    <button name="eliminar" type="submit" class="btn btn-danger  btn-block">Eliminar</button>
                </div>
            </div>
        </form>
    



Envió por POST

Nos conectamos nuevamente a la base de datos

require_once('conexion.php');
      

1-Declaramos la condicional de envío

 if (!empty($_POST)) {
      //código
      }
      

Preparamos la consulta

            $sql = "SELECT * FROM tbl_personal Where idPersonal=:id and estatus=1";
            $stmt = $pdo->prepare($sql);
        

entrelazamos los bindParam con las variables

 $stmt->bindParam(':id', $idPersonal);
        

ejecutamos la sentencia

$stmt->execute();
        

Si hay un registro con ese id hacemos una consulta con la instrucción DELETE para eliminar el registro de la base de datos

eliminación del dato

if ($stmt->rowCount() > 0) {
    $sql = "DELETE FROM tbl_personal  where idPersonal=:id and estatus=1";
    $stmt = $pdo->prepare($sql);
    $stmt->bindParam(':id', $idPersonal);
    $stmt->execute();
    header('location: lista_personal.php');
} else {
    $alert = " No se ha podido Eliminar el Registro";
    print_r($stmt->errorInfo());
}
    



Código completo

    <?php
    require_once('conexion.php');
    // print_r($_POST);
    // exit;
    
    if (!empty($_POST)) {
        $idPersonal = $_POST['txtId'];
        $alert = "";
    
        $sql = "SELECT * FROM tbl_personal Where idPersonal=:id and estatus=1";
        $stmt = $pdo-> prepare($sql);
        $stmt-> bindParam(':id', $idPersonal);
        $stmt-> execute();
        if ($stmt-> rowCount() > 0) {
            $sql = "DELETE FROM tbl_personal  where idPersonal=:id and estatus=1";
            $stmt = $pdo-> prepare($sql);
            $stmt-> bindParam(':id', $idPersonal);
            $stmt-> execute();
            header('location: lista_personal.php');
        } else {
            $alert = " No se ha podido Eliminar el Registro";
            print_r($stmt-> errorInfo());
        }
    }
    
    //Mostrar Resultado a eliminar
    include_once('conexion.php');
    if (empty($_GET['id'])) {
        header('location: listado_autores.php');
    }
    $idPersonal = $_GET['id'];
    //1) Variable de la consulta:
    $sql = "SELECT * FROM tbl_personal Where idPersonal=$idPersonal and estatus=1";
    //2) Preparar la consulta:
    $stmt = $pdo-> prepare($sql);
    //3) Ejecutar la consulta SQL:
    $stmt-> execute();
    //4) Asignar variable de resultado
    $results = $stmt-> fetchAll(PDO::FETCH_OBJ);
    //Mostra el resultado en un array
    // print_r($results);
    //6) Mostrar resultados encontrados
    if ($stmt-> rowCount() > 0) {
        // Usaremos el ciclo para mostrar resultados
        foreach ($results as $result) {
            print_r($result);
        }
    }
    ?>
    <!doctype html>
    <html Lang="en “>
    
    <head>
        <title>Personal</title>
        <!-- Requerid meta tags -->
        < meta charset="utf-8">
        < meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no “>
    
        <!-- Bootstrap CSS v5.2.1 -->
        < link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.1/dist/css/bootstrap.min.css" rel="stylesheet"
            integrity="sha384-iYQeCzEYFbKjA/T2uDLTpkwGzCiq6soy8tYaI1GyVh/UjpbCx/TYkiZhlZB6+fzT" crossorigin="Anonymous “>
    
    </head>
    
    <body>
        <header>
            <!-- place navbar here -->
        </header>
        <main>
            <form action="" method="post">
    
                <div class="p-5 mb-4 bg-light rounded-3">
                    <div class="container-fluid py-5 bg-warning">
                        <div class="card “>
                            <h1 class="display-5 fw-bold text-danger “> Usted va a eliminar el siguiente Registro</h1>
                            <div class="card-body “>
                                <label for="">
                                    <h3>ID</h3>
                                </label>
                                < input type="text" name="txtId" id="" value="<?php echo " $result-> idPersonal" ?>">
                                <label for="">
                                    <h3>Nombres</h3>
                                </label>
                                < input type="text" name="txtname" id="" value="<?php echo " $result-> nombres" ?>">
                                <label for="">
                                    <h3>Pais</h3>
                                </label>
                                < input type="text" name="txtPais" id="" value="<?php echo " $result->pais" ?>">
                            </div>
                        </div><br>
                        <button name="eliminar" type="submit" class="btn btn-danger  btn-block">Eliminar</button>
                    </div>
                </div>
            </form>
    
        </main>
        <footer>
            <!-- place footer here -->
        </footer>
        <!-- Bootstrap JavaScript Libraries -->
        <script src=" https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.6/dist/umd/popper.min.js"
            integrity="sha384-oBqDVmMz9ATKxIep9tiCxS/Z9fNfEXiDAYTujMAeBAsjFuCZSmKbSSUnQlmh/jp3" crossorigin="anonymous “>
        </script>
    
        <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.1/dist/js/bootstrap.min.js"
            integrity="sha384-7VPbUDkoPSGFnVtYi0QogXtr74QeVeeIs99Qfg5YCF+TidwNdjvaKZX19NZ/e6oz" crossorigin="anonymous “>
        </script>
    </body>
    
    </html>






Publicar un comentario

0 Comentarios