Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

lucas_imasters

[Resolvido] Excluir pasta do servidor com arquivos

Recommended Posts

Pessoal, dei uma pesquisada, pesquisada e pesquisada e nao achei a solução.

 

Meu problema é o seguinte, quando eu excluo algum cliente e a pasta dele no servidor esta vazio, tudo ocorre perfeito, o cliente é excluido do db, a pasta do servidor e OK. Agora quando a pasta do cliente no servidor está com alguma arquivo, qualquer arquivo, ele exclui o cliente mais não exclui a pasta no servidor. Por que? Como faço para excluir as pastas quando tiverem arquivo dentro.

 

Código de deletar clientes.

 


<?php

include ("conexao.php");

//Resgata os novos valores do form da pagina "excluir_cadastro.php"
$identificador		= $_POST["identificar"];
$nome_cli			= $_POST["nome_novo"];

//Deleta o cliente selecionado do banco de dados
$query = "DELETE FROM cliente WHERE cli_id = {$identificador}";

$exec  = mysql_query($query) or die ("Erro ao excluir o cadastro.  ". mysql_error() );

//Deleta o nome do diretorio do cliente na tabela da area de arquivos
$query = "DELETE FROM arquivo_area WHERE cli_id = {$identificador}";

$exec  = mysql_query($query) or die ("Erro ao excluir os dados da pasta na tabela da area de arquivos.  ". mysql_error() );

//Deleta a pasta no servidor de acordo com o cliente selecionado
$del_pasta = "..\Area_Cliente\Documentos\\$identificador - $nome_cli";

chmod("$del_pasta", 0777);
if(is_dir($del_pasta))
{
	closedir($del_pasta);
	rmdir($del_pasta);
	// Avisa ao usuario que o cliente foi excluído com sucesso
	// Por uma variável redirecionando o Usuário para o form
	$suc = 'admin.php?selecao=excluir&&suc=True';
	header("location: $suc"); //Volta para a página de visualização de cadastros
}	
else
	echo "A pasta não existe ou não pode ser deletada.";
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Espero não estar falando besteira, se estiver por favor me corrijam.. :P

Mas pelo que eu saiba quando uma pasta não está vazia o php não exclui (pelo menos eu não achei uma forma de fazer isso usando php).

 

Pra resolver esse problema eu verifico se a pasta tem algum arquivo, caso tenha eu apago os arquivos usando o unlink, ai depois que eu apago todos os arquivos deleto a pasta.. :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Espero não estar falando besteira, se estiver por favor me corrijam.. :P

Mas pelo que eu saiba quando uma pasta não está vazia o php não exclui (pelo menos eu não achei uma forma de fazer isso usando php).

 

Pra resolver esse problema eu verifico se a pasta tem algum arquivo, caso tenha eu apago os arquivos usando o unlink, ai depois que eu apago todos os arquivos deleto a pasta.. :D

 

 

Você deve estar certo.

 

Poderia fazer um laço adaptado ao meu codigo para ele verificar os arquivos, excluir , e depois excluir a pasta?

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?php

$del_pasta = "..\Area_Cliente\Documentos\\$identificador - $nome_cli";

chmod("$del_pasta", 0777);
if (is_dir($del_pasta)) {

// abre o diretório
   $abrirPasta = opendir($del_pasta);

// le o conteudo do diretório e joga em um array
   while ($nome_itens = readdir($abrirPasta)) {
       $itens[] = $nome_itens;
   }
// pega a quantidade de arquivos que estão dentro do diretório
   $count = count($itens);

// caso a contagem de arquivos seja maior que 2 executa o foreach apagando todos os arquivos,
// maior que dois, por causa dos '.' & '..' que tambem são contados como arquivo.
   if ($count > 2) {
       foreach ($itens as $key => $arquivo) {
           if ($arquivo != '.' && $arquivo != '..') {
               unlink($del_pasta . $arquivo);
           }
       }

       closedir($del_pasta);
       rmdir($del_pasta);
       // Avisa ao usuario que o cliente foi excluído com sucesso
       // Por uma variável redirecionando o Usuário para o form
       $suc = 'admin.php?selecao=excluir&&suc=True';
       header("location: $suc"); //Volta para a página de visualização de cadastros
   } else {
       echo "A pasta não existe ou não pode ser deletada.";
   }
}

 

Ta ae, só da uma estudada no cód. agora.. =)

 

Abrass

Compartilhar este post


