Ir para conteúdo
Fórum Script Brasil
  • 0

open dir e exclusão


Carlos Rocha

Pergunta

Pessoal, estou um tanto pérdido e preciso de uma força aqui

Preciso arranjar uma forma de varrer uma pasta e ver quais imagens (só tem imagens la) que tem la e depois ncomparar com uma lista que vem do MySql.

Depois, as nimagens que estiverem a mais na pasta que não tem na tabela do MySql, excluir essa imagem da pasta.

Como fazer isso?

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Ok

agora, fiz assim:

<?php
$dir = "imagens/upload/venda/miniaturas/";

// Abre um diretorio conhecido, e faz a leitura de seu conteudo
if (is_dir($dir)) {
    if ($dh = opendir($dir)) {
        while (($file = readdir($dh)) !== false) {
           $NomesFotos[] = $file;
        }
        closedir($dh);
    }
}
$NomeTodasFotos = implode(';',$NomesFotos);
print $NomeTodasFotos;
?>
[/oode]
isso esta me retornando assim: (só tem duas fotos no diretorio)
[code]
.;..;2a3568999b212ce219fdae211f5a3f09.JPG;ff61f5f32cd8cf6ae950d1a0525c6609.JPG
Minhas duvidas Esse inicio|;
.;..;
Pode ser tirado com substring ou pode acontecer de esse inicio, dependendo o diretorio ou do numero de imagens pode mudar? Olhe a ideia do codigo:
<?php 
header('Content-Type: text/html; charset=utf-8');
include ("global/funcoes_php/var.php");
include("global/funcoes_php/conexao.php"); 
$MySQL = new TMySQL();
$MySQL->connect($host, $db, $user, $pass);
?>

<?php
function varre ($dir) {
// Abre um diretorio conhecido, e faz a leitura de seu conteudo
if (is_dir($dir)) {
    if ($dh = opendir($dir)) {
        while (($file = readdir($dh)) !== false) {
           $NomesFotos[] = $file;
        }
        closedir($dh);
    }
}
$NomeTodasFotos = implode(';',$NomesFotos);
$NomeTodasFotos = substr($NomeTodasFotos, 5);
return $NomeTodasFotos;
} 
?>
<!--//////////////////////////////-->
<?
   $sql=mysql_query("
        select 
            ImoveisCadastroVenda.Foto, 
            ImoveisCadastroVenda.Foto2, 
            ImoveisCadastroVenda.Foto3, 
            ImoveisCadastroVenda.Foto4, 
            ImoveisCadastroVenda.Foto5, 
            ImoveisCadastroVenda.Foto6, 
            ImoveisCadastroVenda.Foto7, 
            ImoveisCadastroVenda.Foto8,
            ImoveisCadastroVenda.Foto9, 
            ImoveisCadastroVenda.Foto10, 
        from 
           ImoveisCadastroVenda 
                ");
        $dir = "imagens/upload/venda/miniaturas/";
        while (list($Foto1,$Foto2,$Foto3,$Foto4,$Foto5,$Foto6,$Foto7,$Foto8,$Foto9,$Foto10) = mysql_fetch_row($sql)){
            
//aqui vai a comparaçao
        }
?>

Editado por Carlos Rocha
Link para o comentário
Compartilhar em outros sites

  • 0

Entendi.

Porem, pode ser que va imagens gif, png e não há como controlar isso.

Então agora já consegui criar uma string com os nomes vindos do banco e do diretorio separados por ; em duas variaveis.

Agora falta ver qual imagem nesta em uma e não esta na outra e criar a funçao para excluir essa imagem da pasta.

Segue o que eu já consegui

<?php 
header('Content-Type: text/html; charset=utf-8');
include ("global/funcoes_php/var.php");
include("global/funcoes_php/conexao.php"); 
$MySQL = new TMySQL();
$MySQL->connect($host, $db, $user, $pass);
?>

<?php
function varre ($dir) {
// Abre um diretorio conhecido, e faz a leitura de seu conteudo
if (is_dir($dir)) {
    if ($dh = opendir($dir)) {
        while (($file = readdir($dh)) !== false) {
           $NomesFotos[] = $file;
        }
        closedir($dh);
    }
}
$NomeTodasFotos = implode(';',$NomesFotos);
$NomeTodasFotos = substr($NomeTodasFotos, 5);
return $NomeTodasFotos;
} 

   $sql=mysql_query("
        select 
            ImoveisCadastroVenda.Foto, 
            ImoveisCadastroVenda.Foto2, 
            ImoveisCadastroVenda.Foto3, 
            ImoveisCadastroVenda.Foto4, 
            ImoveisCadastroVenda.Foto5, 
            ImoveisCadastroVenda.Foto6, 
            ImoveisCadastroVenda.Foto7, 
            ImoveisCadastroVenda.Foto8,
            ImoveisCadastroVenda.Foto9, 
            ImoveisCadastroVenda.Foto10 
        from 
           ImoveisCadastroVenda 
                ") or die("iiiiiiiii");
        
        while (list($Foto1,$Foto2,$Foto3,$Foto4,$Foto5,$Foto6,$Foto7,$Foto8,$Foto9,$Foto10) = mysql_fetch_row($sql)){
            $NomesFotos2[] = $Foto1.";".$Foto2.";".$Foto3.";".$Foto4.";".$Foto5.";".$Foto6.";".$Foto7.";".$Foto8.";".$Foto9.";".$Foto10;
//aqui vai a comparaçao
        }
        
        $NomeTodasFotos2 = implode(';',$NomesFotos2);
        $NomeTodasFotos2 = substr($NomeTodasFotos2, 5);
        print $NomeTodasFotos2."<P>";
        $dir = "imagens/upload/venda/miniaturas/";
        print varre($dir)."<P>";        

?>

Link para o comentário
Compartilhar em outros sites

  • 0

para verificar o tipo de um arquivo você pode usar o explode depois

a função reverse e verificar o primeiro elemento do array que será o tipo

exe

$Nome="blabla.png";

$s=explode(".",$Nome);

$s=array_reverse($s,false);

$s[0] será igual ao tipo do arquivo

e para excluir basta utilizar

unlink($arquivo);

é interessante usar o file_exists tambem para verificar se existe o arquivo quando for excluir

Editado por *FIT*
Retirar quote desnecessario *FIT*
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...