Newsgroup: it.comp.www.php
Titolo: Creazione galleria di foto

Sto cercando di realizzare, per il mio sito, un semplice meccanismo di
generazione automatica di gallerie di foto. 
Vorrei che, per creare una galleria base (quindi senza descrizione nè
titolo) fosse possibile semplicemente caricare via ftp le immagini (in un
primo momento sia le immagini che le relative thumbnail).
Per il momento sto facendo delle prove per vedere se riesco a fare tutto con
2 sole pagine: gallery.php e show_image.php
gallery.php:
richiede come parametro il nome della gallery che dovrà corrispondere alla
sotto directory in cui ci saranno le foto. Quindi lo script partendo dal
parametro mette in un array l'elenco dei file nella directory, lo ordina e
crea la pagina indice con le immagini inserite in una tabella. Ogni immagine
sarà un link a show_image.php avente come parametri il nome della gallery e
il nome dell'immagine.
Esempio: 
http://lis.altervista.org/gallery.php?name=preferite
Il link alle immagini non funziona ancora
show_image.php:
questa pagina devo ancora studiarla e vorrei che diventasse qualcosa di
simile a quanto ho già
Esempio: 
http://lis.altervista.org/foto/preferite/imagepages/image3.php
Il "problema" di fondo è come passare a questa pagina i vari parametri per
la navigazione: inizialmente pensavo di passargli solo nome gallery e il
nome dell'immagine da visualizzare e poi avrebbe ricostruito in maniera
autonoma (leggendo il contenuto della directory, ricreando e riordinando
l'array nello stesso modo della pagina indice) il nome della
prima/ultima/precedente/successiva/ immagine, ma facendo così non
appesantirei troppo il server rendendo più lento il caricamento delle
pagine? 
Passargli tutti i parametri mi sembra qualcosa di abominevole, e
l'alternativa che mi è venuta in mente è di usare una sessione che creo
quando entro in una gallery e in cui metto l'array con le immagini. In
questo modo non avrei bisogno di leggere ogni volta il contenuto della
directory (che potrebbe variare dai 10 ai 40-80 file, non penso di più). 
Che strada mi consigliate di seguire?
1-ricostruire il tutto ogni volta
2-sessione
grazie
-- 
Lis
Il mio sito: 
http://lis.altervista.org
Aiuta la ricerca contro il cancro: 
http://snurl.com/ida_team
L'uomo è nato libero, ma ovunque è in catene (Jean-Jacques Rousseau)

 primo momento sia le immagini che le relative thumbnail).
Hai provato a dare un'occhiata a prodotti già pronti?
Tipo Coppermine.
Ciao
Marco

 Tipo Coppermine.
ci ho pensato ma:
- al momento non ho un db
- vorrei fare qualcosa che si integri bene nel mio sito e che non sia
qualcosa di "posticcio"
- sono un programmatore (non web) e mi piace vedere e imparare cose nuove
Le cose che ho scritto nel post precedente sono delle bestialità oppure
erano talmente tante che è passata la voglia di leggerle? :-)
-- 
Lis
Il mio sito: 
http://lis.altervista.org
Aiuta la ricerca contro il cancro: 
http://snurl.com/ida_team
L’esperienza è un modo per dare un nome agli errori (Oscar Wilde)

Non ho letto attentamente quello che chiedi, ma prova a vedere la galleria
su 
http://iw7pcg.altervista.org
 perchè se è qualcosa del genere che cerchi
ti passo i sorgenti e vedi come ho risolto io, anche se in maniera piuttosto
sporca. Ah, dimenticavo, non uso nessun tipo di db e il tutto è realizzato
con soli 3 file php di cui 2 praticamente identici tra loro (uno sfoglia le
categorie e l'altro gli autori, ma il codice è pressocchè identico).
P.S. - l'indirizzo che ho indicato è solo il mio banco di prova, quindi non
ti sorprendere se troverai un sito praticamente vuoto.

Decisamente la via della sessione. Leggere ogni volta la cartella 
potrebbe essere inutilmente pesante, soprattutto se i file sono molti.

 ti sorprendere se troverai un sito praticamente vuoto.
Ho fatto un giretto ma sto cercando qualcosa di un pochino meno "popupposo",
penso di mantenere quello che sto facendo e usare le sessioni.
Non so se è solo perchè è un sito di prova, ma il sito all'indirizzo che mi
hai dato ha un pò di problemi con Firefox
-- 
Lis
Il mio sito: 
http://lis.altervista.org
Aiuta la ricerca contro il cancro: 
http://snurl.com/ida_team
L'uomo può credere all'impossibile, non crederà mai all'improbabile (Oscar
Wilde)

 potrebbe essere inutilmente pesante, soprattutto se i file sono molti.
