Olá pessoal, o meu problema é o seguinte:
Estou exibindo as imagens de uma pasta especifica do servidor, e preciso que elas sejam ordenadas dentro de uma tabela.
Ela tem três colunas, por isso quando o resto da divisão por 3=0, eu mando imprimir a tag "</tr>", só que uma linha ela exibe 2 fotos e na outra 3.
Vejam se vocês podem me ajudar! Agradeço desde já.
Segue o trecho do código.
<table cellspacing="5" cellpadding="10" border="1" width="100%" align="center">
<?php
$dir = opendir("fotos");
$i = 1;
while (($file = readdir($dir)) !== false){
$arquivo = explode('.', $file);
if($arquivo[1]=='jpg' || $arquivo[1]=='JPG' || $arquivo[1]=='png' || $arquivo[1]=='PNG'){
if($i % 3 == 0){
echo "</tr>";
}
echo "<td align='center'>\n
\t<a href='fotos/$file'><img src='fotos/" . $file . "' width='150' alt='Unigarden'/></a>\n
</td>\n";
}
$i++;
}
closedir($dir);
?>
</table>
E ae Falito!
Tudo na paz...?
Olha só quando você for postar... utilize as tags 'code' e '/code' para melhorar a leitura do código!
Bem eu acredito que está faltando você abrir e fechar corretamente os tr's
Para facilitar essa organização você pode utilizar a função 'scandir($dir);'
Ela varre o diretório e retorna um array contendo os arquivos deste diretório.
Eu modifiquei um pouco o seu código para adequar na lógica que eu pensei aqui:
Vê se você entende direitinho.
Qualquer dúvida posta de novo.
<table cellspacing="5" cellpadding="10" border="1" width="100%" align="center">
<?php
$dir = opendir("fotos");
$diretorio = scandir("fotos");
//retira os pontos que a função scandir gera
//e coloca em um novo array
$imagens = array();
foreach($diretorio as $value)
{
//verifica se a posição atual é . ou ..
if( $value != "." && $value != ".." ){
//verifica se é uma imagem jpg ou png
$imagemAtual = explode('.', $value);
if($imagemAtual [1]=='jpg' || $imagemAtual [1]=='JPG' || $imagemAtual [1]=='png' || $imagemAtual [1]=='PNG'){
array_push($imagens, $value);
}
}
}
//recupera a quantidade de imagens no diretório
$totalArquivos =count($imagens);
//arredonda a quantidade de repetições através do for
$totalLoops = ceil($totalArquivos / 3);
//laço para imprimir os tr's
for( $coluna = 0; $coluna < $totalLoops; $coluna++ )
{
echo "<tr>";
//este for irá repetir sempre três vezes para imprimir
//as três imagens por coluna
for( $linha = 0; $linha < 3; $linha++ )
{
echo "<td align='center'>\n \t
<a href='fotos/". $imagens[$linha + $coluna] ."'>
<img src='fotos/". $imagens[$linha + $coluna] ."' width='150' alt='Unigarden'/>
</a>\n
</td>\n";
}
echo "</tr>";
}
closedir($dir);
?>
</table>
Abração!
Fica com DEUS!