Jump to content
Fórum Script Brasil
  • 0

Rmdir não funciona


Question

Bom dia pessoal, tenho um código que uso para eliminar pasta, com JavaScript e PHP.

Quando coloco assim não funciona, ou seja, não apaga a pasta, mais também não dá nenhum erro.

<div class="excluir_album">
                              <?php
                                 if (isset($_POST['excluir_album'])) {
                                 
                                    $nome_tab = $_POST['datatable'];
									
                                    //seleciona a pasta
                                    $diretorio = '/imagens/originais/bebes/'.$nome_tab.'/';
									
								?>
								<script type="text/javascript">
								var mensagem = "<?php echo("Tem certeza que deseja eliminar o album ".$nome_tab. " ?"); ?>";
								if (confirm(mensagem)) {
									<?php
										//Remove a pasta
										rmdir('$diretorio');
                                   ?>
								}
								</script>
								<?php
								}
	                          ?>
                              &nbsp;
                  </div>

Ou assim também não funciona:

<div class="excluir_album">
                              <?php
                                 if (isset($_POST['excluir_album'])) {
                                 
                                    $nome_tab = $_POST['datatable'];
									
                                    //seleciona a pasta
                                    $diretorio = '/imagens/originais/bebes/'.$nome_tab.'/';
									
								?>
								<script type="text/javascript">
								var mensagem = "<?php echo("Tem certeza que deseja eliminar o album ".$nome_tab. " ?"); ?>";
								if (confirm(mensagem)) {
									<?php
										//Remove a pasta
										rmdir("$diretorio");
                                   ?>
								}
								</script>
								<?php
								}
	                          ?>
                              &nbsp;
                  </div>

Ou simplesmente sem aspas, também não funciona. "rmdir($diretorio);

Mas quando coloco por extenso a pasta que quero apagar, funciona.

Exemplo

<div class="excluir_album">
                              <?php
                                 if (isset($_POST['excluir_album'])) {
                                 
                                    $nome_tab = $_POST['datatable'];
									
                                    //seleciona a pasta
                                    $diretorio = '/imagens/originais/bebes/'.$nome_tab.'/';
									
								?>
								<script type="text/javascript">
								var mensagem = "<?php echo("Tem certeza que deseja eliminar o album ".$nome_tab. " ?"); ?>";
								if (confirm(mensagem)) {
									<?php
										//Remove a pasta
										rmdir('/imagens/fotos/');
                                   ?>
								}
								</script>
								<?php
								}
	                          ?>
                              &nbsp;
                  </div>

Porque não funciona com a variável?

Link to post
Share on other sites

5 answers to this question

Recommended Posts

  • 0

Opa! Tranquilo?

Meu velho, o que me parece é que tu estás querendo tornar algo síncrono em assíncrono.

Bom, vamos ao problema... me diz uma coisa, o "Confirm" é executado? Deve ser...

O que está acontecendo é que essa mistura de PHP e JS, ficou meio bagunçada. Vamos lembrar que o PHP roda no server-side e o JS no client-side, portanto, o que está acontecendo é que a parte do php está rodando até antes da linha do Confirm, depois ele volta pro client e roda o JS e vem sem nada dentro do if seguinte, porque ele teria que voltar para o PHP para rodar o rmdir() que é uma função PHP, ou seja, server-side (roda no servidor) e isso não acontece da forma que está.

Das duas uma, ou tu remove diretório com o JS (nada indicado, é um saco, precisa de ActiveX, permissão no FS, bem chato) ou tu faz algo assíncrono (AJAX) para continuar usando JS + PHP.

Não é o caso, mas vou dar outra dica, quando há problemas de remoção de arquivo ou diretório, cabe ativar todos os erros no php.ini e também olhar os logs do servidor, sempre tem alguma paradinha lá ;)

Ahhh! Já ia esquecendo, cara, tenta usar variável sem aspas nenhuma quando for dentro de função. As aspas são para determinar Strings e/ou campos de funções. Colocar variáveis dentro de aspas simples o torna literal e não variável e em aspas duplas, leva o processamento nas alturas (mas deve ser feito somente quando necessário).

Espero ter ajudado.

Grande agraço!

 

Edited by lemissel
Esquece de falar as "aspas"...
Link to post
Share on other sites
  • 0

De nada. Estamos aqui pra isso heheh

Tem sim meu velho. Podes trabalhar diretamente com o AJAX na sua forma "pura" usando objetos em JS ou usando frameworks como jQuery por exemplo. (Dica: com o jQuery é mais rápido e fácil, além de funcionar da mesma forma, ele faz todo o trabalho sujo pra ti hehehe).

 

