Jump to content


Photo

Comando If + Echo - Como Retornar Apenas 1 Echo


  • Faça o login para participar
3 replies to this topic

#1 gabsbs

gabsbs

    Novato no fórum

  • Usuários
  • 11 posts
  • Sexo:Não informado

Posted 29/03/2009, 17:19

Olá amigos!

Estou desenvolvendo um sistema de gerenciamento de arquivos em PHP.

No código a seguir, quando a pessoa dá um comando para exclusão de uma pasta, o código analiza se a pasta está vázia, excluindo-a, ou, caso encontre arquivos nela, retorna uma mensagem de qe o usuário precisa excluir o conteúdo dela primeiro:

[codebox]if(!empty($_GET["action"]))
if($_GET["action"] == "del_folder")
{
$foldername = $_GET["name"];
if(file_exists($foldername."/")){ //Verifica se a pasta existe
$openfolder = opendir($foldername); //Abre a pasta
while($files = readdir($openfolder)) {

if(is_dir($foldername."/".$filename) && ! ($files == "." || $files == "..")){ //Abre pastas
@rmdir($foldername."/".$files) or $erro = 1;
}else if(is_file($foldername."/".$filename) && ! ($files == "." || $files == "..")){ //Abre arquivos
@unlink($foldername."/".$files) or $erro = 1;
}
if($erro == "1"){
echo display_error_message("<div align='center'>Esta pasta contém subpastas e/ou arquivos<br>Exclua primeiro seu conteúdo</div>");
}
}
closedir($openfolder); //Fecha a pasta
@rmdir($foldername);
}else{
echo display_error_message("<div align='center'>Esta pasta não existe ou já foi excluída</div>");
}
}[/codebox]

meu problema é que ele está retornando um "echo" pra cada arquivo ou subpasta encontrado. Logo, se houver um arquivo dentro, ele retorna 1 único aviso (conforme deveria ser), mas se tiverem 10, aparecem 10 avisos abaixo um do outro...

imagino que deva ser simples mas nunca trabalhei nesta parte... Como fazer pra que este aviso seja mostrado apenas uma vez?

obs: eu preciso que o aviso seja dado através de "echo", não pode ser "or die", pois este para o carregamento da página e não me oferece o retorno da mensagem de erro dentro de meu template, como é o caso do "echo" que envia o erro para a variável "display_error_message"...


Desde já agradeço a ajuda!!

Forte abraço!

Edição feita por: gabsbs, 29/03/2009, 17:20.


#2 '' sem.Ponto

'' sem.Ponto

    Super Veterano

  • Ex-Admins
  • 2098 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte

Posted 29/03/2009, 22:10

Essa é a condicional que está com o aviso, certo?

if($erro == "1"){
	 // o aviso...
}

E esse while lista arquivo por arquivo.

while($files = readdir($openfolder)) {
	 // lista os arquivos...
}

Se você der uma organizada nesse código, você verá que a condicional do aviso está dentro do while. É por isso que o aviso aparece 10 vezes se tiver 10 arquivos na pasta.

Entendeu?

:D
att,
Muller Dias
ex-administrador Fórum WMO

#3 gabsbs

gabsbs

    Novato no fórum

  • Usuários
  • 11 posts
  • Sexo:Não informado

Posted 29/03/2009, 23:20

Essa é a condicional que está com o aviso, certo?

if($erro == "1"){
	 // o aviso...
}

E esse while lista arquivo por arquivo.

while($files = readdir($openfolder)) {
	 // lista os arquivos...
}

Se você der uma organizada nesse código, você verá que a condicional do aviso está dentro do while. É por isso que o aviso aparece 10 vezes se tiver 10 arquivos na pasta.

Entendeu?

:D


:assobio: aieuhiauehiuaheiuahe.. noohh fi vlwzão msmoo... coisa mais simples qe ja fiz no php e eu boiei bonito.. aeiuAEIuhiAUEhiuaehiuhae... nem passei perto de perceber que ele tava ligado ao while.. :lol: viage =P Brigadasso msm dude

#4 lwirkk

lwirkk

    Veterano

  • Usuários
  • 1314 posts
  • Sexo:Não informado

Posted 30/03/2009, 10:50

GLOB() não é melhor? '-'
Posted Image
"Se quiser ser feliz por um dia, vingue-se; se quiser ser feliz por uma vida inteira, perdoe."

Muito Obrigado à todos do fórum, e à toda equipe do fórum! =)




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq