Ecco qua.
Regolando i valori della variabili all'inizio puoi cambiare il numero di immagini per pagina, per riga, e la loro dimensione. Ovviamente è scarna, ma lascio a te aggiungere delle class CSS per renderla come meglio credi (compreso l'indice di pagina in fondo alla pagina che senza uno style fa proprio schifo). Le immagini vengono prese dalla cartella "./gallery/".
Codice PHP:
<?php
function num_file_dir($dir)
{
$d = dir($dir);
$i=0;
while ($entry = $d->read())
{
if(is_file($dir . $entry) && strtolower(substr($entry,-4)) == '.jpg')
{
$nf[$i] = $entry;
$i++;
}
}
$d->close();
return $nf;
}
// definisco la directory della gallery
$dir = "./gallery/";
// immagini per riga
$ixr = 4;
// righe per pagina
$rxp = 4;
// grandezza delle immagini
$isize = 120;
// definisco il numero della pagina
if(!isset($_GET['page'])) { $np = 1; }
else { $np = $_GET['page']; }
// recupero l'array dei files presenti nella directory della gallery
$files = num_file_dir($dir);
// conto il numero di immagini presenti nella gallery
$n = count($files);
// calcolo le imamgini per pagina
$ixp = $ixr * $rxp;
if($n == 0)
{
print("<div>Non ci sono immagini disponibili in questa gallery</div>");
}
else
{
// preparo la tabella della gallery
print("<table border='1' align='center' cellpadding='0' cellspacing='0' width='700' height='550'>");
$i=($np - 1) * $ixp;
for($y=0;$y<$rxp;$y++)
{
if($i <= $n)
{
print("<tr>");
for($x=0;$x<$ixr;$x++)
{
print("<td align='center'>");
if($files[$i])
{
print("[img]".$dir.$files[$i]."[/img]</table>");
}
print("</td>");
$i++;
}
print("</tr>");
}
}
print("</table>");
///////////////////////////////////////
// indice delle pagine della gallery //
///////////////////////////////////////
//calcolo il numero di pagine arrotondando per eccesso (ovviamente)
$npagine = ceil($n/$ixp);
//calcolo il valore della pagina precedente...
if($np > 1) { $prev = $np-1; }
else { $prev = 1; }
//...e di quella sucessiva
if($np < $npagine) { $next = $np+1; }
else { $next = $npagine; }
//se il numero di immagini supera il valore consentito per pagina allora faccio comparire l'indice delle pagine
if($n > $ixp)
{
print("<table align='center' class='news_indice'><tr><td valign='middle'>");
if($np > 8)
{
print("[url='?s=".$_GET[']<<[/url]");
}
//link per andare alla pagina precedente (se la pagina è la 1 riporta alla 1)
print("[url='?s=".$_GET[']<[/url]");
//creo l'indice delle pagine
for($i=1;$i<=$npagine;$i++)
{
if($i < ($np+8) && $i > ($np-8))
{
//la pagina corrente la faccio non cliccabile
if($i == $np)
{
print(" <font>".$i."</font> ");
}
//mentre le altre le rendo dei link al corrispiettivo numero di pagina
else
{
print("[url='?s=".$_GET[']".$i."[/url] ");
}
}
}
//link per andare alla pagina sucessiva (se la pagina è la $npagine riporta alla $npagine)
print("[url='?s=".$_GET[']>[/url]");
if($np < ($npagine - 8))
{
print("[url='?s=".$_GET[']>>[/url]");
}
print("</td></tr></table>");
}
}
?>
Se hai problemi o ti servono delucidazioni non esitare a chiedere.
Spero fosse quello che cercavi.