Link para o post
Compartilhar em outros sites

Utilizei o seu código e fiz algumas alteraçõe que estavam erradas e eu tinha esquecido.

 

Veja:


<?php

include ("conexao.php");

//Resgata os novos valores do form da pagina "excluir_cadastro.php"
$identificador		= $_POST["identificar"];
$nome_cli			= $_POST["nome_novo"];
/*
//Deleta o cliente selecionado do banco de dados
$query = "DELETE FROM cliente WHERE cli_id = {$identificador}";

$exec  = mysql_query($query) or die ("Erro ao excluir o cadastro.  ". mysql_error() );

//Deleta o nome do diretorio do cliente na tabela da area de arquivos
$query = "DELETE FROM arquivo_area WHERE cli_id = {$identificador}";

$exec  = mysql_query($query) or die ("Erro ao excluir os dados da pasta na tabela da area de arquivos.  ". mysql_error() );
*/
//Deleta a pasta no servidor de acordo com o cliente selecionado
$del_pasta = "../Area_Cliente/Documentos/$identificador - $nome_cli";

chmod("$del_pasta", 0777);
if (is_dir($del_pasta))
{

// abre o diretório
	$abrirPasta = opendir($del_pasta);

// le o conteudo do diretório e joga em um array
	while ($nome_itens = readdir($abrirPasta)) {
		$itens[] = $nome_itens;
	}
// pega a quantidade de arquivos que estão dentro do diretório
	$count = count($itens);

// caso a contagem de arquivos seja maior que 2 executa o foreach apagando todos os arquivos,
// maior que dois, por causa dos '.' & '..' que tambem são contados como arquivo.
	if ($count > 2) {
		foreach ($itens as $key => $arquivo) {
			if ($arquivo != '.' && $arquivo != '..') {
				unlink($del_pasta . $arquivo);
			}
		}

		closedir($del_pasta);  //LINHA 45
		rmdir($del_pasta);  //LINHA 46
		// Avisa ao usuario que o cliente foi excluído com sucesso
		// Por uma variável redirecionando o Usuário para o form
		//$suc = 'admin.php?selecao=excluir&&suc=True';
		//header("location: $suc"); //Volta para a página de visualização de cadastros
	} else {
		echo "A pasta não existe ou não pode ser deletada.";
	}
}
?>

 

E ocorreu o seguinte erro:

 

Warning: closedir(): supplied argument is not a valid Directory resource in C:\Arquivos de programas\wamp\www\LDS Oliverira - Contabilidade\Site LDS Oliverira - Contabilidade - Rev9- 19-04-11\Area_Admin\deletar_cadastro.php on line 45

 

Warning: rmdir(../Area_Cliente/Documentos/16 - Teste de Exclusao/) [function.rmdir]: Permission denied in C:\Arquivos de programas\wamp\www\LDS Oliverira - Contabilidade\Site LDS Oliverira - Contabilidade - Rev9- 19-04-11\Area_Admin\deletar_cadastro.php on line 46

 

----------------------

E se depois disso eu atualizar a pagina ai aparece a seguinte mensagem:

 

A pasta não existe ou não pode ser deletada.

 

------------

 

Ele apagou os arquivos, mais não apagou a pasta. Menos mal. Obrigado pela ajuda. Agora voce sabe oq eu posso fazer para corrigir esse erro e apagar a pasta?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Altera essa linha aqui..

closedir($del_pasta);  //LINHA 45

 

deixa assim

closedir($abrirPasta);

 

^_^

 

Cara, quando fiz a alteração que voce mandou ele apagou e fechou a minha pasta que tava aberta com os arquivos. Meu coração pulou pensei que tinha apagado meus arquivos todos. AHSDUIADSOHDISAHIDASHIUHIHDSID.. Foi isso não apenas fechou. Muito obrigado sua adaptação funcionou perfeitamente para mim. Tópico Resolvido. Obrigado Francispansa

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, quando fiz a alteração que voce mandou ele apagou e fechou a minha pasta que tava aberta com os arquivos. Meu coração pulou pensei que tinha apagado meus arquivos todos. AHSDUIADSOHDISAHIDASHIUHIHDSID.. Foi isso não apenas fechou. Muito obrigado sua adaptação funcionou perfeitamente para mim. Tópico Resolvido. Obrigado Francispansa

 

hehehe, o susto deve ter sido bom.. :P

 

Bom, fico feliz q tenha resolvido seu problema.. =)

 

Abrass

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.