AJAX "Puro"

http://www.linhadecodigo.com.br/artigo/3500/fazendo-uma-requisicao-em-ajax-sem-uso-de-plugins.aspx

 

AJAX pelo jQuery

https://www.google.com.br/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0ahUKEwjK4LfLnIfOAhWDhZAKHVryB2sQFgghMAA&url=https%3A%2F%2Fapi.jquery.com%2Fjquery.post%2F&usg=AFQjCNEyR2tjEq7WFf5tBa3TQl24BKk4XA

https://www.google.com.br/url?sa=t&rct=j&q=&esrc=s&source=web&cd=4&cad=rja&uact=8&ved=0ahUKEwjx6O7WnIfOAhVKgpAKHdasAPYQFgg7MAM&url=http%3A%2F%2Fwww.w3schools.com%2Fjquery%2Fajax_post.asp&usg=AFQjCNFgtr86Vts1APWGJp93utw3Kgt27g&bvm=bv.127521224,d.Y2I

http://wbruno.com.br/ajax/enviar-formulario-para-php-sem-refresh-jquery-ajax/

 

Vai sem medo que é tranquilão!

 

Havendo qualquer dúvida, prende o grito que te ajudamos.

Abraço!

 

Link to post
Share on other sites
  • 0

Acabei por fazer diferente, mais continua a não resultar.

o rmdir, unlink e drop table não funciona.

<?php
 			//Conexão com o Banco de Dado
 			include 'connect.php';
 			if (!$conexao) {
					die('Não foi possí­vel conectar: ' . mysql_error()); //Exibe o erro por não conectar
					}
					//Conexão bem sucedida seleciona o BD
				$db_selected 		= mysql_select_db('bd_reborn', $conexao);
 
 $id = $_GET['id'];

 // Monta consulta MySQL, para buscar nome da foto
			$sql = "SELECT * FROM bebes WHERE registo='$id' ORDER BY `registo` DESC";
			// Executa a consulta
			$query = mysql_query($sql)or die(mysql_error());
			
 // Começa a exibição dos resultados
			while ($resultado = mysql_fetch_assoc($query)) {
			  $id = $resultado['Registo'];
			  $nome = $resultado['nome'];
			  $foto = $resultado['foto'];
			  
			  $eliminar = mysql_query("DELETE FROM bebes WHERE registo= '$id'");
			  
			  $eliminar_tb = mysql_query("DROP TABLE'.$nome'");
	
	$diretorio = "imagens/originais/bebes/'.$nome.'/";
	
	rmdir($diretorio);
	
	unlink("/imagens/miniatura/bebes/".$foto);		
	}

 if ($eliminar =='') {
 	echo"<script>alert('Album eliminado com sucesso!');history.back();</script>";
 }else {
 	echo"<script>alert('Erro ao eliminar, por favor tente mais tarde.');history.back();</script>";
 }

 

Link to post
Share on other sites
  • 0

fica aqui o código a funcionar.

<?php
 			//Conexão com o Banco de Dado
 			include 'connect.php';
 			if (!$conexao) {
					die('Não foi possí­vel conectar: ' . mysql_error()); //Exibe o erro por não conectar
					}
					//Conexão bem sucedida seleciona o BD
				$db_selected 		= mysql_select_db('bd_reborn', $conexao);
 
 $id = $_GET['id'];

 // Monta consulta MySQL, para buscar nome da foto
			$sql = "SELECT * FROM bebes WHERE registo='$id' ORDER BY `registo` DESC";
			// Executa a consulta
			$query = mysql_query($sql)or die(mysql_error());
			
 // Começa a exibição dos resultados
			while ($resultado = mysql_fetch_assoc($query)) {
			  $id = $resultado['Registo'];
			  $nome = $resultado['nome'];
			  $foto = $resultado['foto'];
			  
			  $eliminar = mysql_query("DELETE FROM bebes WHERE registo= '$id'");
			  
			  $eliminar_tb = mysql_query("DROP TABLE $nome");
	
	$diretorio = "imagens/originais/bebes/$nome/";
	
	rmdir($diretorio);
	
	unlink("imagens/miniatura/bebes/$foto");		
	
	}

 if ($eliminar =='') {
 	echo"<script>alert('Erro ao eliminar, por favor tente mais tarde.');history.back();</script>";
 }else {
 	echo"<script>alert('Album eliminado com sucesso!');history.back();</script>";
 }

 

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Cloud Computing


  • Forum Statistics

    • Total Topics
      148898
    • Total Posts
      644971
×
×
  • Create New...