Newsgroup: it.comp.www.php
Titolo: Come posso fare? Galleria di immagini.

Salve, come posso costruire un archivio di immagini ?
L'effetto dovrebbe essere questo:
La pagina presenta i thumbnails e quando ci si clicca sopra si apre
una nuova finestra della dimensione della foto . 
Ho cercato in rete e ho trovato tantissimi script php ma non ho
trovato nulla che fa al mio caso.
Consigli?
Grazie.

 ha scritto nel
messaggio news:3bdbef99...@News.CIS.DFN.DE...


 una nuova finestra della dimensione della foto .
Ti posto due scriptini (di cui uno usa anche Javascript) che ho adoperato in
questa pagina:
http://sf.vallecaudina.net/cervinara/
A me serviva anche poter visualizzare le foto per argomento, per cui nella
query c'è l'opzione where... che se non ti serve puoi anche eliminare.
Per le foto devi crearti due sottocartelle nella directory dove metterai
questi files:
una la chiami "images" per le foto vere e proprie, e l'altra "thumbs", per
le anteprime
QUESTA E' LA STRUTTURA DELLA TABELLA mySQL
--------------------------------------------
CREATE TABLE foto (
  id smallint(5) unsigned NOT NULL auto_increment,
// nome del file. jpg sia per la foto grande che per i thumbnail
  nfile varchar(30) NOT NULL default '',
// se vuoi contare quante volte la foto viene cliccata
click smallint(5) unsigned NOT NULL default '0',
 //se vuoi aggiungere una breve didascalia alla foto
  descrizione mediumtext NOT NULL,
// la sezione a cui appratiene la foto, che puo' appartenere anche più di 1
sezione
 sezione set('Cultura','Epoca','Persone','Politica','Religione','Sport') NOT
NULL default '',
// se vuoi dare un titolo alla fotografia
  titolo varchar(100) NOT NULL default '',
// se vuoi mettere i credits della foto, magari chi l'ha scattata.
  credits varchar(70) NOT NULL default '',
  PRIMARY KEY (id),
  UNIQUE KEY id(id)
)
---------------------------------------------
QUI C'E IL CODICE CHE TI DA' I THUMBNAILS:
inserisci questa funzione javascript tra i tag <HEAD></HEAD>
---------------------------------------------
function popup(str) {
searchWin =
window.open(str,'popup','scrollbars=yes,resizable=no,width=550,height=480,st
atus=no,location=no,toolbar=no');
}
---------------------------------------------
<?
// $sez è la variabile che indica la sezione scelta, p. es tutte le foto
d'epoca
// che puoi passare tramite URL
// qui hai già stabilito la connessione al database e fai la query
$sql="SELECT id,nfile,titolo FROM foto WHERE sezione like '%$sez%' order by
ID ASC";
$result = mysql_query($sql);
$n_ris = mysql_num_rows ($result); // ti da il numero di foto presenti in
quella data sezione
/*
queste righe costruiscono la tabella in HTML che conterrà i thumbnails
forse è un metodo un po' barbaro, ma non sono riuscito a fare di meglio.
In base ai risultati ti ordina le anteprime 5 per riga, e funziona anche
quando
il numero di foto non è un multiplo di 5
*/
if ($n_ris <= $cols) // da 1 a 5
$righe = $righe;
if (($n_ris > $cols) && ($n_ris <= $cols*2)) // da 6 a 10
$righe = 2;
if (($n_ris > $cols*2) && ($n_ris <= $cols*3)) // da 11 a 15
$righe = 3;
if (($n_ris > $cols*3) && ($n_ris <= $cols*4)) // da 16 a 20
$righe = 4;
if (($n_ris > $cols*4) && ($n_ris <= $cols*5)) // da 21 a 25
$righe = 5;
if (($n_ris > $cols*5) && ($n_ris <= $cols*6)) // da 26 a 30
$righe = 6;
if (($n_ris > $cols*6) && ($n_ris <= $cols*7)) // da 31 a 35
$righe = 7;
if (($n_ris > $cols*7) && ($n_ris <= $cols*8)) // da 36 a 40
$righe = 8;
echo "<table border='0' width=100%' cellspacing='10'>\n";
for ($i=1; $i<=$righe; $i++) {
 echo "<tr>\n";
 for ($o=1; $o<=$cols; $o++) {
 echo "<td align='center' valign='top' width=20%'>\n";
 $risultato = mysql_fetch_row($result);
 if ($risultato[1]) {
// qui ti fa visualizzare la foto in una finestra pop-up
 echo "<a href=\"javascript:popup('foto.php?id=$risultato[0]')\">";
 echo "\n<img alt='clicca per ingrandire' border='0'
src='images/thumbs/$risultato[1].jpg'></a><br>\n";
 echo "<font size='2'><b>$risultato[2]"; // il titolo della foto...
 echo "</b></font></td>\n"; }
 else
 echo "</td>\n"; }
 echo "</tr>\n"; }
echo "</table>\n";
?>
--------------------------------------------
QUI C'E IL CODICE DEL FILE  foto.php,
RICHIAMATO DAL FILE PRECEDENTE
quando la foto viene caricata completamente, l'opzione ti mette in primo
piano la finestra
<body onLoad="window.focus(); return true;">
<center>
<?
// qui hai già stabilito la connessione al database
$sql="SELECT nfile,descrizione,click,titolo,credits FROM foto WHERE id =
'$id'";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);
// qui fai visualizzare la foto
echo "<h3><font color='red'>$row[titolo]</font></h3>";
echo "<table width='500' border='0' cellspacing='0' cellpadding='2'
align='center'><tr><td>";
echo "<font size='2'><b>$row[descrizione]</b></font></td></tr></table>";
echo "<img src='images/$row[nfile].jpg' alt='aspetta mentre carico la
foto...' border='1'>";
echo "<br><b><font size=2>Fonte: $row[credits]";
if ($row[click] == 1)
$volte="volta";
else
$volte="volte";
echo " - foto vista $row[click] $volte</font></b>";
// qui aggiorni il numero di volte che la foto è stata cliccata
$cliccaggi = $row[click] + 1;
$sql="UPDATE foto SET click='$cliccaggi' WHERE id=$id";
$result = mysql_query($sql);
print mysql_error($link);
?>
<br>
 <a href="#" onClick="window.close()"><font size="1">chiudi la
finestra</font></a>
  </center>
  </body>
</html>
--------------------------------------------
E questo è tutto. Spero che si capisca.
Sono ben accetti migliorie e aggiustamenti.
Ciao!
--
GK
Senza Filtro A.I.P.M.
http://sf.vallecaudina.net

Grazie, troppo gentile.
Provo il tutto subito
