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

4 respostas Resolvido
logicaphp
R

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

4 Respostas

leonardo0494

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

leonardo0494

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.

leonardo0494
Solucao aceita

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

R

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

Criado 16 de setembro de 2016
Ultima resposta 20 de set. de 2016
Respostas 4
Participantes 2