Ok, grazie. Domanda da ignorante di php: ci sono altri metodi per avere
delle variabili globali oltre a sessioni, parametri sull'indirizzo e cookies
(che non voglio usare)?
-- 
Lis
Il mio sito: 
http://lis.altervista.org
Aiuta la ricerca contro il cancro: 
http://snurl.com/ida_team
C'e' un solo modo di dimenticare il tempo: impiegarlo (Charles Baudelaire)

 hai dato ha un pò di problemi con Firefox
si, infatti è solo di prova e molte cose funzionano solo sotto IE e questa è
la prima volta che rendo pubblico l'indirizzo.
Per i popup è semplice rimuoverli, basta eliminare alcuni tag javascript che
trovi nel codice che ti ho passato e tutto continua a funzionare. Li ho
usati perchè odio cliccare continuamente per tornare all'indice, così invece
ho tutto sott'occhio (la risoluzione video che uso e 1280x1024),
Diversamente puoi dare un'occhiata anche all'album, che come hai visto ha
una struttura più semplice e compatta, comunque niente di eccezionale.
Provo le diverse soluzioni che mi vengono in mente e poi scelgo quella più
adatta alla necessità del momento.

 (che non voglio usare)?
Non hai citato i POST ma credo che li intendessi insieme ai parametri 
sull'indirizzo...
Nelle funzioni standard di PHP non ci sono altri metodi (almeno non mi 
viene in mente nulla). Di certo puoi implementare sistemi tuoi 
utilizzando file condivisi o DB.
Le variabili globali propriamente dette sono però altra cosa... attento 
a non fare confusione.

 una struttura più semplice e compatta, comunque niente di eccezionale.
Perchè invece delle popup non metti insieme pagina di index e pagina di 
zoom ? Io avevo fatto qualcosa del genere in questa pagina e non mi 
dispiaceva il risultato: 
http://www.cusmilano.it/album/foto-francoforte/2908_jpg
Altra cosa: sconsiglio vivamente l'utilizzo delle tabelle per la 
formattazione della griglia; sono troppo dipendenti dalla risoluzione 
dell'utente... meglio delle foto "inline" che vanno a capo quando 
devono... con CSS è facile ottenere effetti carini.

 devono... con CSS è facile ottenere effetti carini.
sto leggendo spesso di questo aspetto, ma detto sinceramente ho iniziato col
php perchè ho reso il mio archivio personale sul file-server consultabile
wia web con una grafica più uniforme. Le dimensioni della tabella sono state
scelte per avere una visibilità decente a partire dagli 800x600, e la scelta
di una tale soluzione è dettata dal mantenere bloccati testo e immagini in
posizioni ben precise di uno rispetto alle altre.
HTML e CSS ne so pochino, e ancora per quest'ultimo periodo non avrò molto
tempo da dedicargli, quindi soluzioni più eleganti non sono in grado di
realizzarne.

 posizioni ben precise di uno rispetto alle altre.
