• User Newbie

    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&amp;from=$pageNum&amp;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&amp;from=$from&amp;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&amp;from=$from&amp;mode=view \">Foto successiva >></a>";
            }
            
            //Stampa paginazione
            echo "<br /><br />".$precedente."&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"?page=$from\">Indice foto</a>&nbsp;&nbsp;&nbsp;&nbsp;".$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.


  • User Attivo

    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?


  • User Newbie

    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.


  • User Attivo

    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. 0
    15 = 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
    }


  • User Newbie

    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


  • User Attivo

    Non c'è il codice.


  • User Newbie

    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.


  • User Newbie

    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


  • User Attivo

    @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 bianco

    Io 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?


  • User Attivo

    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


  • User Newbie

    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....


  • User Newbie

    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'immagine

    grazieeee mille


  • User Attivo

    Prova a giocare con la compressione. Se metti a 0? Magari pesa di più ma la vedi meglio.