Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Fala galera,
Tenho um site aqui e algo estranho está acontecendo.
Cadastro o evento normalmente e quando vou deletá-lo, algo faz com delete coisa demais! rsrs
Por exemplo:
. Crio um evento com em: http://culturanf.com.br/musica/2014/04/06/domingo-tem-roda-de-choro/
. Aí quando vou deletá-lo através do código abaixo, ao invés deletar apenas o evento, ele acabando deletando o http://culturanf.com.br/musica/index.php?pag=1.
O que está errado nesse código?
Abraços
*** E apenas quando está no ar, pois testando aqui no localhost, funciona 100%
<?php
include_once ("../../include/config2.php");
include_once ("../verificacao.php");
$aux = explode("/", $_SERVER["REQUEST_URI"]);
include_once ("../num_link.php");
$link = $aux[$num_link];
$id = $_GET['id'];
$result= mysql_query("select * from musica where id = $id");
while($linha= mysql_fetch_array($result)){
$dia = $linha['dia_url'];
$mes = $linha['mes_url'];
$ano = $linha['ano_url'];
$url = $linha['url'];
$image = $linha['img'];
}
unlink("../../musica/$ano/$mes/$dia/$url/index.php");
unlink("../../img/upload/180x160/$image");
rmdir("../../musica/$ano/$mes/$dia/$url");
$sql = mysql_query("DELETE FROM musica WHERE id = '$id'");
?>>
if(isset($_GET['id']) && is_numeric($_GET['id'])){
$result= mysql_query("select * from musica where id = $id"); $dia = $linha['dia_url'];
$mes = $linha['mes_url'];
$ano = $linha['ano_url'];
$url = $linha['url'];
$image = $linha['img'];
}
unlink("../../musica/$ano/$mes/$dia/$url/index.php");
unlink("../../img/upload/180x160/$image");
rmdir("../../musica/$ano/$mes/$dia/$url");
$sql = mysql_query("DELETE FROM musica WHERE id = '$id'");
}
Creio que não seja isso... A página continua sendo excluída. Não entendo o motivo, pois está bem claro o caminho a qual deve ser deletado...
Está excluindo dados no banco ou excluindo arquivos?
Se for no banco, confira se não há chaves extrangeiras associando os dados. Talvez você esteja excluindo dados de uma tabela que possui outras tabelas vinculadas, que ao excluir dados de uma, propaga a exclusão para as tabelas dependentes.
>
Está excluindo dados no banco ou excluindo arquivos?
Se for no banco, confira se não há chaves extrangeiras associando os dados. Talvez você esteja excluindo dados de uma tabela que possui outras tabelas vinculadas, que ao excluir dados de uma, propaga a exclusão para as tabelas dependentes.
Está deletando arquivos demais, como disse acima. Banco de dados e o resto está tudo funcionando perfeitamente. Mas ele está deletando outro arquivo index.php que não está relacionado no código. Como isso é possível?
-------------------------------------------------------------------------------------------------------
Acho que me confudi por aqui rsrsrs
Pode se dizer que foi resolvido, pois apenas inclui as linhas abaixo dentro do while... Não tinha percebido isso até agora...
$id = $_GET['id'];
$result= mysql_query("select * from musica where id = $id");
while($linha= mysql_fetch_array($result)){
$dia = $linha['dia_url'];
$mes = $linha['mes_url'];
$ano = $linha['ano_url'];
$url = $linha['url'];
$image = $linha['img'];
unlink("../../musica/$ano/$mes/$dia/$url/index.php");
unlink("../../img/upload/180x160/$image");
rmdir("../../musica/$ano/$mes/$dia/$url");
$sql = mysql_query("DELETE FROM musica WHERE id = '$id'");
}
Abraços
Analisando o seu código.
unlink("../../musica/$ano/$mes/$dia/$url/index.php");
unlink("../../img/upload/180x160/$image");
rmdir("../../musica/$ano/$mes/$dia/$url");
$sql = mysql_query("DELETE FROM musica WHERE id = '$id'");
No primeiro unlink você exclui o arquivo index.php. Em todo o código, o único lugar que você pode excluir arquivos "index.php" é aqui, se estiver excluindo mais do que um, talvez ele esteja dentro do bloco while.
dê um :
print_r("../../musica/$ano/$mes/$dia/$url/index.php");
e comente as outras linhas;
Com isso você vai saber o que você está excluindo e ir "fuçar" nos arquivos se ele está excluindo o que você quer.
continuando...
O segundo unlink vai excluir da pasta de upload, acredito que esteja ok;
O rmdir, só vai excluir se o diretório estiver vazio, então desde que o primeiro unlink não seja executado onde não se deseja, isso não afeta o seu problema
A sql têm haver com o banco, logo não afeta seu problema, desde que você esteja conferindo se arquivo foi apagado da pasta onde ele estava e não na exibição do html.
$id = $_GET['id'];
$result= mysql_query("select * from musica where id = $id");
while($linha= mysql_fetch_array($result)){
$dia = $linha['dia_url'];
$mes = $linha['mes_url'];
$ano = $linha['ano_url'];
$url = $linha['url'];
$image = $linha['img'];
}
Nesta parte do código você recebe uma id e faz um loop com while.
Mas está estranho, pois se você usa um loop, é pq espera que hajam zero ou muitos resultados. Mas você usa os dados que processa fora do loop, fazendo com que eles executem somente uma vez.
A unica forma que vejo de você estar excluindo mais do que um arquivo com o unlink,, é executando ele dentro deste laço while, e que a consulta também retorne mais do que um resultado para cada id.
while($linha= mysql_fetch_array($result)){