Il problema non è solo per chi ha risoluzioni inferiori (il 640x480 è 
ormai decisamente poco comune e i palmari non sono ancora così "ben 
connessi" a internet), ma per chi ha risoluzioni molto maggiori. 
Immagina un utente con risoluzione a 1600x1200 (situazione decisamente 
non fuori dal comune, soprattutto in ambito grafico)... della sua 
finestra massimizzata utilizzerebbe solo 1/4 dell'area totale...

 finestra massimizzata utilizzerebbe solo 1/4 dell'area totale...
lo so, ma per il momento, vista la mia conoscenza del css, ho preferito non
sfruttare tutto lo schermo (con risoluzioni da te mensionate spesso si hanno
più finestre aperte contemporaneamente e neanche a tutto schermo), appena
affinerò le mie tecniche cercherò di realizzare qualcosa di più
presentabile.
Cmq grazie dei consigli e delle indicazioni, ne farò tesoro.

 devono... con CSS č facile ottenere effetti carini.
Molto interessante: ho fatto una prova ma non riesco a perfezionarla. In
pratica le immagini possono essere di dimensioni diverse (alcune piů alte
che larghe e viceversa), ma io vorrei che si vedessero comunque in maniera
ordinata, come se fossero in una griglia. Cosě com'č ora sembrano un pň in
disordine. Come potrei fare?
Ecco l'esempio
http://lis.altervista.org/gallery.php?gallery=preferite
-- 
Lis
Il mio sito: 
http://lis.altervista.org
Aiuta la ricerca contro il cancro: 
http://snurl.com/ida_team
Se odi una persona odi qualcosa in lei che č parte di te. Ciň che non č
parte di noi stessi non ci disturba (Hermann Hesse)

 a non fare confusione.
si, mi sono spiegato male ma ho capito il significato
-- 
Lis
Il mio sito: 
http://lis.altervista.org
Aiuta la ricerca contro il cancro: 
http://snurl.com/ida_team
Senza immaginazione la paura non esiste (Arthur Conan Doyle)

 
Procedi nel seguente modo:
- Inserisci tutte le miniature dentro un <div class="gallery">
- Ogni immagine deve essere inclusa in uno <span> (non c'č bisogno di 
indicare una classe per lo span).
- Nel foglio di stile aggiungi:
div.gallery span {
	width: 120px;
	height: 120px;
	display: block;
	float: left;
}
Dove width e height devono essere sostituiti con le dimensioni massime 
orizzontali e verticali delle tue miniature.
- Infine per evitare che anche il testo che segue venga allineato lo 
inserisci in un <div class="br"> e aggiungi questo codice nel foglio di 
stile:
div.br
 {
	clear: both;
}
Semplice, no?

 Semplice, no?
In teoria è semplice, ma la mia conoscienza di html e css (e pure di php) è
molto ridotta.
Ora va già molto meglio, ma sto cercando di centrare l'immagine e il testo
all'interno di ogni singola "casella". Ora vengono tutte allineate a
sinistra.
Sto facendo ancora un pò di prove ma non ci riesco, restano sempre allineate
a sinistra. Ho provato aggiungendo l'attributo align al tag span oppure al
tag img ma non in fluisce in alcun modo. Stavolta cosa sto sbagliando?
Come riferimento per aiutarmi sto consultando
www.w3schools.com/css/css_positioning.asp
, ma vedo che c'è solo un
vertical-align e non un horizontal-align
-- 
Lis
Il mio sito: 
http://lis.altervista.org
Aiuta la ricerca contro il cancro: 
http://snurl.com/ida_team
Parlare di tori non è la stessa cosa che essere nell'arena (proverbio
spagnolo)


Gli allineamenti nei CSS sono uno dei problemi più grandi e che 
probabilmente (speriamo) verranno risolti in una delle prossime versioni 
delle specifiche. In ogni caso, l'allinamento orizzontale lo risolvi 
semplicemente mettendo:
text-align: center;
nel div.gallery span
Quello verticale invece è proprio un vero problema. Il vertical-align è 
infatti stato concepito per allineare elementi inline all'interno di 
porzioni di testo e non è decisamente il tuo caso. Senza ricorrere ai JS 
non mi viene in mente nessuna soluzione per questo problema, ma se ti è 
davvero indispensabile fammi sapere che ci penso.

 porzioni di testo e non è decisamente il tuo caso. 
Di quello verticale non ne ho bisogno più di tanto, grazie, hai già fatto
tanto così 
-- 
Lis
Il mio sito: 
http://lis.altervista.org
Aiuta la ricerca contro il cancro: 
http://snurl.com/ida_team
Soltanto le persone forti sanno confidare le proprie debolezze e chiedere
conforto (Anonimo)