Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 383
Sexo: Masculino
Localização: criciuma

readdir PHP ler por ordem

25-08-2009 10:49

ola amigos tenho uma duvida. o comando do readdir do PHP le arquivos diretorio certo. mas no meu caso os arquivos sao enviados atraves de um painel de aministração. gostario que o sistema le-se por ordem de envio. o meu lerdir.php ta assim.

<?php # author : Rafael Clares # Diretorio de fotos $dir = "fotos"; # Extensoes permitidas $exts = array('jpg','png','jpeg','gif','bmp'); if (is_dir($dir)) { if ($d = opendir($dir)) { while (($file = readdir($d))!== false) { if (filetype($dir.'/'.$file) == 'file') { # recupera a extensao do arquivo $extensao = explode(".", $file); for($i=0; $i<=count($exts)-1; $i++) { if($extensao[1] == $exts[$i]) { # Criando o link da imagem pra o lightbox e exibindo a thumb echo "<a href=\"$dir/{$file}\" rel=\"lightbox[roadtrip]\">"; echo "<img src=\"thumb.php?img=$dir/{$file}\" class=\"thumb\"></a>"; } } } } closedir($d); } } ?>

desde ja agradeço.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

readdir PHP ler por ordem

25-08-2009 11:54

Complicado, porque acho que não tem como organizar dessa forma, sem ter um identificador. Acho que nem organizando pela última vez que foi alterador dá certo. Somente se inserir no BD o nome do arquivo com o id, e fazendo a organização por ele.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 383
Sexo: Masculino
Localização: criciuma

readdir PHP ler por ordem

25-08-2009 13:15

veja o comentario do autor do script.
Amigo, o sistema apenas lê o diretório…. é como se você abrisse a pasta foto e lá estão exibidas por nome, data, etc …
Porém nosso programa apenas pega os arquivos que lá estão na ordem padrão e as exibe, diferente de um banco de dados…
Mas você pode entrar no php.net e procurar pela função readdir e ver seus parametros, talvez tenha como faze-lo.
até mais.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

readdir PHP ler por ordem

25-08-2009 13:28

Eu não conheço sem ser pelo Banco de dados, mas, faz uma busca lá no site do php.net, pode ser que tenha.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 383
Sexo: Masculino
Localização: criciuma

readdir PHP ler por ordem

25-08-2009 16:11

http://www.php.net/manual/pt_BR/function.readdir.php

la nao diz muita coisa a respeito da ordem

:erm
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

readdir PHP ler por ordem

25-08-2009 16:43

Também não conheço nada sobre listar arquivos por odem sem ser pelo uso de Banco de dados, se achar algo posto aqui.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 383
Sexo: Masculino
Localização: criciuma

readdir PHP ler por ordem

25-08-2009 20:06

veja se estou certo. no manual do php.net achei isto referente ai readdir

sorted by date modified? $files = preg_find('/./', $dir, PREG_FIND_RECURSIVE|PREG_FIND_RETURNASSOC |PREG_FIND_SORTMODIFIED); $files=array_keys($files);

no inicio ali eh sorted by date modified? que quer dizer em pt ordenados por data de modificação?.
pela lógica seria que o arquivo enviado hoje seria o ultimo aser modificado. entao entraria pela ordem, primeiro que o de ontem. ja que os ultimos enviados sao os primeiros nos resultados. to certo ou errado?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

readdir PHP ler por ordem

25-08-2009 20:09

Acho que não é isso, porque eu já movi arquivos aqui entre pastas, e a data de modificação não foi alterada.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 383
Sexo: Masculino
Localização: criciuma

readdir PHP ler por ordem

25-08-2009 21:04

na verdade nao eh mover neh. eh adicionar. sera que nao da?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

readdir PHP ler por ordem

25-08-2009 21:31

Acho que daria no mesmo, porque pelo que sei não há como identificar que o arquivo chegou na pasta naquele momento, a não ser que se tenha a informação armazenada em um banco de dados.
0
A melhor hospedagem para o seu site HostGator!
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

readdir PHP ler por ordem

26-08-2009 07:11

Tava pensando aqui, se você pode renomear esse arquivo, assim que ele for mandado para pasta, talvez dê para ordenar por um valor referente a data.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 383
Sexo: Masculino
Localização: criciuma

readdir PHP ler por ordem

26-08-2009 10:33

