Ir para conteúdo

POWERED BY:

Arquivado

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

ademirs

[Resolvido] Apagando Fotos do Banco e Pasta de Upload com PHP

Recommended Posts

Boa noite a todos.

Sou novo no mundo PHP e sinceramente estou tentando algums códigos mas este me deixou de cabelo em pé, por isso peço uma orientação aos amigos aqui do fórum. Meu código deve estar com um problema sério que eu não estou vendo e confesso estou bem perdido. Segue abaixo:

 

/*
OBS: Os eventos ficam armazenados na tabela eventos e as fotos na tabela eventofotos
Preciso apagar o id da tabela eventos e tudo que estiver vinculado a ela na tabela eventofotos pelo campo cod
os dados foram vistos num arquivo anterior a exclusão que só mostra os dados da tabela eventos
*/

include("config.php");
$id = $_GET['id'];

$selecionafoto = mysql_query("SELECT * FROM eventofotos WHERE cod='$_GET[id]'");
	while($listar = mysql_fetch_array($selecionafoto))
  {
	  $file = $listar["file"];
  }
if(mysql_num_rows($selecionafoto) == '0')		
  {
	 echo "Você precisa selecionar uma opção para realizar a Exclusão.";
	 exit();
  }
else
  {			
  $sql = mysql_fetch_array($selecionafoto);
  if(!empty($file))
	  {
		  $imagens = $file;
		  while(list(,$lista) = each($imagens))
		  {
		  unlink("uploads/$lista"); // pasta onde estão as imagens que precisam ser apagadas...tem miniaturas também "_thumbs"
		  }
	  }
		  $dell = "delete from eventofotos where cod= '$_GET[id]' ";
		  mysql_query($dell) or die(mysql_error());
		  
		  $re = "DELETE from eventos WHERE id = '$_GET[id]' LIMIT 1";
		  mysql_query($re) or die(mysql_error()); 
				if($re)
						{
				echo "OK, os dados foram<br />excluídos com sucesso do sistema.<br />";
				echo "Clique <a href='exibir.php'><font class=msgconfirma>AQUI</font></a> para continuar...";
						}
							else
						{
				echo "Erro, os dados nao foram<br />excluidos do sistema.<br />";
				echo "Clique <a href='javascript:history.back(2)'><font class=msgconfirma>AQUI</font></a> para tentar novamente.";
						}
				@mysql_close($conexao);
				exit();
			}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia Beraldo.

dá erro (warning) com a função each e diz que não é possivel ler os dados da array.

acredito que meu comando de repetição while não está de acordo com os dados da array sabe...sei lá...

Ele simplesmente não apaga as fotos da pasta....ele chega a eliminar do banco nas duas tabelas mas simplesmente nada acontece na pasta.

Ademir

Compartilhar este post


Link para o post
Compartilhar em outros sites

primeiramente, use mysql_num_rows antes de mysql_fetch_assoc. Não faz sentido recuperar os dados antes de saber se há dados para recuperar.

 

 

Por que há essa vírgula no list()?

 

list(,$lista) = each($imagens)

 

 

Por que está usando each()? $imagens é um array? Pelo que entendi, não, pois $imagem recebe $file, que recebe um campo de texto do BD.

 

 

Mesmo que $imagem seja um array, creio que o que você queria usar era explode(), não each)

Compartilhar este post


Link para o post
Compartilhar em outros sites

certo, valeu as dicas.

vou postar o código mais simplificado, quem sabe fica melhor:

 

<?php
include("config.php");
$id = $_GET['id']; /* este id veio de uma tela de visualização dos dados...e este arquivo deveria apagar tudo, inclusive as fotos da pasta uploads mas não o faz, esta é a minha dificuldade (manipulação de imagens)....*/

$selecionafoto = mysql_query("SELECT * FROM eventofotos WHERE cod='$_GET[id]'");
        while($listar = mysql_fetch_array($selecionafoto))
  {
          $file = $listar["file"];
  }
  $sql = mysql_fetch_array($selecionafoto);
  if(!empty($file))
          {
			  $imagens = $file;
			  while(list($lista) = each($imagens))
					{
					unlink("uploads/$lista"); // pasta onde estão as imagens que precisam ser apagadas...tem miniaturas também "_thumbs"
					}
          }
			  $dell = "delete from eventofotos where cod= '$_GET[id]' ";
			  mysql_query($dell) or die(mysql_error());
			  
			  $re = "DELETE from eventos WHERE id = '$_GET[id]' LIMIT 1";
			  mysql_query($re) or die(mysql_error()); 
				  
				  if($re)
					{
				  echo "OK, os dados foram<br />excluídos com sucesso do sistema.<br />";
				  echo "Clique <a href='exibir.php'><font class=msgconfirma>AQUI</font></a> para continuar...";
					}
					   else
				    {
				  echo "Erro, os dados nao foram<br />excluidos do sistema.<br />";
				  echo "Clique <a href='javascript:history.back(2)'><font class=msgconfirma>AQUI</font></a> para tentar novamente.";
					}
	@mysql_close($conexao);
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por que está usando list() e each()? Como eu disse no post anterior, parece-me que $file é uma string vinda do BD, não um array. Mas você não disse se estou certo ou errado...

 

PS 1: Quando houver erro, poste a mensagem de erro que aparece, exatamente.

PS 2: Quando postar códigos, insira-os entre as tags [ code] e [ /code] (sem espaço , claro)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera, fechou meu código.

Estou postando para vocês utilizarem ai e se for possível alguém me dar uma dica para melhorar agradeço.

Obrigado a todos que me ajudaram.

Abraço.

 

<?php
include("config.php");

$id = $_GET['id'];

$selecionafoto = mysql_query("SELECT * FROM eventosfotos WHERE cod='$_GET[id]'");

while($listar = mysql_fetch_assoc($selecionafoto))
	{
	$foto= $listar['foto'];
	
				{
				unlink("uploads/$foto");
				}
		
					  $r1 = "delete from eventosfotos where cod= '$_GET[id]' ";
					  mysql_query($r1) or die(mysql_error());
					  
					  $r2 = "DELETE from eventos WHERE id = '$_GET[id]' LIMIT 1";
					  mysql_query($r2) or die(mysql_error()); 
	}
	  if($r1==true || $r2==true)
	  
		  {
		  echo "OK";
		  }
		  
	  else
	  
		  {
		  echo "Erro, os dados nao foram<br />excluidos do sistema.<br />";
		  echo "Clique <a href='javascript:history.back(1)'>AQUI</a> para tentar novamente.";
		  }
@mysql_close($conexao);
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por que está usando list() e each()? Como eu disse no post anterior, parece-me que $file é uma string vinda do BD, não um array. Mas você não disse se estou certo ou errado...

 

PS 1: Quando houver erro, poste a mensagem de erro que aparece, exatamente.

PS 2: Quando postar códigos, insira-os entre as tags [ code] e [ /code] (sem espaço , claro)

 

ok Beraldo, nas próximas posto em

, nem me toquei.

abraço e sucesso!

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.