Jump to content
marcossantana10

Listagem de diretório

Recommended Posts

Queria saber se é possível alterar a ordem com que os subdiretórios de um diretório é listado. Exemplo:

 

Tenho um diretório raiz que possuem os seguintes diretórios: 2013, 2014, 2015, [...].

Tem como fazer com que eles sejam mostrados em uma ordem específica?

 

Código que tô usando:

$baseDir = 'diretorio/'.$dirDinamico;
$abreDir = (@$_GET['dir'] != '' ? $_GET['dir'] : $baseDir);

$strrdir = strrpos(substr($abreDir,0,-1),'/');
$backdir = substr($abreDir, 0,$strrdir+1);

$openDir = dir($abreDir);

while($arq = $openDir -> read()):
    if($arq != '.' && $arq != '..'):
        if(is_dir($abreDir.$arq)){

        //aqui é a parte que organizo (visualmente) a exibição dos diretórios.

 

Edited by Gabriel Heming
adicionar marcação de código

Share this post


Link to post
Share on other sites

Utilizando DIR não há como.

 

Você pode utilizar a função glob , que lhe retornará um array, conforme o padrão de busca, e realizar o sort (usort) nesse array.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Mkn
      Pessoal, eu estou com uma dúvida sobre como retirar o caminho do diretório do meu código fonte. Explicando melhor o meu problema: Eu estou fazendo uma página 99% concluída (em wordpress) onde tenho vídeo aulas que serão acessadas por assinantes regulares. Porém, ao acessar o código fonte o assinante tem acesso ao meu diretório, sendo assim podendo realizar o download do mesmo. Os vídeos estarão no Google Storage.
       
      O código gostaria que ficasse assim:
      data-sourcemp4="video/aulasobrepartitura.mp4"
       
      Ao invés de:
      data-sourcemp4="https://storage.googleapis.com/musiclive-com/assinantes/video/aulasobrepartitura.mp4"
       
      Fiz uma pesquisa na internet e vi que esse código no .htaccess protegeria esses objetos, porém não resolveu.
       
      RewriteCond %{HTTP_REFERER} !^https://www.meudominio.com.br$      [NC]
      RewriteCond %{HTTP_REFERER} !^$ 

      RewriteRule .*\.(jpg|jpeg|gif|png|bmp|mp4|mpeg|mpg|wma|mov|avi)$ - [F,NC]
       
      Obrigado desde já.
       
       
    • By EstilloWeb
      Está ocorrendo um erro em meu comando MySQL na ordenação dos resultados. O código é o seguinte:
      $sql_imos4 = "Select DISTINCT imovel FROM propostas ORDER BY id DESC"; $exe_imos4 = mysqli_query($conexao, $sql_imos4); O objetivo é listar uma única vez um imóvel com proposta, mesmo que haja dois ou mais registros, sempre ordenado mais recente. O que está ocorrendo quando o imóvel tem mais de uma proposta cadastrada, a ordenação está sendo feita pelo ID da proposta mais antiga.
      Exemplo:
      imóvel ref. 4528 tem duas propostas, sendo que a mais recente tem o ID 235 porém aparece na listagem abaixo do imóvel ref. 4325, que tem uma só proposta e ID 230.
      O resultado deveria estar invertido neste caso.
      Onde pode estar o erro? Agradeço a ajuda.
    • By recmarq
      Boa tarde,
       
      Eu tenho uma lista com vários itens, (P, M, G, 1, 2, 3, 4, 5, 6, 7, 8, 9).
      essa lista está desordenada e eu preciso ordenar por ordem alfabética e numérica, quando eu uso a ordenação de letras eu comparo com sinal de maior ">"
      exemplo = a > b
      Preciso ordena-los, alguém poderia me ajudar? 
       
    • By lucas_gabriel
      Olá, boa noite!
      Gostaria de saber como faço para bloquear o acesso direto a diretórios? Por exemplo tem vários arquivos dentro de um diretório, passo o link para o usuário acessar um arquivo especifico mas não quero que ele consiga entrar no diretório e liste todos os arquivos que tem lá. Como eu faria para realizar essa restrição?
    • By Alex Dias
      Olá amigo, não sou usuário avançado, conseguir um código-fonte que lista arquivos de uma pasta no servidor, esses fontes listavam apenas os arquivos, daí eu dei uma incrementada nele para além dos arquivos ele listar também o tamanho do arquivo e a data da última modificação, segue ANEXO como ele está exibindo os resultados com perfeição.

      A minha dificuldade é que ele lista os arquivos da pasta por ordem alfabética de A a Z e eu gostaria muito que essa lista de arquivos fosse exibida por ordem de data de modificação decrescente, da mais atual para a mais antiga, e não estou conseguindo realizar essa tarefa, gostaria muito da ajuda dos amigos para solucionar esse ocorrido, desde já agradeço a ajuda de todos.

      Segue o código-fonte

       
      <?php //$diretorio = "D:\SERVIDOR-APACHE\PATRIMONIO TECNOLOGIA\images"; $diretorio = "/home/patrimonio/www/sites/default/files/ftpdata/download/Acesso Remoto"; //USADO PARA LISTAR OS ARQUIVOS DA PASTA $url = "sites/default/files/ftpdata/download/Acesso Remoto/"; // USADO PARA FAZER O LINK DE DOWNLOAD // abre o diretório $ponteiro = opendir($diretorio); // monta os vetores com os itens encontrados na pasta while ($nome_itens = readdir($ponteiro)) { $itens[] = $nome_itens; } // ordena o vetor de itens sort($itens); // percorre o vetor para fazer a separacao entre arquivos e pastas foreach ($itens as $listar) { // retira "./" e "../" para que retorne apenas pastas e arquivos if ($listar!="." && $listar!=".."){ // checa se o tipo de arquivo encontrado é uma pasta if (is_dir($listar)) { // caso VERDADEIRO adiciona o item à variável de pastas $pastas[]=$listar; } else{ // caso FALSO adiciona o item à variável de arquivos $arquivos[]=$listar; } } } // lista as pastas se houverem if ($pastas != "" ) { foreach($pastas as $listar){ print "";} } // lista os arquivos se houverem if ($arquivos != "") { foreach($arquivos as $listar){ //CONDICAO PARA NOMEAR EM BYTES, KB, MB, GB, TB $tamanho = filesize("$url/$listar"); $kb = "1024"; $mb = "1048576"; $gb = "1073741824"; $tb = "1099511627776"; if($tamanho<$kb){ $tamanho_resposta = ($tamanho." bytes"); }else if($tamanho>=$kb&&$tamanho<$mb){ $kilo = number_format($tamanho/$kb,2); $tamanho_resposta = ($kilo." KB"); }else if($tamanho>=$mb&&$tamanho<$gb){ $mega = number_format($tamanho/$mb,2); $tamanho_resposta = ($mega." MB"); }else if($tamanho>=$gb&&$tamanho<$tb){ $giga = number_format($tamanho/$gb,2); $tamanho_resposta = ($giga." GB"); } // FIM CONDICAO PARA NOMEAR EM BYTES, KB, MB, GB, TB // DATA DA ULTIMA MODIFICACAO $modificado = date("d/m/Y H:i:s", filemtime("$url/$listar"))."<br>"; // FIM DATA DA ULTIMA MODIFICACAO //echo"$modificado"; // FAZ A LISTA DE XIBICAO DOS AQRUIVOS DO DIRETORIO // FAZ A LISTA DE XIBICAO DOS AQRUIVOS DO DIRETORIO echo" <tr> <td width='438' height='30' bgcolor='#ffffff'><p><font size='2'>&nbsp;&nbsp;<a href='$url/$listar' target='_blank'>$listar</a></font></p></td> <td width='192' bgcolor='#ffffff'><p><font size='2'>&nbsp;&nbsp;$tamanho_resposta</font></p></td> <td width='340' bgcolor='#ffffff'><p><font size='2'>&nbsp;&nbsp;$modificado</font></p></td> <td width='202' bgcolor='#ffffff'><p align='center'><a href='$url/$listar' target='_blank'><img src='images/nuvem.jpg'/></a></p></td> </tr> "; } } else { echo "<p><font color='#ff0000' size='3'>Não há nenhum arquivo.</font><p><br>"; } echo"</table>" ?>  

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.