Jump to content


Photo

Listando Arquivos De Um Diretório...


  • Faça o login para participar
33 replies to this topic

#1 victorpfm

victorpfm

    Expert

  • Usuários
  • 566 posts
  • Sexo:Masculino

Posted 19/02/2005, 21:19

<?php

# Página
$pag = $_GET['pag'] ? $_GET['pag'] : 1;

# Registros por página
$rpp = 10;

# Inínio da página
$inicio = $pag * $rpp - $rpp;

# Diretório
$dir = "/home/usuario/www";

# Listando arquivos
$varrer = glob($dir."/*");

# Total de arquivos encontrados
$total = count($varrer);

# Número de páginas
$paginas = ceil ($total/$rpp);

for ($i = $inicio; $i < $inicio+$rpp && $i < $total; $i++)
{
    print $varrer[$i] . "<BR>";
}

if ($pag > 1)
{
    $anterior = $pag - 1;
    print "&lt; <a href=\"{$_SERVER['PHP_SELF']}?pag={$anterior}\">Anterior</a> | ";
}

print "<em>Página <b>{$pag}</b></em>";

if ($pag < $paginas)
{
    $proxima = $pag + 1;
    print " | <a href=\"{$_SERVER['PHP_SELF']}?pag={$pag}\">Próxima</a> &gt;";
}

?>

Atualizado: 21/08/2005

Edição feita por: victorpfm, 21/08/2005, 00:18.


#2 Rafael Rinaldi

Rafael Rinaldi

    Normal

  • Usuários
  • 106 posts
  • Sexo:Não informado

Posted 09/04/2005, 23:32

Oq viria a fazer esse script?!
www.rafaelrinaldi.com

#3 victorpfm

victorpfm

    Expert

  • Usuários
  • 566 posts
  • Sexo:Masculino

Posted 22/04/2005, 20:16

Você pode adaptar para fazer uma galeeria de imagens que lista um diretório, por exemplo.

#4 gregorytg

gregorytg

    Mestre

  • Usuários
  • 632 posts
  • Sexo:Não informado

Posted 22/04/2005, 20:30

Show mano, só faltou uma coisa para ficar perfeito, fazer em colunas ;)

Mais ficou show, uma mão na roda, também da para ser usado em sistemas de noticias ;)

Para ver as imagens é só mudar esta linha:
echo $arquivos[$i];

Para está:
echo "<img src=$dir/$arquivos[$i]>";

Edição feita por: gregorytg, 22/04/2005, 20:40.

"Porque o Senhor será a tua confiança, e guardará os teus pés de serem presos". \o/

#5 Spider-man

Spider-man

    Doutor

  • Usuários
  • 987 posts
  • Sexo:Não informado

Posted 22/04/2005, 21:25

galera, nao deu certo aki nao, ele nao exibe nada e demora pra caramba pra abrir a pagina

#6 gregorytg

gregorytg

    Mestre

  • Usuários
  • 632 posts
  • Sexo:Não informado

Posted 22/04/2005, 22:25

Aqui funcionou perfeitamente,
Está certo o diretorio?
"Porque o Senhor será a tua confiança, e guardará os teus pés de serem presos". \o/

#7 redstyle

redstyle

    Expert

  • Usuários
  • 540 posts
  • Sexo:Masculino

Posted 22/04/2005, 23:45

Modifiquei pra não aparecer diretório caso houver

<?php // LISTAR.PHP //

$pag = $_GET['pag'] ? $pag : 1;
$rpp = 10;   	 // Registros por página
$inicio = $pag * $rpp - $rpp;

$dir = './';   	 // Diretório a ser varrido
$abrir = opendir($dir);
$arquivos = array();

while (false !== ($file = readdir($abrir))) {
	if ($file <> "." && $file <> "..") {
  if (!is_dir($file)){
 	 $arquivos[] = $file;
  }
	}
}

$total = count($arquivos);
$paginas = ceil ($total/$rpp);
for ($i = $inicio; $i < $inicio+$rpp && $i < $total; $i++) {
	echo $arquivos[$i];
	echo '<br />';
}

if ($pag > 1) {
	$ant = $pag - 1;
	echo "< <a href=\"".$PHP_SELF."?pag=".$ant."\">Anterior</a> ";
}

echo "| <em>Página <b>".$pag."</b> </em> | ";

if ($pag < $paginas) {
	$pro = $pag + 1;
	echo "<a href=\"".$PHP_SELF."?pag=".$pro."\">Próxima</a> > ";
}


?>

Conheça meu blog para Aprender Laravel (Framework PHP)


#8 Paulo Freitas

Paulo Freitas

    ××××××× LRU #456504 ××××××× ××××××× LRM #364686 ×××××××

  • Ex-Admins
  • 5612 posts
  • Sexo:Masculino
  • Localidade:Campinas - SP

Posted 23/04/2005, 01:52

Opa... ;)

De acordo com o PHP.net, há uma maneira conveniente de substituir opendir() e similares... é usando a função glob()... ;)

A função glob(), grava os arquivos ou pastas encontrados em um array, para depois exibidos em um while, for, foreach ou de outra forma...

Não só é mais fácil usando glob(), como ele é bem mais rápido do que as outras alternativas para ler diretórios... ;) ...faça você mesmo o teste e veja como isto é verdade, principalmente em diretórios que contém milhares de arquivos...

Flw's, T+V! :DAté mais

#9 victorpfm

victorpfm

    Expert

  • Usuários
  • 566 posts
  • Sexo:Masculino

Posted 23/04/2005, 14:44

Não conhecia essa função, vou testar :)

#10 cataflan

cataflan

    Turista

  • Usuários
  • 37 posts
  • Sexo:Não informado

Posted 25/04/2005, 20:20

e como eu faco pra aparecer lado a lado e dps vai pra baixo?... tipo 6 na horizontal e 5 linhas.. como q eh?

#11 bimonti

bimonti

    Super Veterano

  • Usuários
  • 2654 posts
  • Sexo:Masculino

Posted 09/05/2005, 22:15

pra exibir colunas você pode colocar para exibir as imagens uma ao lado da outra, quando chegar no limite que você quer, no caso 5, você dá um <br />, para contar elas dinamicamente basta setar uma variável qualque ex.: $x e ao final do loop somar +1 nela ex.: ++$x, fazendo um teste na variável você faz essa quebra de linha por exemplo a cada 5 imagens. Pode usar tabelas também sem problemas. Para saber se um numero é multiplo de 5 divida a variavel $x por 5 e pegue o resto da divisão, se ele for 0 quebra de linha neles.... ex.: $x % 5

echo "<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\">";

for ($i = $inicio; $i < $inicio+$rpp && $i < $total; $i++) {

if($i%5==0) echo "</tr><tr><td><img src=$dir/$arquivos[$i]></td>";
}
else {echo "<td><img src=$dir/$arquivos[$i]></td>";}

echo ""</table>;



Creio que isso resolve seu problema, eu nem testei o código e muito menos olhei ele inteiro, qualquer coisa posta de novo...

Não se esqueça que agora sua página terá 30 imagens, então mude a variável que está definida como 10 registros pro página.

Espero ter ajudado...
Até +

Edição feita por: bimonti, 09/05/2005, 22:16.

WebFórum - Equipe de Desenvolvimento - Monitor
Posted Image
Yeah I do have some stories, and it's true I want all the glory ...

#12 Rafael Rinaldi

Rafael Rinaldi

    Normal

  • Usuários
  • 106 posts
  • Sexo:Não informado

Posted 14/05/2005, 23:27

Muito loko...Funfo certinho aqui !
www.rafaelrinaldi.com

#13 Felipedcb

Felipedcb

    Turista

  • Usuários
  • 30 posts
  • Sexo:Não informado

Posted 07/01/2006, 20:38

Resolvi contribuir com a minha versão do script.
Paginação para página de fotos:

<?

$pag = $_GET['pag'] ? $pag : 1;
$rpp = 10;
$inicio = $pag * $rpp - $rpp;

$dir = ("../");
$abrir = opendir($dir);
$arquivos = array();

while (false !== ($file = readdir($abrir))) {
if ($file <> "." && $file <> "..") {
 if (!is_dir($file)){
  $arquivos[] = $file;
 }
}
}

$total = count($arquivos);
$paginas = ceil ($total/$rpp);

echo ("<table cellpadding='5' cellspacing='5' border='0'>");

for ($i = $inicio; $i < $inicio+$rpp && $i < $total; $i++)
{
  if($i%5==0)
  {
    if (substr("$dir/$arquivos[$i]", -4) == ".jpg") 
    { 
      echo ("</tr><tr><td><img src='$dir/$arquivos[$i]' width='100' height='78'></td>");
    }
  }
  else
  {
    if (substr("$dir/$arquivos[$i]", -4) == ".jpg") 
    { 
    echo "<td><img src='$dir/$arquivos[$i]' width='100' height='78'></td>";
    }
  }
}

echo ("</table>");

if ($pag > 1) {
$ant = $pag - 1;
echo "< <a href=\"".$PHP_SELF."?pag=".$ant."\">Anterior</a> ";
}

echo "| <em>Página <b>".$pag."</b> </em> | ";

if ($pag < $paginas) {
$pro = $pag + 1;
echo "<a href=\"".$PHP_SELF."?pag=".$pro."\">Próxima</a> > ";
}

?>


#14 rafaelcastro

rafaelcastro

    12 Horas

  • Usuários
  • 294 posts
  • Sexo:Masculino
  • Localidade:Dourados/MS

Posted 28/01/2006, 11:16

Utilizei o script que foi enviado no início deste tópico...

Modifiquei ele de acordo com minhas necessidades e só tenho uma perguntinha:

Eis o código:

<?
$pag = $_GET['pag'] ? $_GET['pag'] : 1; //Página
$rpp = 10; //Registros por página
$inicio = $pag * $rpp - $rpp; //Início da página
$dir = "/home/sishoken/www/arq01_2005"; //Diretório
$varrer = glob($dir."/*"); //Listando arquivos
$total = count($varrer); //Total de arquivos encontrados
for ($i = $inicio; $i < $inicio+$rpp && $i < $total; $i++)
{ print $varrer[$i]."<BR>"; }
?>

Ele lista o seguinte:
/home/sishoken/www/arq01_2005/Componentes.zip
/home/sishoken/www/arq01_2005/Instalador do Sishoken.zip
/home/sishoken/www/arq01_2005/Manuais do Sishoken.zip
/home/sishoken/www/arq01_2005/Sishoken 01-2006 u.zip

Como faria para deixar apenas o nome dos arquivos...
Componentes.zip
Instalador do Sishoken.zip
Manuais do Sishoken.zip
Sishoken 01-2006 u.zip


Abraço

#15 victorpfm

victorpfm

    Expert

  • Usuários
  • 566 posts
  • Sexo:Masculino

Posted 28/01/2006, 13:03

print substr(strrchr($varrer[$i], "/"), 1) . "<br />";





0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq