Ir para conteúdo

POWERED BY:

Arquivado

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

HugoMinari

Notice: Undefined offset: 1 i

Recommended Posts

Bom dia a Todos

 

peguei este código na internet e estou adaptando para meu uso, só que tenho tido alguns problemas com este bendito...

quando tem só 1 arquivo listado ele não deleta, e as vezes ele não apaga os outros arquivo normalmente, é necessário clicar 2 vezes para ele deletar um arquivo.

tem alguns bugs na questão de remoção de arquivos, a listagem ta ok agora a manipulação preciso de uma luz.

 

o código é este:

 

<?php

$listando = $_GET['listar'];
if ($listando == '1') {

   if ($handle=opendir("imagem")) {                           //abre diretório para leitura
      $x=0;
      while (false!==($file=readdir($handle))) {            //lê arquivos do diretório
         if ($file!="." && $file!="..") {                             //evita leitura de . e ..
               $matrix[$x]=$file;                                    //armazena nomes dos arquivos na matriz
               $x++;
         } //if
      } //while
      closedir($handle);                                             //fecha o diretório
   } //if
   
   if(isset($matrix[$x]));
  for ($x = 0; $x < count($matrix); $x++){
      echo "<br />$matrix[$x] <a href='index2.php?listar=1&d=$x'> <img src='apagar.gif' border='0' /> </a>";
   } //while
     $delete_arq = (isset($_GET['d']));
	if ($delete_arq == $x) {unlink("imagem/".$matrix[$delete_arq]);}
}
?>

me retorna o erro:

 

Notice: Undefined offset: 1 in C:\wamp\www\extras\Uploader 0001\index2.php on line 36

Warning: unlink(imagem/) [function.unlink]: Permission denied in C:\wamp\www\extras\Uploader 0001\index2.php on line 36

 

Alguem dá um help ae.... agradecido..

 

Hugo Minari

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso daqui:

 

$delete_arq = (isset($_GET['d']));

Vai sempre retornar UM ou ZERO, que é o equivalente inteiro a TRUE ou FALSE.

 

Pelo fato de você dizer que o índice indefinido (o erro) é o UM, significa que essa expresão está retornando TRUE ou UM.

 

O correto seria:

 

$delete_arq = ( isset( $_GET['d'] ) ? $_GET['d'] : NULL );

if( ! is_null( $delete_arq ) ) {
   // Deleta
}

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.