Jump to content


Photo

Listar E Monstrar Imagens De Um Diretório.


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

#1 tiago_tico

tiago_tico

    24 Horas

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

Posted 30/07/2009, 18:04

Olá pessoal, sou totalmente leigo em php... Estou criando um site para um cliente e tem cerca de 1000 fotos para colocar no site. Como não tenho tempo de aprender a fazer uma galeria de imagens com categoria e etc.. Resolvi listar as imagens com php.. Ai surgiu minhas dúvidas...

Peguei esse código para listar as imagens aqui no forum:

- gostaria de tirar a paginação,
- não aumentar a foto ao clicar
- organizar todas as imagens em um tabela com colunas e etc..
- E embaixo da imagem gostaria de criar uma <td> com o nome da imagem sem a extensão.. como forma de descrição..

to precisando realmente de ajuda não consigo adptar o código sempre q mudo alguma coisa da erro.


<?php

	$dir = "fotos"; 
	$aberto = opendir($dir); 
	while($arq = readdir($aberto)) {
		if($arq <> "." && $arq <> "..") { 
	  $ext = explode(".",$arq); 
	  if( ($ext[1] == "gif") || ($ext[1] == "jpg") ) { 
		  echo "<img src=$dir/$arq> ";
	  }
		}
	}
?>

flw, pessoal. :unsure:

#2 Fábio Web Arts

Fábio Web Arts

    Web IN Arts

  • Usuários
  • 299 posts
  • Sexo:Masculino
  • Localidade:No Saco De Magé
  • Interesses:Tudo que for da área de Informática

Posted 30/07/2009, 18:09

[codebox]
<?php
$arquivo = "";
$cont = 1;
$handle=opendir('.');
while (($file = readdir($handle))!==false)
{
if (($file != ".") && ($file !="..") && ($file !="lista.php") && ($file !="lista2.php") && ($file !="temp") && ($file !="contador_nalinnet.txt"))
{
$foto[$cont]="$file";
$cont =$cont+1;
}
}
for ($i = 1; $i <$cont ;$i++)
{
$fotos[$i]=$foto[$i];
}
$fotos_por_linha = 3;
?>

<html>
<head>
<title>Meu álbum de fotos</title>
</head>
<body>
<table border="1" cellspacing="5" bordercolor='#0000ff'>
<tr bgcolor="#0099FF">
<td colspan="3"><div align="center"><font size="3" face="Verdana, Arial, Helvetica, sans-serif"><strong>nome do albun!</strong></font></div>
<div align="center"></div></td>
</tr>
<tr bgcolor="#0099FF">
<td colspan="3">
<div align="center"></div></td>
</tr>

<?php

// calcula o número de linhas da tabela
$num_fotos = sizeof($fotos);
$num_linhas = intval ($num_fotos/$fotos_por_linha);
if($num_fotos % $fotos_por_linha!=0)
$num_linhas++;

// imprime as linhas e colunas
$indice = 1;
for($i=0; $i<$num_linhas; $i++)
{
echo "<tr align='center'>";
for($j=0; $j<$fotos_por_linha; $j++)
{
if($indice<$num_fotos)
{
$original = $fotos[$indice];
// monta o nome do arquivo miniatura
$mini = explode('.', $original);
$mini = './temp/'.$mini[0]."_mini.jpg";

echo "<td><a href=$original target='_blank'><img src=$mini border=0></a><br>";
echo '<div align="center"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Para ampliar, clique na foto</strong></font></div></td>';
$indice++;
}
else
echo "<td></td>";
}
echo "</tr>";
}
?>
</table>
</body>
</html>
[/codebox]

#3 tiago_tico

tiago_tico

    24 Horas

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

Posted 30/07/2009, 18:20

Fábio Web Arts, testei aqui e não funcionou... :(

#4 Fábio Web Arts

Fábio Web Arts

    Web IN Arts

  • Usuários
  • 299 posts
  • Sexo:Masculino
  • Localidade:No Saco De Magé
  • Interesses:Tudo que for da área de Informática

Posted 30/07/2009, 21:28

faz o seguinte

cria uma pasta img/

dentro dela tu coloca esse arquivo e as fotos,

depois dentro da pasta img tu cria uma pasta temp

e pronto!

#5 Dudu

Dudu

    Viva la vida

  • Usuários
  • 1437 posts
  • Sexo:Masculino
  • Localidade:Uberlândia - MG
  • Interesses:PHP

Posted 30/07/2009, 21:32

Bom, acabei de fazer este, que serve em qualquer pasta.
Basta alterar a variável dir. Não se esqueça de colocar a / (barra) no final.
Está de acordo com o que pediu, mas não está muito bom.
Mas aí você vai adaptando...

<?php$dir = './pessoal/v2/avatars/';$qtd_fotos_por_linha = 6;?><table width="100%">  <tr><?php$i = 1;foreach(glob($dir."{*.jpg,*.JPG,*.gif,*.png,*.JPG,*.GIF,*.PNG}", GLOB_BRACE) as $fotos) {	$info = pathinfo($fotos);?>    <td align="center"><img src="<?php echo $fotos; ?>" width="100" height="100" />	   <table width="100%" border="0" align="center">         <tr>           <td align="center"><?php echo basename($fotos, '.'.$info['extension']); ?></td>         </tr>       </table>	</td>	<?php	if(($i % $qtd_fotos_por_linha) == 0) {	?>	</tr>	<tr><?php	}	$i++;}?></table>

Lembrando, este lance de x quantidades por linha, pode ser feito também via CSS, que eu aconselho.

PS: Fábio, como conheço você, se for utilizar este código, vê se não esquece dos créditos OK?

Leitura:
http://www.php.net/glob
http://www.php.net/foreach

Até mais ^_^

Edição feita por: Dudu, 30/07/2009, 21:49.

Fórum WMO - Equipe de Desenvolvimento / Banco de Dados - Moderador


Twitter: HostCheap


#6 tiago_tico

tiago_tico

    24 Horas

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

Posted 30/07/2009, 22:18

Fábio Web Arts e Dudu, muito obrigado!

E principalmentes pelos artigos para leitura.. vou ler concerteza um dia eu aprendo php.

Não entendi o que este glob_brace. faz..

obrigado!!

#7 Dudu

Dudu

    Viva la vida

  • Usuários
  • 1437 posts
  • Sexo:Masculino
  • Localidade:Uberlândia - MG
  • Interesses:PHP

Posted 30/07/2009, 22:24

Quando queremos apresentar mais de uma opção de filtro, devemos utilizar o GLOB_BRACE como parâmetro.

O que seria estas opções:

{*.jpg,*.JPG,*.gif,*.png,*.JPG,*.GIF,*.PNG}


Ele procura por todos estas extensões.

PHP.NET:

GLOB_BRACE - Expands {a,b,c} to match 'a', 'b', or 'c'


Até mais ^_^

Edição feita por: Dudu, 30/07/2009, 22:36.

Fórum WMO - Equipe de Desenvolvimento / Banco de Dados - Moderador


Twitter: HostCheap





0 user(s) are reading this topic

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

IPB Skin By Virteq