Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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();
}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
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)
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);
?>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)
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);
?>>
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!
explique o que está acontecendo
se aparece mensagem de erro, poste-a