Visualizzazione risultati 1 fino 3 di 3

Discussione: Dividere le pagine in base alla quantità dei contenuti

  1. #1
    Guest

    Post Dividere le pagine in base alla quantità dei contenuti

    Spero di essere stato chiaro nel titolo, vorrei che in base al numero dei contenuti la pagina si dividesse. Esempio:
    il numero dei contenuti variano.. quindi cerco qualche script che mi facesse vedere 20 contenuti per pagina, se i contenuti sono 46 la pagina si divide in tre parti ("index.php" conterrà 20 "index.php?pag=2" conterrà altri 20 e "index.php?pag=3" conterrà gli ultimi 6).
    Vorrei che ci fosse anche un link (successivo e precedente) se le pagine sono 2 o +.. se la pagina è una il link non ci deve essere.
    il contenuto è una riga di codice
    un' esempio di script :
    Codice PHP:
    <?php
    // Configurazione della galleria
    // ---------------------------------

    // percorso della cartella contenente le immagini ORIGINALI
    $path_immagini = "immaginicaricate/";
    // percorso della cartella che dovrà contenere le anteprime
    $path_anteprime = "anteprime/";

    // numero di righe e colonne della tabella che mostrerà le anteprime
    $num_righe = 2;
    $num_colonne = 2;

    // larghezza ed altezza massima delle anteprime
    $larghezza_ant = 150;
    $altezza_ant = 150;
    // ---------------------------------


    // provo ad "aprire" la cartella delle immagini originali
    $handle = @opendir($path_immagini);

    // se c'è stato un errore...
    if(!$handle)
    die (
    "Errore nell'apertura della cartella delle immagini '$path_immagini'");

    // inizializzo l'array che conterrà i nomi delle immagini
    $immagini = array();

    // memorizzo in $immagini tutti i nomi delle immagini (JPG) presenti nella cartella degli originali
    while (false !== ($file = readdir($handle)))
    {
    if (
    $file != '.' && $file != '..' && strpos($file,'.jpg'))
    {
    if(
    strpos($file,'.jpg'))
    $immagini[] = $file;
    }
    }

    // metto in ordine alfabetico le immagini
    sort($immagini);

    // calcolo il numero dell'ultima pagina
    $ultima_pagina = ceil(count($immagini) / ($num_righe * $num_colonne));

    // decido che pagina mostrare
    if(isset($_GET['pag']))
    {
    // se è nell'URL è presente un numero di pagina
    if(is_numeric($_GET['pag']) && $_GET['pag'] > 0 && $_GET['pag'] <= $ultima_pagina)
    {
    // se il numero di pagina indicato è lecito
    $pag_corrente = $_GET['pag'];
    }
    else
    {
    // nell'URL è stato messo un numero di pagina errato.
    // l'utente sta "giocando" con il nostro script !!!
    header('location: galleria.php?pag=1');
    exit;
    }
    }
    else
    {
    // se non è stato specificato nulla via URL mostro la prima pagina
    $pag_corrente = 1;
    }

    // quale sarà la prima immagine da mostrare nella pagina corrente?
    $immagine_iniziale = ($pag_corrente-1) * $num_righe * $num_colonne;

    // Costruisco dei link per accedere alla pagina precedente e successiva (se esistono!)
    $navigatore = '';
    if(
    $pag_corrente > 1)
    $navigatore .= '<a href="galleria.php?pag='.($pag_corrente-1).'">&lt;&lt; Precedente</a> ';

    if(
    $pag_corrente < $ultima_pagina)
    $navigatore .= '<a href="galleria.php?pag='.($pag_corrente+1).'">Successiva &gt;&gt;</a>';

    // adesso devo costruire la tabella che conterrà le anteprime
    $tab_immagini = '';
    // il primo cliclo FOR è per costruire le righe
    for ($i = 0; $i < $num_righe ; $i++)
    {
    // se all'inizio di una riga mi accorgo che non ci sono più immagini da visualizzare
    // allora interrompo le iterazioni
    if(!isset($immagini[($i*$num_colonne) + $immagine_iniziale]))
    break;

    // apro la riga corrente
    $tab_immagini .= '<tr>';

    // il secondo ciclo FOR serve invece a costruire le singole celle apparteneti ad una riga
    for ($j = 0; $j < $num_colonne; $j++)
    {
    // l'indice dell'immagine da mostrare nella cella corrente
    $indice = ($i*$num_colonne) + $j + $immagine_iniziale;

    // se esiste una immagine con questo indice (potrebbero essere finite!)
    if(isset($immagini[$indice]))
    {
    // controllo che esista l'anteprima per l'immagine corrente
    // in caso contrario la creo "al volo"
    if(!file_exists($path_anteprime.$immagini[$indice]))
    crea_anteprima($immagini[$indice],$larghezza_ant,$altezza_ant,$path_immagini,$path_anteprime);

    // ricavo le dimensioni dell'anteprima corrente
    list($width, $height) = getimagesize($path_anteprime.$immagini[$indice]);

    // non mi resta che creare i tag per il link, l'immagine ed i nome dell'immagine
    $cella = '<a href="'.$path_immagini.$immagini[$indice].'">';
    $cella .= '<img src="'.$path_anteprime.$immagini[$indice].'" alt="'.$immagini[$indice].'" height="'.$height.'" width="'.$width.'">';
    $cella .='</a>';
    }
    else
    {
    // sono finite le immagini! Lascio la cella vuota
    $cella = '&nbsp;';
    }

    // metto il contenuto della cella appena creata nella tabella
    $tab_immagini .= '<td class="cella_immagine" align="center" valign="middle">'. $cella . '</td>';
    }

    // chiudo la riga corrente
    $tab_immagini .= '</tr>';
    }

    // tutto il contenuto "dinamico" è stato preparato, devo solo caricare il template che si occuperà di mostrarlo
    // per proteggermi dal caricamento del template esternamente allo script definisco una costante...
    define('LOAD_TEMPLATE',1);
    include(
    'template.php');

    // fine dello script
    exit;


    // funzione per la creazione delle anteprime
    function crea_anteprima($nome_immagine,$larghezza_anteprima,$altezza_anteprima,$path_immagini,$path_anteprime)
    {
    // ricavo la dimensione dell'immagine originale
    list($larghezza_orig, $altezza_orig) = getimagesize($path_immagini.$nome_immagine);

    if (
    $larghezza_orig < $altezza_orig) {
    $larghezza_anteprima = ($altezza_anteprima / $altezza_orig) * $larghezza_orig;
    } else {
    $altezza_anteprima = ($larghezza_anteprima / $larghezza_orig) * $altezza_orig;
    }

    // creo una nuova immagine, che conterrà l'anteprima
    $image_p = imagecreatetruecolor($larghezza_anteprima, $altezza_anteprima);

    // carico l'originale
    $image = imagecreatefromjpeg($path_immagini.$nome_immagine);

    // metto nella nuova immagine la "riduzione" dell'originale
    imagecopyresampled($image_p, $image, 0, 0, 0, 0, $larghezza_anteprima, $altezza_anteprima, $larghezza_orig, $altezza_orig);

    // salvo l'anteprima
    imagejpeg($image_p, $path_anteprime.$nome_immagine);
    }
    ?>
    questo script rileva il numero delle immagini presenti in una cartella e ne fa delle anteprime nella stessa pagina.. se le immagini sono 8 le pagine sono 2 (c'è un link che gli collega "successivo e precedente"..
    vorrei che i contenuti fossero prelevati da una pagina (php o html) e non da una cartella
    la riga di codice è :
    Codice PHP:
    <div><a href="prova" ><img src="immagine.jpg" width="100" height="69" align="left" /><span style="color: #0000FF;"><span style="font-size: small;">3...<br></a></span></span><span style="font-size: x-small;"><span style="color: #808080;">3:17</span></span></div>

  2. #2
    Guest

    Predefinito

    Ti consiglio di lasciare il while con opendir ed usare la funzione glob().

    Per la paginazione (è così che si chiama), prova a dare un'occhiata qui: Simple PHP Gallery pagination.


  3. #3
    Guest

    Predefinito

    il file che ho scaricato l'ho provato... vorrei mettere i link delle immagini nel file index e non caricarle nella cartella... me lo potresti modificare ?
    Nessuno è disposto ad aiutarmi??
    Ultima modifica di CHELAIFACHAT : 23-08-2011 alle ore 20.48.11 Motivo: Nessuno ha risposto

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •