A ver si alguien puede ayudarme con este tema, con el que estoy dando vueltas y vueltas y no termino de resolver...
Tengo el siguiente código:
Código PHP:
<?php
// para leer el directorio
$ruta = "gallery/";
$filehandle = opendir($ruta);
while ($file = readdir($filehandle)) {
if ($file != "." && $file != "..") {
$arch=$file;
$archi=$arch.'*'.$archi;
}
}
closedir($filehandle);
// paginating
$archivosfile=explode("*", $archi);
asort($archivosfile); //-------------------------------- AGREGADO!
$currentpage = $_SERVER['PHP_SELF']; // current page
$total=(count($archivosfile)-2);
$maxRows_Catalog = 9; // max number of files to display per page
$pageNum_Catalog = 0;
if (isset($_GET['pag'])) {
$pageNum_Catalog = intval($_GET['pag']);
}
$startRow_Catalog = $pageNum_Catalog * $maxRows_Catalog;
if (isset($_GET['pag'])) {
$pageNum_Catalog = intval($_GET['pag']);
}
$startRow_Catalog = $pageNum_Catalog * $maxRows_Catalog;
$totalRows_Catalog = $total;
$totalPages_Catalog = ceil($totalRows_Catalog/$maxRows_Catalog)-1;
$archivos = array_slice($archivosfile, $startRow_Catalog, $maxRows_Catalog);
// paginating
?>
<br />
<div> mostrando <?php echo ($startRow_Catalog + 1) ?> a <?php echo min($startRow_Catalog + $maxRows_Catalog, $totalRows_Catalog) ?> de <?php echo $totalRows_Catalog ?></div>
<table border="0" align="center">
<tr>
<td><?php if ($pageNum_Catalog > 0) { // Show if not first page ?>
<a href="<?php echo $currentpage; ?>?pag=0"><img src="img/first.png" width="24" height="24"/></a>
<?php }else{ // Show if not first page ?>
<span class="alpha"><img src="img/first.png" width="24" height="24"/></span> <?php } ?> </td>
<td><?php if ($pageNum_Catalog > 0) { // Show if not first page ?>
<a href="<?php echo $currentpage; ?>?pag=<?php echo htmlentities($_GET['pag']-1); ?>"><img src="img/prev.png" width="24" height="24"/></a>
<?php }else{ // Show if not first page ?>
<span class="alpha"><img src="img/prev.png" width="24" height="24"/></span> <?php } ?> </td>
<td><?php if ($pageNum_Catalog < $totalPages_Catalog) { // Show if not last page ?>
<a href="<?php echo $currentpage; ?>?pag=<?php echo htmlentities($_GET['pag']+1); ?>"><img src="img/next.png" width="24" height="24"/></a>
<?php }else{ // Show if not last page ?>
<span class="alpha"><img src="img/next.png" width="24" height="24"/></span> <?php } ?> </td>
<td><?php if ($pageNum_Catalog < $totalPages_Catalog) { // Show if not last page ?>
<a href="<?php echo $currentpage; ?>?pag=<?php echo $totalPages_Catalog ?>"><img src="img/last.png" width="24" height="24"/></a>
<?php }else{ // Show if not last page ?>
<span class="alpha"><img src="img/last.png" width="24" height="24"/></span> <?php } ?> </td>
</tr>
</table>
<?php
foreach ($archivos as $archivo) {
echo '<div class="indiv"><img class="thumb" src="'.$ruta.$archivo.'" /><br><div class="etiq"><label></label></div></div>';
}
?>
No ordenaba alfabéticamente los resultados, por lo que le agregué la línea:
asort($archivosfile); con lo que obtuve el orden esperado... y también pude resolver el tema de que muestre las imágenes en una "tabla" que pude armar con DIVs (float: left;) y quedó perfecto!!
Pero no termino de resolver estos problemas que le encuentro:
Cuenta 1 ítem menos del que realmente hay en el directorio, al mismo tiempo que
devuelve un ítem "fantasma" (y de más), que es el nombre del directorio (y como si fuera una imagen), pero en realidad, sí muestra TODAS las imágenes!!
En resumen, el directorio tiene 12 imagenes... y el "contador" dice que encuentra 11 elementos, pero al mismo tiempo muestra 13 ya que incluye TODAS las imágenes y agrega una "imagen fantasma" que es en realidad, el nombre del directorio!
Les dejo el link para que vean el resultado:
http://webzite.cu.cc/prueba.html
A ver si alguien me puede ayudar a descular qué es lo que le pasa... que no lo puedo encontrar y está superando mi condición de NOVATO en PHP!! =(
Muchas gracias por adelantado!