[RESOLVIDO] PHP, banco de dados e unlink de arquivos

Boa noite à todos, tenho um problema com um script php…a ideia é esta, eu tenho uma tabela no mysql que salva 4 campos, id, nome, álbum, imagem…supondo que eu sou o dono do álbum “x” e tenho 2 ou mais fotos nele, ao clicar no link de deletar álbum , eu quero apagar todas elas do banco de dados, e todas as fotos na pasta…tenho no script php um unlink que só apaga 1…

Já tenho o upload e o diretório destas imagens, tudo funciona perfeito, o banco de dados limpa os registro do álbum, mas não consigo deletar todas as fotos da pasta. Caso você saiba como fazer isso, poderia adicionar as linhas necessárias no meu script para deletar as imagens na Pasta do Usuário por este código? Já tentei com um while, do while, For e nada deu certo…

<?php
If (a pessoa clicar no Link_de_Deletar_album) { //Essas linhas são um exemplo que eu adaptei para melhor a compreensão..Eu não estou programando assim :stuck_out_tongue:  
$album = "AlbumX";
$query = mysqli_query($db_conexao, "SELECT usuario, album, imagem FROM fotos WHERE galeria='$album'");
$linha = mysqli_fetch_row($query); $numero_de_linhas = mysqli_num_rows($query); //Conta quantas fotos tem o album

$usuario = $linha[0];
$nome_do_album = $linha[1];
$imagem = $linha[2]; // Aqui eu pego o nome da foto para chama-la na variavel $url_da_imagem
if($usuario != ""){
    $url_da_imagem = "../usuarios/$usuario/$imagem";   //Criei a script patra buscar a imagem
    if(file_exists($url_da_imagem)) {
        unlink($url_da_imagem);
        $sql = "DELETE FROM fotos WHERE galeria='$nome_do_album' AND usuario='$usuario'";
        $query = mysqli_query($db_conexao, $sql);
    }
}
    mysqli_close($db_conexao);
    echo "O album  $album que tinha $numero_de_linhas fotos foi apagado"; //So por exemplo aqui
    exit();
}
?>

Estou precisando muito, agradeço qualquer dica

@Renato122

Então, por que você não recupera o nome de todas as imagens e coloca em um array?

Depois é só usar um for para ler o array e ir apagando da pasta as imagens.

Abraço.

Então, só fazer assim dentro do IF:

if($usuario != “”){

    for($i=0; $i < count($ArrayDasImagens); 4i++){
    
        $url_da_imagem = "../usuarios/$usuario/".$arrayDasImagens[$i];   //Criei a script patra buscar a imagem
        if(file_exists($url_da_imagem)) {
            unlink($url_da_imagem);
            $sql = "DELETE FROM fotos WHERE galeria='$nome_do_album' AND usuario='$usuario'";
            $query = mysqli_query($db_conexao, $sql);
        
    }
}

Abraço.

@Renato122

Bom dia, então meu amigo a variável no seu código está recebendo apenas um valor e não é um array.

Já que a intenção é deletar todas as imagens da galeria vai precisar adicionar os nomes de todas para um array e sendo assim tu vai precisar de um loop, exemplo:

$arrayDasImagens = array(); // Cria um array vazio;

// Executa um loop para ler enquanto a consulta retornar linhas

while($linha = mysql_fetch_row($query)){

    // Usaremos o array_push() para adicionar um indice ao final do array.
    // Ou seja, toda vez que ele passar no loop ele vai adicionar o nome de uma foto no final do array
    array_push($arrayDasImagens, $linha['nomeDaFoto']; 

}

A forma que você está fazendo só está agregando uma String para a variável $arrayDasImagens e não criando um array e por isso não funciona.

Abraço.

1 curtida

Consegui resolver o problema, aprendi a usar o Aaray_push, agora o script apaga tanto o do banco de dados com na pasta…

Leonardo, muito abrigado, agradeço de verdade !!!