Ir para conteúdo

Arquivado

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

mayco santos

unlink

Recommended Posts

ola estou adm um site de classificados aberto; oq tah acontecendo eh o seguinte qnd carrego uma foto ele carrega numa boa, mas qnd vou apagar uma ele apaga td de uma vez so, ai qnd vou carrega outra ele volta td q foi apagando incluindo a ultima q postei, alguem pode me ajudar, esta ai o cod. de dois arquivos relacionados.apagar.php------<?require 'config/config.php';require 'seguranca.php';session_start();$agencia = $_SESSION[login];// remove image from listingif($codigo) { // remove listing from database $link = mysql_connect($dbhost, $dbuser, $dbpass); $query = "DELETE FROM $dbvin WHERE codigo='$codigo'"; mysql_db_query($dbname, $query, $link); // get image names from dbimg $query = "SELECT thumb, image FROM $dbimg WHERE codigo='$codigo'"; $result = mysql_db_query($dbname, $query, $link); if(mysql_num_rows($result)) { // delete image/thumb files if any where found while($row = mysql_fetch_array($result)) { unlink("miniaturas/$row[thumb]"); unlink("fotos/$row[image]"); } // remove image listings from database $query = "DELETE FROM $dbimg WHERE codigo='$codigo'"; mysql_db_query($dbname, $query, $link); } mysql_close($link); echo "<script language='JavaScript'> window.location='controle.php'; </script>"; exit();}?>--------apagar_foto.php<?require 'config/config.php';require 'seguranca.php';session_start();$agencia = $_SESSION[login];// remove image from listingif($id) { // get filenames from database $link = mysql_connect($dbhost, $dbuser, $dbpass); $query = "SELECT image, thumb FROM $dbimg WHERE id='$id'"; $result = mysql_db_query($dbname, $query, $link); $data = mysql_fetch_array($result); // delete image and thumbnail unlink("miniaturas/$data[thumb]"); unlink("fotos/$data[image]"); // remove entry from database $query = "DELETE FROM $dbimg WHERE id='$id'"; if(mysql_db_query($dbname, $query, $link)) { // update numimages for that listing $query = "UPDATE $dbvin SET numimages=numimages-1 WHERE codigo='$codigo'"; mysql_db_query($dbname, $query, $link); // jump back to summary page mysql_close($link); echo "<script language='JavaScript'> window.location='pre_visualizar.php?codigo=$codigo'; </script>"; exit(); } @mysql_close($link);}?>----ps aparece esse erro:[02-Jul-2007 23:01:32] PHP Warning: unlink(miniaturas/) [<a href='function.unlink'>function.unlink</a>]: Is a directory in /home/carrorai/public_html/apagar_foto.php on line 19[02-Jul-2007 23:01:32] PHP Warning: unlink(fotos/) [<a href='function.unlink'>function.unlink</a>]: Is a directory in /home/carrorai/public_html/apagar_foto.php on line 20----------------------------ps jah coloquei o mod 777 nas pastas e arquivos!agradeço a todos desde jah

Compartilhar este post


Link para o post
Compartilhar em outros sites

maycon,

 

esses tpos de operações são delicadas,

 

aconselho a voce criar instruções básicas de checagem antes de cada procedimento

 

por exemplo

 

unlink("miniaturas/$data[thumb]");

 

a função unlink() exclui um arquivo de um local determinado

no seu caso, o erro provém de alguma falha no array $data[]

 

deve-se você colocar aspa simples

unlink("miniaturas/$data['thumb']");

tome cuidado com o caminho do arquivo

 

PATH = caminho real do arquivo

a nomenclatura do caminho do arquivo deve ser completa pra evitar incompatibilidade entre servidores.

alguns servidores não permitem o uso de caminho relativo, outros não permitem o uso de caminho absoluto, nesse caso fornecem uma constante chamada BASEDIR, que seria o equivalente a realpath('.')

 

 

antes de executar unlink(), você deve verificar se o arquivo existe e se é um arquivo.

exemplo:

 

$operacao_ok = false;if( file_exists( PATH ) ){  if( is_file( PATH ) ){	if( unlink( PATH ) ){	  // ok, arquivo foi excluído!	  // aqui você levanta uma flag pra excluir o registro do arquivo no banco de dados. ou execute a query sql aqui mesmo	  $operacao_ok = true;	}else{	  // erro! nao foi possivel excluir	}  }else{   // erro! não é um arquivo  }}else{// erro, arquivo nao encontrado}if( $operacao_ok ){  // aqui tb você tb deve fazer scripts pra depuração de erros e prevenir-se contra bugs  // pode acontecer de excluir o arquivo e ter uma falha no banco de dados. Causando conflito entre os dados do banco de dados e o sistema de arquivos  $query = "DELETE FROM $dbimg WHERE id='$id'";  if(mysql_db_query($dbname, $query, $link)) {	 // update numimages for that listing	 $query = "UPDATE $dbvin SET numimages=numimages-1 WHERE codigo='$codigo'"; 	 mysql_db_query($dbname, $query, $link);  }}

Compartilhar este post


Link para o post
Compartilhar em outros sites

amigo naum deu certo coloquei as aspas e aparece esta mensagem de erro:Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/carrorai/public_html/apagar_foto.php on line 19

Compartilhar este post


Link para o post
Compartilhar em outros sites

maycon,precisamos ver codigo que você escreveuessa ultima mensagem de erro " unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING "está sendo provocada por algum erro de sintaxe. Talvez você tenha digitado algo errado.Quanto ao seu script, ele está apagando todas as imagens da pasta porque há algum erro na variável $data[image]o php está interpretando dessa formaunlink("fotos/");como nao tem um arquivo especificado, a função unlink entende que deve apagar todos os arquivos da pasta fotos/o problema, como mencionei no post anterior, está no array $data[image]deve colocar aspa $data['image'] e verificar se esse é o nome correto do índicefaça um debug. antes de executar unlink, coloqueecho " TESTE :" . $data['image']; exit;e veja o que acontece.

Compartilhar este post


Link para o post
Compartilhar em outros sites

hmm, tente fazer assim:

 

- colocar a função unlink acima do delete.

- colocar de forma concatenada as variaveis: unlink("diretorio/".$seuDataSet['campo']);

- é fundamental q o chmode esteja em 777

 

tenta ai

 

flow

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.