Eliminar imagen de base de datos en PHP con PDO

En entradas anteriores, explique como se inserta una imagen en la base de datos, como se edita una imagen desde la base de datos, viendo esa imagen en el listado

En esta entrada voy tentar explicar como se borra dicha imagen

El tema del borrado, no es simplesmente borrar los datos de la base de datos ya que eso se hace con un simple DELETE pero como tenemos las imagenes en una carpeta a parte hay que borrar esa imagen en el fisico tambien, o sea hay que borrar el archivo de la imagen


...

Consulta del registro


Lo primero que debes hacer es consultar el registro en la base de datos, e lo hacemos con una consulta

En el formulario de la lista debemos tener un buton para hacer el borrado de los registro

Cuando hacemos clic sobre ese buton enviamos un ID del registro a borrar a alguna pagina que indicamos en la ruta del buton

recogemos ese ID y tenendolo como referencia hacemos la consulta de ese registro a la base de datos

Ejemplo de la consulta

if (isset($_GET['txtId'])) {
    //print_r($_GET['txtId']);
    $id = (isset($_GET['txtId'])) ? $_GET['txtId'] : "";
    //Buscamos la imagen a borrar
    $sql = ("SELECT imagen FROM tbl_portafolio WHERE id=:id");
    $stmt = $pdo->prepare($sql);
    $stmt->bindParam('id', $id);
    $stmt->execute();
    $registro = $stmt->fetch(PDO::FETCH_LAZY);
    // print_r($registro);
    //Condicion de si hay o no imagen
    if (isset($registro['imagen'])) {
        //Perguntamos si ese fichero existe
        if (file_exists("./../../../assets/img/portfolio/" . $registro['imagen'])) {
            //Borramos fisicamente la imagen
            unlink("./../../../assets/img/portfolio/" . $registro['imagen']);
        }
    }
    

observe el codigo

Lo primero perguntamos si tenemos un GET con el valor del ID a consultar

si lo tenemos hacemos la consulta de la imagen en dicho registro

Con una variable $registro guardamos el registro

Al final del codigo perguntamos si hay un fichero con ese nombre

if (file_exists("./../../../assets/img/portfolio/" . $registro['imagen']))

si lo hay lo borramos con el atributo unlink

unlink("./../../../assets/img/portfolio/" . $registro['imagen']);

Nota: la ruta del archivo a eliminar tiene que ser asinalada, asi como el nombre del fichero


Eliminacion definitiva

Tenendo ya eliminado el fichero de la carpeta onde lo teniamos solo nos resta eliminar los datos de la base de datos

ejemplo del codigo


 //ahora borra el registro
 $sql = ("DELETE  FROM tbl_portafolio WHERE id=:id");
 $stmt = $pdo->prepare($sql);
 $stmt->bindParam('id', $id);
 $stmt->execute();
    

Nunca es demasiado relembrar que cada vez que queremos hacer consultas a la base de datos, nos debemos conectar a la misma, haciendo la desconecion cuando no la necessitamos

Esa pratica evita injeciones html, e nos da mas seguranza a nuestros proyectos








Publicar un comentario

0 Comentarios