Depois de conseguir criar um formulario para introduzir novas categorias na base de dados e suas respetivas pastas dentro do servidor (o topico encontra-se aqui), venho agora aqui com duvidas na parte de apaga-las.
O formulario apenas pede para selecionar a categoria a apagar que irá processar este ficheiro php:
Código (PHP):
O código funciona todo, ou seja, apaga a categoria na base de dados e a pasta no servidor, o problema é quando meto uma imagem dentro de uma pasta e mando apaga-la (a pasta com a imagem la dentro). A categoria é apagada na base de dados e não me apaga no servidor se tiver uma imagem la dentro, o que é estranho porque o if só deveria funcionar se as duas ações fossem feitas com sucesso. Depois aparece-me a mensagem de erro que está no else. Alguma sugestão para conseguir apagar a pasta com conteudo la dentro (as pastas só irão possuir imagens do tipo jpg, png e jpeg e tambem gifs)?
O formulario apenas pede para selecionar a categoria a apagar que irá processar este ficheiro php:
Código (PHP):
<?php
$Categoria= $_POST['DelCategoria'];
include 'ligarbd.php';
header ('Content-type: text/html; charset=utf-8');
// sql para apagar no servidor
$sql1="SELECT caminho FROM categorias WHERE CodCategoria=$Categoria";
//sql para apagar na base de dados
$sql2="DELETE FROM categorias WHERE CodCategoria=$Categoria";
//sql para complementar mensagens de erro
$sql3="SELECT nomeCategoria FROM categorias WHERE CodCategoria=$Categoria";
//pesquisa na base de dados do caminho da pasta para apaga-la posteriormente no servidor
if($query1=mysql_query($sql1)){
$name1 = mysql_fetch_array($query1);
$caminho= $name1[0];
//pesquisa na base de dados para apagar categoria e (&&) comando para apagar categoria no servidor
if($query2= mysql_query($sql2) && rmdir("$caminho")) {
echo 'Categoria eliminada com sucesso';
mysql_close($conexao);
header ('Location:index.php');
exit;
}
//mensagem de erro de apagar a categoria na base de dados e no servidor
else{
if($query3=mysql_query($sql3)){
$name2 = mysql_fetch_array($query3);
$nomepasta= $name2[0];
echo'Erro: a ligação à base de dados, para eliminar a pasta '.$nomepasta.' , poderá estar com problemas ou o acesso ao servidor para efetuar a sua eliminação não foi possível.
<p>Contacte a equipa de suporte<br>ou<br>Clique <a href="index.php">aqui</a> para voltar ao início e tente novamente.</p>';
}
else
echo 'Erro: a ligação à base de dados, para eliminar a pasta, poderá estar com problemas ou o acesso ao servidor para efetuar a sua eliminação não foi possível.
<p>Contacte a equipa de suporte<br>ou<br>Clique <a href="index.php">aqui</a> para voltar ao início e tente novamente.</p>';
}
}
//mensagem de erro da pesquisa pelo caminho da categoria no servidor
else{
if($query4=mysql_query($sql3)){
$name3 = mysql_fetch_array($query3);
$nomepasta1= $name3[0];
echo'A ligação à base de dados, para obter o caminho da pasta '.$nomepasta1.' a eliminar no servidor, poderá estar com problemas.
<p>Contacte a equipa de suporte<br>ou<br>Clique <a href="index.php">aqui</a> para voltar ao início e tente novamente.</p>';
}
else
echo 'A ligação à base de dados, para obter o caminho da pasta a eliminar no servidor, poderá estar com problemas.
<p>Contacte a equipa de suporte<br>ou<br>Clique <a href="index.php">aqui</a> para voltar ao início e tente novamente.</p>';
}
?>
$Categoria= $_POST['DelCategoria'];
include 'ligarbd.php';
header ('Content-type: text/html; charset=utf-8');
// sql para apagar no servidor
$sql1="SELECT caminho FROM categorias WHERE CodCategoria=$Categoria";
//sql para apagar na base de dados
$sql2="DELETE FROM categorias WHERE CodCategoria=$Categoria";
//sql para complementar mensagens de erro
$sql3="SELECT nomeCategoria FROM categorias WHERE CodCategoria=$Categoria";
//pesquisa na base de dados do caminho da pasta para apaga-la posteriormente no servidor
if($query1=mysql_query($sql1)){
$name1 = mysql_fetch_array($query1);
$caminho= $name1[0];
//pesquisa na base de dados para apagar categoria e (&&) comando para apagar categoria no servidor
if($query2= mysql_query($sql2) && rmdir("$caminho")) {
echo 'Categoria eliminada com sucesso';
mysql_close($conexao);
header ('Location:index.php');
exit;
}
//mensagem de erro de apagar a categoria na base de dados e no servidor
else{
if($query3=mysql_query($sql3)){
$name2 = mysql_fetch_array($query3);
$nomepasta= $name2[0];
echo'Erro: a ligação à base de dados, para eliminar a pasta '.$nomepasta.' , poderá estar com problemas ou o acesso ao servidor para efetuar a sua eliminação não foi possível.
<p>Contacte a equipa de suporte<br>ou<br>Clique <a href="index.php">aqui</a> para voltar ao início e tente novamente.</p>';
}
else
echo 'Erro: a ligação à base de dados, para eliminar a pasta, poderá estar com problemas ou o acesso ao servidor para efetuar a sua eliminação não foi possível.
<p>Contacte a equipa de suporte<br>ou<br>Clique <a href="index.php">aqui</a> para voltar ao início e tente novamente.</p>';
}
}
//mensagem de erro da pesquisa pelo caminho da categoria no servidor
else{
if($query4=mysql_query($sql3)){
$name3 = mysql_fetch_array($query3);
$nomepasta1= $name3[0];
echo'A ligação à base de dados, para obter o caminho da pasta '.$nomepasta1.' a eliminar no servidor, poderá estar com problemas.
<p>Contacte a equipa de suporte<br>ou<br>Clique <a href="index.php">aqui</a> para voltar ao início e tente novamente.</p>';
}
else
echo 'A ligação à base de dados, para obter o caminho da pasta a eliminar no servidor, poderá estar com problemas.
<p>Contacte a equipa de suporte<br>ou<br>Clique <a href="index.php">aqui</a> para voltar ao início e tente novamente.</p>';
}
?>
O código funciona todo, ou seja, apaga a categoria na base de dados e a pasta no servidor, o problema é quando meto uma imagem dentro de uma pasta e mando apaga-la (a pasta com a imagem la dentro). A categoria é apagada na base de dados e não me apaga no servidor se tiver uma imagem la dentro, o que é estranho porque o if só deveria funcionar se as duas ações fossem feitas com sucesso. Depois aparece-me a mensagem de erro que está no else. Alguma sugestão para conseguir apagar a pasta com conteudo la dentro (as pastas só irão possuir imagens do tipo jpg, png e jpeg e tambem gifs)?