hummmm. pode ser. vou testar aki e posto o resultado
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

readdir PHP ler por ordem

26-08-2009 10:36

Blz :wink
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 383
Sexo: Masculino
Localização: criciuma

readdir PHP ler por ordem

26-08-2009 11:04

deu certo nao . acho que tem que inserir no bd mesmo. nao tem jeito. mas ai teria que enviar tudo novamente? e sera que da pra adapta neste code?

<?php # Setando as configurações permitidas $larguraMax = 2000; // largura em pixels $alturaMax = 2000; // altura em pixels $tamanhoMax = 1500000; // tamanho em bytes $formatos = "pjpeg|jpeg|png|gif|bmp|x-png|jpg"; // extensoes permitidas # Criando as mensagens de erro $erro[] = "Tamanho do arquivo maior que o permitido [".($tamanhoMax/1500)." kb]."; $erro[] = "A Largura da imagem maior que o permitido."; $erro[] = "A Altura da imagem maior que o permitido."; $erro[] = "O Arquivo já existe no diretório."; $erro[] = "Formato do arquivo não permitido ou inválido."; if(isset($_FILES["fotos"])) { foreach ($_FILES["fotos"]["name"] as $key => $name) { $arquivo = $_FILES["fotos"]; // $dimensoes = getimagesize($arquivo["tmp_name"][$key]); $nomefoto = strtolower($_FILES["fotos"]["name"][$key]); #Verificando se a imagem foi enviada if($arquivo["name"][$key] != "") { # Retirando espacos no nome do arquivo $espacos = explode(" ",$nomefoto); if(count($espacos) > 1) { $nomefoto = strtolower(ereg_replace(' ', '_', $nomefoto)); } # Se o Tamanho do arquivo é permitido if($arquivo["size"][$key] > $tamanhoMax) { # Adiciona o erro no array erros[] $erros[] = "[$nomefoto] $erro[0]"; } # Se a Largura do arquivo é permitida if($dimensoes[0] > $larguraMax) { $erros[] = "[$nomefoto] $erro[1]"; } # Se a Altura do arquivo é permitida if($dimensoes[1] > $alturaMax) { $erros[] = "[$nomefoto] $erro[2]"; } # Verifica se o arquivo ja existe no diretorio if(file_exists("fotos/$nomefoto")) { $erros[] = "[$nomefoto] $erro[3]"; } # Verifica se extensao é pertida if(!eregi("^image\/($formatos)$", $arquivo["type"][$key])) { $erros[] = "[$nomefoto] $erro[4]".$arquivo["type"][$key]; } # O array erros nao tiver nenhum indice o upload é permitido/realizado if(!isset($erros)) { $imagem_dir = "fotos/".$nomefoto; move_uploaded_file($_FILES["fotos"]["tmp_name"][$key], $imagem_dir); $sucesso[] = "[$nomefoto] upload com sucesso."; } } } # Verifica se existem erros no array if(isset($erros)) { echo "<ul class='erro'>"; foreach($erros as $erro) { echo "<p><span>$erro</span></p>"; } echo "</ul>"; } # Verifica quais imagens tiveram sucesso no upload if(isset($sucesso)) { echo "<ul class='sucesso'>"; foreach($sucesso as $up) { echo "<p><span>$up</span></p>"; } echo "</ul>"; } } ?>

0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

readdir PHP ler por ordem

26-08-2009 11:11

Nem sei se é possível, mas a minha idéia era adicionar o timestamp a cada arquivo enviado, assim o nome do arquivo ficaria: nnnnnnnnnn_arquivo.jpg

Acho que dessa forma daria para organizar por ordem com base no nome. De qualquer forma iria ter que enviar tudo novamente.

Ai acho que o melhor seria adaptar ao banco de dados, você não precisa enviar tudo novamente, porque os arquivos já enviados você coloca manualmente.

Dessa forma a mostragem pode ser por id, ai a cada arquivo enviado o id aumenta, depois você ordena o resultado por DESC.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 383
Sexo: Masculino
Localização: criciuma

readdir PHP ler por ordem

26-08-2009 11:15

enviar tudo novamente nao eh problema. as fotos sao pequenas. entao é rapido.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

readdir PHP ler por ordem

26-08-2009 11:44

Então, vai pelo MySQL, vai ser mais prático para organizar.
0
A melhor hospedagem para o seu site HostGator!

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado