Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
E aí pessoal beleza, estou com uma duvida que não consigo resolver montei um site bem simples de imobiliaria e falta eu terminar algumas coisinhas nele e uma dessas coizinhas seria a parte de exclusao do imovel, até ai td bem fiz o script todo de exclusao mas o problema é o seguinte eu gravo as imagens das casas em uma pasta no servidor e o caminho no banco de dados, o caminho do banco de dados ele exclui de boa, o que ta pegando é que não sei como fazer pra deletar as imagens da pasta.
tenho uma tabela no banco de dados que se chama imoveis la tenho o campo id_imoveis, endereco, etc e nessa tabela gravo uma imagem que sera a imagem principal essa eu consigo pegar o nome dela e deletar de boa, mas so que eu tenho outra tabela com o nome de fotos que o cliente coloca ate 6 fotos do imovel e é relacionado com a chave primaria da tabela imoveis. E com isso não estou sabendo pegar o nome de cada imagem desse determinado id pra eu conseguir deletar da pasta as imagens corretas.
é isso ai espero que me ajudem e entendam o que estou querendo.VLW.
esse aqui é meu codigo de exclusao.
$info = $_GET['numero'];
$pastaDel = '../fotos';
$sql_seleciona = mysql_query("SELECT imageThumb FROM imoveis WHERE id_imoveis='$info'");
$fotos = mysql_fetch_object($sql_seleciona);
$sql_delete = mysql_query("DELETE FROM imoveis WHERE id_imoveis='$info'");
$deleta_fotos = mysql_query("DELETE FROM fotos WHERE id_imovel='$info'");
unlink($pastaDel.'/'.$fotos);Noss, viajei no código.
pera ae... eu li uma coisa
e fiz outra
vlw go_back vo testar aqui e ja dou um retorno....
to testando ele num servidor local e ta dando erro
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in C:\wamp\www\imoveisluizinho\admin\posexclui_imoveis.php on line 19
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\wamp\www\imoveisluizinho\admin\posexclui_imoveis.php on line 23
Warning: unlink(/) [function.unlink]: Permission denied in C:\wamp\www\imoveisluizinho\admin\posexclui_imoveis.php on line 28
como faço pra tirar esse erro??
$info = $_GET['numero'];
$pastaDel = '../fotos';
$sql_seleciona = mysql_query("SELECT imageThumb FROM imoveis WHERE id_imoveis='$info'");
$fotos = mysql_fetch_assoc($sql_seleciona);
$sql_delete = mysql_query("DELETE FROM imoveis WHERE id_imoveis='$info'");
$deleta_fotos = mysql_query("DELETE FROM fotos WHERE id_imovel='$info'");
unlink($pastaDel.'/'.$fotos['imageThumb']);
Agora sim..
Desculpa aí, postei o código errado acima.
cara fiz coloquei teu codigo no meu script aqui mas ta dando o seguinte erro:
Warning: unlink(fotos/) [function.unlink]: No such file or directory in /home/netcomun/public_html/imoveisluizinho/admin/posexclui_imoveis.php on line 33
o que posso fazer?
Ele nao achou o diretório cara... tente entender o erro
Traduza, google.com.br/language_tools
Verifique se esta é a pasta mesmo.
é o caminho correto pois a pasta onde ta as fotos esta em um nivel acima.
mas não apaga ja tentei td ja refiz o codigo ja procurei em td quanto é lugar e num achei inda a solução.
to ficando loko ja com isso!!!!
Hum, não apaga a foto(registros no banco) ou não apaga a foto da pasta?
Dá um echo $pastaDel.'/'.$fotos['imageThumb'];
consegui fazer aqui agora ta apagando tanto o registro no banco quanto a imagem da pasta mas so que na tabela fotos eu tenho ate 6 fotos que pode ser cadastradas por imovel mas na hora de fazer a exclusao ele ta excluindo so uma foto.
Vou explicar melhor tenho duas tabelas uma eu gravo os dados do imovel e uma imagem que é a principal do anuncio do imovel e outra tabela eu gravo as outras imagens do imovel que o cara que ta cadastrando pode incluir ate 6 imagens fora a imagem principal consegui fazer a exclusao da imagem principal do banco e da pasta onde fica armazenada mas como faço pra excluir todas as outras imagens do mesmo imovel.
acho que fico mais claro né.
$info = isset($_GET['numero'])?$_GET['numero']:NULL;
$sql_seleciona = mysql_query("SELECT * FROM imoveis WHERE id_imoveis='$info'");
$thumb = mysql_fetch_assoc($sql_seleciona);
$sql_delFotos = mysql_query("SELECT * FROM fotos WHERE id_imovel='$info'");
$fotos = mysql_fetch_assoc($sql_delFotos);
$sql_delete = mysql_query("DELETE FROM imoveis WHERE id_imoveis='$info'");
$deleta_fotos = mysql_query("DELETE FROM fotos WHERE id_imovel='$info'");
$thumbDel = "../fotos/".$thumb['imovelThumb'];
$fotosDel = "../fotos/".$fotos['foto'];
unlink($thumbDel);
unlink($fotosDel);tente usar um foreach .. pra dar unlink em cada foto que tem referente ao imovel ^_^
não testei .. tenta assim
$info = isset($_GET['numero'])?$_GET['numero']:NULL;
$sql_seleciona = mysql_query("SELECT * FROM imoveis WHERE id_imoveis='$info'");
$thumb = mysql_fetch_assoc($sql_seleciona);
$sql_delFotos = mysql_query("SELECT * FROM fotos WHERE id_imovel='$info'");
$fotos = mysql_fetch_assoc($sql_delFotos);
foreach($fotos as $foto){
$sql_delete = mysql_query("DELETE FROM imoveis WHERE id_imoveis='$info'");
$deleta_fotos = mysql_query("DELETE FROM fotos WHERE id_imovel='$info'");
$thumbDel = "../fotos/".$thumb['imovelThumb'];
$fotosDel = "../fotos/".$foto['foto'];
}
unlink($thumbDel);
unlink($fotosDel);
seria algo + / - assim ..
>
você quer excluir todas fotos referente ao imovel que o cara botou ?
sim isso mesmo da tabela imovel eu consegui excluir da tabela foto onde esta armazenada mais de uma foto eu consigo excluir so uma foto
na tabela foto tenho os campos id_foto, foto e id_imovel(que relaciona com o imovel cadastrado) entao preciso que exclua as imagens da tabela fotos e da pasta fotos tbm.
testa o codigo que eu te passei
deu o seguinte erro
Warning: unlink(../fotos/2) [function.unlink]: No such file or directory in /home/netcomun/public_html/imoveisluizinho/admin/posexclui_imoveis.php on line 43
você ta comendo bola fera...
Diretório tá errado ou nao tem permissão pra acessar.
PHP nao erra.(só em alguns casos)
ali ele ta falando que não achou a foto , você ta botando o diretorio certo ?? .. verifique se a foto existe manualmente ^_^
entao com o codigo que postei la em cima ele fazia a função certinho exclui do banco e da pasta a imagem, mas so uma imagem da tabela imovel e uma imagem da tabela fotos as outras imagens relacionadas com a tabela fotos nao exclui e com o codigo que o Andrey Knupp me passou ta dando esse erro que mostrei ai.
perai , deixa eu entender
se você ta excluindo todas de 1 tabela você tem que fazer a mesma coisa com a outra , e o foreach
pra cada foto de (tabela tal) então executar o delete na tabela (tal)
tenho duas tabelas:
Tabela imoveis
id_imoveis, endereco, numero, cidade, bairro, estado, categoria, tipo, imovelThumb(imagem principal do imovel)
essa tabela armazena todas as informações do imovel.
e a tabela fotos:
id_foto, fotos e id_imovel(relaciona as imagens ao imovel)
nessa tabela o usuario cadastra ate 6 fotos do imovel.
no codigo acima que postei ele deleta do banco de dados todos os dados tanto da tabela imoveis quanto da tabela fotos, mas as imagens que ficam armazenadas na pasta fotos ele deleta somente a que estava gravada na tabela imoveis no campo imovelThumb e 1 imagem da tabela fotos, ai se por exemplo eu tiver mais de 1 foto gravada na tabela fotos as mesmas nao deleta da pasta.
entenderam.
Tenta usar o unlink dentro do laço de repetição.
usei dentro do laço como você falou mas nada feito ele da erro ainda
quero deletar todas os as imagens da pasta fotos cujo nomes das imagens esta armazenadas na tabela fotos com o id do imovel que esta sendo deletado.
$info = isset($_GET['numero'])?$_GET['numero']:NULL;
$sql_seleciona = mysql_query("SELECT * FROM imoveis WHERE id_imoveis='$info'");
$thumb = mysql_fetch_assoc($sql_seleciona);
$sql_delFotos = mysql_query("SELECT * FROM fotos WHERE id_imovel='$info'");
$fotos = mysql_fetch_assoc($sql_delFotos);
foreach($fotos as $foto){
$sql_delete = mysql_query("DELETE FROM imoveis WHERE id_imoveis='$info'");
$deleta_fotos = mysql_query("DELETE FROM fotos WHERE id_imovel='$info'");
$thumbDel = "../fotos/".$thumb['imovelThumb'];
$fotosDel = "../fotos/".$foto['foto'];
unlink($thumbDel);
unlink($fotosDel);
}
esse é o codigo que esta dando erro
>
usei dentro do laço como você falou mas nada feito ele da erro ainda
quero deletar todas os as imagens da pasta fotos cujo nomes das imagens esta armazenadas na tabela fotos com o id do imovel que esta sendo deletado.
$info = isset($_GET['numero'])?$_GET['numero']:NULL; $sql_seleciona = mysql_query("SELECT * FROM imoveis WHERE id_imoveis='$info'"); $thumb = mysql_fetch_assoc($sql_seleciona); $sql_delFotos = mysql_query("SELECT * FROM fotos WHERE id_imovel='$info'"); $fotos = mysql_fetch_assoc($sql_delFotos); foreach($fotos as $foto){ $sql_delete = mysql_query("DELETE FROM imoveis WHERE id_imoveis='$info'"); $deleta_fotos = mysql_query("DELETE FROM fotos WHERE id_imovel='$info'"); $thumbDel = "../fotos/".$thumb['imovelThumb']; $fotosDel = "../fotos/".$foto['foto']; unlink($thumbDel); unlink($fotosDel); }
esse é o codigo que esta dando erro
Vou tentar te passar a lógica, você tem um imóvel e várias fotos relacionadas a este imóvel certo, então você deleta o cadastro do imóvel, depois você cria um laço que vai deletar as fotos relacionadas a este imóvel, vou tentar colocar mais ou menos no seu cod abaixo.
$info = isset($_GET['numero'])?$_GET['numero']:NULL;
$sql_seleciona = mysql_query("SELECT * FROM imoveis WHERE id_imoveis='$info'");
$thumb = mysql_fetch_assoc($sql_seleciona);
$sql_delFotos = mysql_query("SELECT * FROM fotos WHERE id_imovel='$info'");
$fotos = mysql_fetch_assoc($sql_delFotos);
$sql_delete = mysql_query("DELETE FROM imoveis WHERE id_imoveis='$info'");
$deleta_fotos = mysql_query("DELETE FROM fotos WHERE id_imovel='$info'");
$thumbDel = "../fotos/".$thumb['imovelThumb'];
foreach($fotos as $foto){
$fotosDel = "../fotos/".$foto['foto'];
unlink($fotosDel);
}
não deixe de conferir se foi excluído ou deu algum erro para confirmar que deu tudo certo.
o $thumb é a imagem principal que fica na tabela imoveis tipo ele cadastra a imagem principal que fica armazenada na tabela imoveis e depois ele adiciona mais fotos nesse cadastro que pode ser ate 6 imagens diferentes.
Dei uma olhada melhor no que você postou e entendi, veja se o post que editei vai te servir, vou colocar abaixo:
$info = isset($_GET['numero'])?$_GET['numero']:NULL;
$sql_seleciona = mysql_query("SELECT * FROM imoveis WHERE id_imoveis='$info'");
$thumb = mysql_fetch_assoc($sql_seleciona);
$sql_delFotos = mysql_query("SELECT * FROM fotos WHERE id_imovel='$info'");
$fotos = mysql_fetch_assoc($sql_delFotos);
$sql_delete = mysql_query("DELETE FROM imoveis WHERE id_imoveis='$info'");
$deleta_fotos = mysql_query("DELETE FROM fotos WHERE id_imovel='$info'");
$thumbDel = "../fotos/".$thumb['imovelThumb'];
foreach($fotos as $foto){
$fotosDel = "../fotos/".$foto['foto'];
unlink($fotosDel);
}vou postar a estrutura do meu banco de dados pra ficar mais fazil o entendimento.
-- Banco de Dados imoveis_luizinho
--
-- --------------------------------------------------------
--
-- Estrutura da tabela fotos
--
CREATE TABLE IF NOT EXISTS `fotos` (
`id_foto` int(12) NOT NULL AUTO_INCREMENT,
`foto` varchar(255) DEFAULT NULL,
`legenda` varchar(255) DEFAULT NULL,
`id_imovel` int(12) DEFAULT NULL,
PRIMARY KEY (`id_foto`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=0 ;
-- --------------------------------------------------------
--
-- Estrutura da tabela imoveis
--
CREATE TABLE IF NOT EXISTS `imoveis` (
`id_imoveis` int(12) NOT NULL AUTO_INCREMENT,
`endereco` varchar(120) DEFAULT NULL,
`numero` varchar(12) DEFAULT NULL,
`cidade` varchar(25) DEFAULT NULL,
`estado` varchar(12) DEFAULT NULL,
`categoria` varchar(12) DEFAULT NULL,
`tipo` varchar(255) DEFAULT NULL,
`descricao` varchar(120) DEFAULT NULL,
`imovelThumb` varchar(255) DEFAULT NULL,
`bairro` varchar(255) DEFAULT NULL,
`complemento` varchar(255) DEFAULT NULL,
`valor` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id_imoveis`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=0 ;
-- --------------------------------------------------------
ai vcs podem ver que a tabela fotos recebe um campo com o id do imovel que vai relacionar as fotos do imove, mas quando tento excluir as imagens da pasta que estao armazenadas so exclui 1 imagem que esta relacionada ao imovel que esta sendo excluida e as outras imagens são do mesmo imovel ficam dentro da pasta e não sao excluidas.
procure por ON DELETE e ON UPDATE, deve ter algo aqui no fórum parece que já vi esses dias