- Home
- Categorie
- Coding e Sistemistica
- PHP
- Semplice Fotogallery con ridimensionamento immagini AIUTO
-
Semplice Fotogallery con ridimensionamento immagini AIUTO
Ciao, qualche tempo fà avevo trovato uno script fatto da voi in questo forum per la creazione di una semplice fotogallery e funziona benissimo.
Solo una cosa :- io vorrei incolonnare le foto su 5 colonne per un massimo di righe risultanti dal nr colonne diviso numero immagini per pagine.
Il vs script era questo, ne posto la parte che mi serve.
//Se si sta visualizzando l'indice allora utilizzo la paginazione propria dell'indice
if ($mode == "index" || empty($mode) || !isset($mode))
{
########################
# Paginazione per #
# la visualizzazione #
# dell'indice #
########################// Se si è scelto di utilizzare la paginazione (vedi file config_gallery.php) allora vengono stampati i links. // Altrimenti verranno visualizzate tutte le immagini nella stessa pagina. if (empty($numperpagina)) { $numperpagina = count($image); } isset($_GET['page']) ? $pageNum = $_GET['page'] : $pageNum = 1; $inizio = ($pageNum - 1) * $numperpagina; $fine = $inizio + $numperpagina; $i = 1; //inizializzo l'indice foreach ($image as $id => $nome) { if ($i > $fine) { break; } if ($i >= $inizio) { // stampa la miniatura echo " <a href=\"?id=$i&from=$pageNum&mode=view\"><img src=\"".$destination_path.$nome."\" title=\"".$nome."\" border=\"0\" alt=\"foto\" /></a>"; } $i++; // incremento dell'indice } if ($fine > count($image)) { $fine = count($image); } // Conto delle pagine $maxPage = ceil(count($image)/$numperpagina); // Creazione link per accedere ad ogni pagina $self = $_SERVER['PHP_SELF']; $nav = ''; for($page = 1; $page <= $maxPage; $page++) { if ($page == $pageNum) { $nav .= " $page "; } else { $nav .= " <a href=\"?page=$page\" title=\"Pagina $page di $maxPage\">$page</a> "; } } // Creazione links Previous e Next // e quelli First page e Last page if ($pageNum > 1) { $page = $pageNum - 1; $prev = " <a href=\"?page=$page\" title=\"Pagina $page di $maxPage\"><< precedente</a> "; } else { $prev = ''; // se siamo nella 1° pag non mostriamo Prev } if ($pageNum < $maxPage) { $page = $pageNum + 1; $next = " <a href=\"?page=$page\" title=\"Pagina $page di $maxPage\" >successivo >></a> "; } else { $next = ''; // siamo nell' ultima pag, nn mostriamo Next } // mostra i links di navigazione echo "<br />Pagine: ", $prev . $nav . $next ; //print_r($image); } //Se si sta visualizzando a singola foto allora utilizzo la paginazione per visualizzare i link "precedente", "torna indietro" e "successiva" elseif ($mode == "view") { ######################## # Paginazione per # # la visualizzazione # # della singola foto # ######################## //Aquiusizione dell'id della foto. Default: 1 isset($_GET['id']) ? $id = $_GET['id'] : $id = 1 ; //Stampa a video della foto echo "<img src=\"".$dir.$image[$id]."\" title=\"\" alt=\"".$image[$id]."\" />"; echo "<br />".$image[$id]; //Categoria da cui si proviene if (isset($_GET['from'])) { $from = $_GET['from']; } else $from = 1; //Link Foto Precedente if ($id == 1) { $precedente = ""; //Se siamo nella prima pagina non mostriamo il link alla foto precedente } else { $prev = $id - 1; $precedente = "<a href=\"?id=$prev&from=$from&mode=view \"><< Foto precedente</a>"; } // Link Foto Successiva if ($id == count($image)) { $successiva = ""; //Se siamo nella ultima pagina non mostriamo il link alla foto successiva } else { $next = $id + 1; $successiva = "<a href=\"?id=$next&from=$from&mode=view \">Foto successiva >></a>"; } //Stampa paginazione echo "<br /><br />".$precedente." <a href=\"?page=$from\">Indice foto</a> ".$successiva; }
?>
Come faccio?
Questo è una sezione di codice che avevo precedentemente creato io per gestire la mia galleria, ma il vostro è molto più performante solo che non incolonna le foto come il mio.
Chiedo umilmente aiuto.
grazie mille a tutti.
-
io vorrei incolonnare le foto su 5 colonne per un massimo di righe risultanti dal nr colonne diviso numero immagini per pagine.
Cioé? Se hai 100 immagini hai 5 colonne (fisso) su N righe dove:
$nColonne = 5;
$nImmagini = 100;
$n = $nColonne / $nImmagini; // 0,05 immagini per pagina?Oppure intendi per pagina, ma come è scritto sembra strano.
Forse intendi: impongo 20 immagini per pagina (numero che immagino potrebbe variare di 5 in 5?), ho 5 colonne fisse, quindi ottieni 4 righe?
-
CIao,
si intendevo come hai detto tu.
Inoltre ho il problema che non riesco ad inserire anche l' effetto lightbox sulle thumbs.
Se hai qualche idee.
-
Sull'effetto lightbox controlla le ultime discussioni in questa sezione del forum, c'è qualche info.
Per le pagine, ti basta inserire qualche calcolo.
Conosci il numero di pagina in cui ti trovi ($page) e conosci il numero di immagini per pagina (15-20-25 o quello che vuoi, ipotizzo: $imgPerPagina).
Fai nella colonna 1:
$primaImmagine = $page * ($imgPerPagina - 1) + 1; // Es. sei a pagina 5, hai 20 immagini per pagina. 420 = 80 +1 = 81
// Es. sei a pagina 1, hai 15 immagini per pagina. 015 = 0 + 1 = 1
//Occhio, se i tuoi ID immagine partono da 0, togli il + 1.echo '<tr>';
echo '<td><img src="' . $primaImmagine + 0 . '" /></td>';
echo '<td><img src="' . $primaImmagine + 1 . '" /></td>';
echo '<td><img src="' . $primaImmagine + 2 . '" /></td>';
echo '<td><img src="' . $primaImmagine + 3 . '" /></td>';
echo '<td><img src="' . $primaImmagine + 4 . '" /></td>';
echo '</tr>';
echo '<tr>';
echo '<td><img src="' . $primaImmagine + 5 . '" /></td>';
echo '<td><img src="' . $primaImmagine + 6 . '" /></td>';
echo '<td><img src="' . $primaImmagine + 7 . '" /></td>';
echo '<td><img src="' . $primaImmagine + 8 . '" /></td>';
echo '<td><img src="' . $primaImmagine + 9 . '" /></td>';
echo '</tr>';Però così hai un problema, devi metterlo sotto ciclo per rendere il tutto realmente adattabile modificando il valore massimo di immagini per pagina. Ti basta sostituire i numeri statici che ho messo con una variabile $i, all'interno di un ciclo for. In cui dopo ogni 5 immagini (colonne) chiudi la vecchia e crei la nuova riga "</tr><tr>". Prima del ciclo puoi fare un echo della prima apertura di riga, e lo stesso alla fine del ciclo per chiudere l'ultima riga.
for($i = 0, $i < $imgPerPagina, ++$i) {
//codice
}
-
Niente da fare, non riesco ad incolonnare le foto.
Anche inserendo le tue modifiche non ci riesco.
Il codice in questione è questo:Non ho più ideeeee.....
aiuto
-
Non c'è il codice.
-
NOn posso postarlo per motivi di regole forum, anzi non mi lascia proprio.
Ma lo trovi all 'inizio della discussione.
Sono le righe comprese tra :
########################
# Paginazione per #
# la visualizzazione #
# dell'indice #
########################e queste:
########################
# Paginazione per #
# la visualizzazione #
# della singola foto #
########################All' interno trovi il codice originale.
Inoltre ho fatto delle prove con lightbox e fancybox.
I plugin funzionano, ma quando clicco sull' immagine mi appare solo un quadrato bianco.
-
CIao, ho risolto l' impaginazione, ma continuo a non capire come devo inrire il codice per l' effetto lightbox.
Ho inserito gli script, ed ho scritto cosi il codice:
echo " <a href="".$photo_path.$value."" rel="lightbox[roadtrip]" title="".$title.""><img src="".$thumb_path."/".$value."" title="".$title."" border="0" alt="".$title."" class="img-indice" /></a> \n";
Ma non succedde niente. Quadrato bianco
-
@fau72 said:
CIao, ho risolto l' impaginazione, ma continuo a non capire come devo inrire il codice per l' effetto lightbox.
Ho inserito gli script, ed ho scritto cosi il codice:
echo " <a href="".$photo_path.$value."" rel="lightbox[roadtrip]" title="".$title.""><img src="".$thumb_path."/".$value."" title="".$title."" border="0" alt="".$title."" class="img-indice" /></a> \n";
Ma non succedde niente. Quadrato biancoIo avrei disposto la stinga così, giusto per una maggiore leggibilità senza bisogno di tutti quegli escape
[PHP]echo '<a href="' . $photo_path.$value . '" rel="lightbox[roadtrip]" title="' . $title . '"><img src="' . $thumb_path . '/' . $value . '" title="'. $title . '" border="0" alt="' . $title . '" class="img-indice" /></a>' . "\n";[/PHP]
Comunque hai provato a guardare che la stringa venga stampata correttamente con i giusti path?
-
Prova i codice per il lightbox in una semplice pagina html+js. Se lì funziona, confronta il codice statico con il risultato del tuo codice. Notando le differenze potresti trovare l'errore.. Così con pezzetti di codice non è possibile aiutarti. Ma anche avendolo tutto sotto mano, più che consigli diventerebbe un vero lavoro...
Edit: ho letto ora la risposta di Oslino :Ds
-
Perfetto.....risolto.
Ho riscritto le stringhe e forse c'era un' errore sugli apici. Ora funziona tutto.
Ultima domanda; ma è normale che le foto quando le apro con lightbox si vedano un po sgranate?
Sul server sono caricate in alta definizione, e le thumbs compresse cmq si vedono bene.
Devo risolvere anche questo dilemma....
-
Forse devo settare diversamente questi valori, ma come vanno letti?
$SizeTh = 130; //Grandezza dell'anteprima
$SizePh = 580; //Grandezza della foto originale
$DirGallery = "../reserved/foto/SF"; //Nome della cartella in cui sono contenute le sottocartelle o le foto
$MaxPhoto = 20; //Numero massimo di foto per pagina. 0 = tutte.
$Compression = 100; //Compressione dell'immaginegrazieeee mille
-
Prova a giocare con la compressione. Se metti a 0? Magari pesa di più ma la vedi meglio.