Ir para conteúdo

POWERED BY:

Arquivado

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

Cerrito

ler diretório de imagens...

Recommended Posts

pessoal minha duvida é a seguinte...tenho um diretório com mais de 2000 imagens e quero cadastra-las no mysql, tem alguma forma de mandar o mysql ler esse diretório e gravar os nomes das imagens...e a cada nova imagem nesse diretório ele já a cadastrasse?ou algo parecido???desde já agradeço ajuda de todos...isso iria me poupar muito, mas muito tempo...abraçosMarcio

Compartilhar este post


Link para o post
Compartilhar em outros sites

o mysql acho q n faria isso, pq ele é apenas um banco de dados, nao tem suporte para leitura de diretorios. O que pode ser feito é usar PHP para varrer o diretorio e colocar o arquivo no DB.você iria querer q tipos de informacao? so o nome da imagem? qnto fields seriam?A unica coisa de ruim q teria, seria na hora de verificar se ha imagens nova, ele teria q fazer um loop completo e ver se a imagem existe no DB ou n, qndo n existir ele insere a imagem... n sei se isso poderia acabar afetando o DB... mas é possivel..leia a doc do readdir() do pHP

Compartilhar este post


Link para o post
Compartilhar em outros sites

O script abaixo (que está em www.php.net) lista os arquivos de um determinado diretório, se você der uma "estudada" nela pode adaptar para sua necessidade.

 

function direcho($path) { global $filetotal, $fullsize, $totaldirs; if ($dir = opendir($path)) {  while (false !== ($file = readdir($dir))) {   if (is_dir($path."/".$file)) {                    // if it's a dir, check it's contents too   if ($file != '.' && $file != '..') {            // but dont go recursive on '.' and '..'     echo '<li><b>' . $file . '</b></li><ul>';     direcho($path."/".$file);     echo '</ul>';     $totaldirs++;   }   }  else {                      //if it's not a dir, just output.   $tab = "      ";   $filesize = $tab . '(' . filesize ($path.'/'.$file) . ' kb)';   echo '<li>' . $file . $filesize . '</li>';   $fullsize = $fullsize + filesize ($path.'/'.$file);   $filetotal++;  } } closedir($dir);}}direcho('c:/seu_diretorio');$fullsize = round($fullsize / 1024 / 1024, 2);echo"<br><br><b>Total files</b> - $filetotal files<br><b>Total dirs</b> - $totaldirs directories<br><b>Total size</b> - $fullsize MB<br>";?>

Espero que lhe ajude.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz este script com ajuda de um tutorial do Júlio (coluna PHP Imasters), apenas adicionei linhas de conexão e inclusão na base de dados,

ainda irei fazer testes para verificação do nome já gravado na base para não gravar novamente.

 

Este script apenas grava o nome, também não tentei gravar a imagem propriamente dita.

 

Fiquem a vontade para alterar e postar aqui outras alterações.

 

Foi apenas objeto de estudo, pela sugestão em questão levantada.

 

<?$con = mysql_connect("localhost","","");$db = mysql_select_db("imasters",$con);//Exibe os diretórios que tem na pasta  if ($dir=opendir("d:/server_hps/imagens/produtos/categorias/")) { //Diretório a ser vasculhado  $i=1;?>  <br>  <table width="95%" border="0" cellspacing="1" cellpadding="0" align="center">  <tr bgcolor="cccccc">      <td width="17%">      <div align="center"><b><font face="Arial" size="2">Auto Numeração</font></b></div></td>     <td width="54%">      <div align="center"><b><font face="Arial" size="2">Descrição</font></b></div></td>     <td width="29%">      <div align="center"><b><font face="Arial" size="2">É diretório ?</font></b></div></td>  </tr>  <?  while(($arquivos=readdir($dir)) !== false){    if($arquivos=="." or $arquivos=="..") continue; {  ?>  <tr bgcolor="ebebeb">     <td width="17%"><div align="center"><font face="Arial" size="2"><? echo $i;?></font></div></td>    <td width="54%"><div align="center"><font face="Arial" size="2"><? echo $arquivos;?></font></div></td>    <td width="29%"><div align="center"><font face="Arial" size="2"><? if(is_dir($arquivos)) echo "SIM"; else echo     "NÃO";?></font></div></td>  </tr>     <?   $i++; //Incrementa a variável i   $sql = mysql_query("insert into fotos (name) values('$arquivos')");  }//fecha if     } //fecha while ?></table><? } /*fecha if*/ ?></body></html>

fui...

Compartilhar este post


Link para o post
Compartilhar em outros sites

para evitar inclusao igual, basta por o campo onde tera o nome da imagem com valor UNIQUE, e por na frente do mysql_query o @, ficando @mysql_query("insert into fotos (name) values('$arquivos')");

Compartilhar este post


Link para o post
Compartilhar em outros sites

é isso aí Keitaro, eu fiz o script rapidinho só para teste. Mas valeu a dica para a galera menos avisada.webvpprogramador web

Compartilhar este post


Link para o post
Compartilhar em outros sites

valeu pelas dicas e codigos galera...valeu mesmo!!!Marcio

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.