• User Attivo

    paginazione 10x10

    ciao a tutti...ho trovato uno scripting di paginazione che ho capito e che sto usando...funziona tutto solo che ora in una tabella ho più di 100 records e usando questo scripting nella numerazione mi appaiono tutti e non è molto elegante a vedersi per cui vorrei cosapere cosa aggiungere in modo tale che nella numerazione appaiono 10 numeri per volta in questo modo:
    << < 1 2 3 4 5 6 7 8 9 10 > >>
    quindi poi quando arrivo a alla pagina 9 la numerazione varia così:
    << < 2 3 4 5 6 7 8 9 10 11 > >> e così via...
    qui sotto lo scripting che sto usando:
    <?php
    $x_pag = 1;// Righe per pagina
    $pageNum = 1; // Pagina iniziale di default
    // Recupero il numero di pagina corrente.
    if(isset($_GET['page']))
    {
    $pageNum = $_GET['page'];
    }
    // Uso mysql_num_rows per contare le righe presenti
    // all'interno della tabella
    $all_rows = mysql_num_rows(mysql_query("SELECT * FROM curioso"));
    // Tramite una semplice operazione matematica definisco
    // il numero totale di pagine
    $all_pages = ceil($all_rows / $x_pag);
    $self = $_SERVER['PHP_SELF'];
    $nav = '';
    for($page = 1; $page <= $all_pages; $page++)
    {
    if ($page == $pageNum)
    {
    $nav .= " $page ";
    }
    else
    {
    $nav .= " <a href="$self?page=$page">$page</a> ";
    }
    }
    // Calcolo da quale record iniziare
    $first = ($pageNum - 1) * $x_pag;

    // Recupero i record per la pagina corrente...
    // utilizzando LIMIT per partire da $first e contare fino a $x_pag
    $rs = mysql_query("SELECT * FROM curioso c, immagini i WHERE c.id_img = i.id LIMIT $first, $x_pag");
    $nr = mysql_num_rows($rs);
    if ($nr != 0){
    for($x = 0; $x < $nr; $x++){
    $row = mysql_fetch_assoc($rs);
    $immagini = $row['image'];

    // stampo i records
    echo " //istruzioni "

    //creazione dei link next e prev
    // e il link per andare direttamente in ultima pagina
    if ($pageNum > 1)
    {
    $page = $pageNum - 1;
    $prev = " <a href="$self?page=$page">[Precedente]</a> ";

    $first = " <a href="$self?page=1">[Prima Pagina]</a> ";
    }
    else
    {
    $prev = ' ';
    $first = ' ';
    }

    if ($pageNum < $all_pages)
    {
    $page = $pageNum + 1;
    $next = " <a href="$self?page=$page">[Prossima]</a> ";

    $last = " <a href="$self?page=$all_page">[Ultima Pagina]</a> ";
    }
    else
    {
    $next = ' ';
    $last = ' ';
    }
    //Stampa i link di navigazione
    echo "<table border='0' align='center' cellpadding='5' cellspacing='2' class='database'><tr>";
    echo "<td>" . $first . "</td><td>" . $prev . "</td><td>" . $nav . "</td><td>" . $next . "</td><td>". $last . "</td>";
    echo "</tr></table>";
    ?>

    grazie e buone feste!!!!!!!


  • User Attivo

    ancora qui...ho trovato u secondo script per riuscire a far apparire nella paginazione un max di 10 link per volta e ho tentato di metterli insieme in questo modo:
    <?php
    $x_pag = 1;// Righe per pagina
    $pageNum = 1; // Pagina iniziale di default
    // Recupero il numero di pagina corrente.
    if(isset($_GET['page']))
    {
    $pageNum = $_GET['page'];
    }
    // Uso mysql_num_rows per contare le righe presenti
    // all'interno della tabella
    $all_rows = mysql_num_rows(mysql_query("SELECT * FROM venezia z, immagini i WHERE z.img_id = i.id LIMIT 1, 58"));
    // Tramite una semplice operazione matematica definisco
    // il numero totale di pagine
    $all_pages = ceil($all_rows / $x_pag);
    $self = $_SERVER['PHP_SELF'];
    $nav = '';
    for($page = 1; $page <= $all_pages; $page++)
    {
    if ($page == $pageNum)
    {
    $nav .= " $page ";
    }
    else
    {
    $nav .= " <a href="$self?page=$page">$page</a> ";
    }
    }

    // Calcolo da quale record iniziare
    $first = ($pageNum - 1) * $x_pag;
    function pagination_3($all_pages,$pageNum,$webpage){
    //imposto la mia $webpage come parametro formale

    $pagination = "";
    if($all_pages!=1){
    if($pageNum>'1')
    {
    $pagination.="<a href=".$webpage."?page=1><small>prima</small></a>
    <a href=".$webpage."?page=".($page-1).">Prev</a>";
    }

        //Impostiamo il massimo numero di links di partenza da visualizzare nella pagina. 
             $maximum_links = 10; 
    
          //Se sono necessarie meno pagine rispetto al numero massimo 
           if($all_pages<=$maximum_links) 
            { 
               //Il numero massimo di links che occorreranno saranno pari al numero totale di pagine + 1 
                $maximum_links = $all_pages+1; 
            } 
            //Se ne sono necessarie di piu, allora: 
           else{ 
                  //$maximum_links +1 
                  $maximum_links=$maximum_links+1; 
                   if($pageNum>=$maximum_links){ 
                       $maximum_links=$pageNum+1; 
                    } 
              } 
    
        for ($i=1;$i<$maximum_links;$i++) 
               { 
    
                   if($i==$pageNum){ 
                $pagination.="<a>".$i."</a>"; 
            } 
    
            else{ 
                $pagination.= "<a href=".$webpage."?page=".$i.">".$i."</a>"; 
                        } 
        } 
    
            //next e ultima pagina; 
    
        if(($page >="1")&&($pageNum!=$all_pages)){ 
            $pagination.= "<a href=".$webpage."?page=".($pageNum+1).">Next</a> 
                                        <a href=".$webpage."?page=".$all_pages."><small>ultima</small></a>"; 
        } 
    
    } 
    else{ 
        $pagination.=""; 
    } 
    return($pagination); 
    

    }
    //il risultato di questa paginazione è il seguente :
    //prima PREV 1 2 3 4 5 6 7 8 9 10 Next ultima
    echo $pagination . "<br /><br />";
    ?>

    ma nella riga di stampa echo $pagination . "<br /><br />"; mi dà questo errore
    undefined variable: pagination in......
    perchè non funziona????
    grazie