Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Paginazione 1 2 3

  1. #1

    Paginazione 1 2 3

    Ciao a tutti...io ho questa paginazione fatta con la programmazione a oggetti:

    Codice PHP:
    <?php
    //la classe per il paging
    class Paging {
        private 
    $totPag//Totale Pagine nella tabella
        
    private $pagCorr//Pagina corrente
        
    private $totRighe//Totale righe nella tabella
        
    private $righePerPagina//Numero di righe per pagina da ottenere

        //Facilita l'accesso all'array dell'intervallo
        
    const kIntervalloInizio='inizio';
        const 
    kIntervalloLunghezza='lunghezza';

        
    // Il costruttore chiede quale sia la pagina corrente, il totale delle
        // righe in tabella e quante righe per pagina interessano
        
    public function __construct($pagCorr,$totRighe,$righePerPagina) {
            
    $this->pagCorr=$pagCorr;
            
    $this->totRighe=$totRighe;
            
    $this->righePerPagina=$righePerPagina;
            
    $this->totPag=$this->contaPagine($totRighe$righePerPagina);}

        
    // Consente di modificare la pagina corrente con un'altra dopo
        // l'esecuzione del construct
        
    public function vaiAPagina($pagina){
            if(
    $pagina==self::kUltimaPagina)
                
    $this->pagCorr=$this->totPag;
            elseif(
    is_numeric($pagina) and $pagina>and $pagina<$this->totPag)
                
    $this->pagCorr=$pagina;
            else
                
    $this->pagCorr=1;
        }

        
    //Indica in quante pagine viene divisa la tabella
        
    public function contaPagine($totRighe$righePerPagina) {
            return 
    ceil($totRighe $righePerPagina);
        }

        
    //Restituisce un array indicante la posizione del primo record e quante
        //righe occorre scorrere
        
    public function dammiIntervallo() {
            return array(
                
    self::kIntervalloInizio => ($this->pagCorr-1) * $this->righePerPagina,
                
    self::kIntervalloLunghezza => $this->righePerPagina
            
    );
        }

        
    //Ritorna il numero per la prossima pagina
        
    public function prossimaPagina(){
            if(
    $this->totPag==0)
                    return 
    1;
            return (
    $this->pagCorr>=$this->totPag)?$this->totPag:$this->pagCorr+1;
        }

        
    //Ritorna il numero per la pagina precedente
        
    public function precedentePagina(){
            return (
    $this->pagCorr<=1)?1:$this->pagCorr-1;
        }

    }

    //PREPARA L'OGGETTO PAGING E LO RITORNA
    function CostruisciOggettoPaging($sql) {
        if (!isset(
    $_GET['p']))
        
    $pagCorr 1;
        else
        
    $pagCorr=$_GET['p'];
        
    $res mysql_query($sql) or die('Err3');
        
    $totRighe mysql_num_rows($res);
        
    mysql_free_result($res);
        
    $righePerPagina 25;
        return new 
    Paging($pagCorr$totRighe$righePerPagina);}

    //costruiamo la tabella per posizionare le squadre
    function CostruisciTabella($p,$sql) {
        
    $inter=$p->dammiIntervallo();
        
    $res mysql_query("$sql limit {$inter[Paging::kIntervalloInizio]},{$inter[Paging::kIntervalloLunghezza]}") or die('Err4');
        
    ob_start();
        
    //Definizione della tabella
        
    echo <<<END
    <table cellspacing="0" cellpadding="5" rules="all" width="540px" border="0" style="border-color:#CCCCFF;">
        <tr>
            <th width="150px">Squadra</th>
            <th width="150px">Manager</th>
            <th width="60px">Punti</th>
            <th width="60px">Vittorie</th>
            <th width="60px">Pareggi</th>
            <th width="60px">Sconfitte</th>
       </tr>
    END;
        while (
    $row mysql_fetch_assoc($res)) {
        
    $costo number_format($row['costo'], "0""""."); 
        echo <<<END
        <tr>
            <th width="150px">[url="squadra.php?id=
    {$row['team']}"]{$row['team']}[/url]</th>
            <th width="150px">[url="squadra.php?id=
    {$row['team']}"]{$row['manager']}[/url]</th>
            <th width="60px">
    {$row['punti']}</th>
            <th width="60px">
    {$row['vittorie']}</th>
            <th width="60px">
    {$row['pareggi']}</th>
            <th width="60px">
    {$row['sconfitte']}</th>
        </tr>
    END;
        }

    //Link di navigazione
    echo <<<END
    <th colspan="2">
    [url="
    {$_SERVER['PHP_SELF']}?p={$p->precedentePagina()}"]Indietro[/url] |
    [url="
    {$_SERVER['PHP_SELF']}?p={$p->prossimaPagina()}"]Avanti[/url]
    </th>
    </table>
    END;
    mysql_free_result($res);
    return 
    ob_get_clean();}

    //connessione al database
    include('../connect.php');

    //estrazione dei giocatori
    $sql="SELECT * FROM SQUADRA_dati ORDER BY punti DESC";

    $p CostruisciOggettoPaging($sql);
    $tabella_dati CostruisciTabella($p,$sql);

    mysql_close($conn);

    echo 
    $tabella_dati;
    ?>
    Come potete vedere verrano stampati i link di navigazione "Indietro" "Avanti"...come posso modificare il mio script affinchè vengano mostrate il numero delle pagine 1,2,3 ecc.

    Grazie per l'aiuto

  2. #2
    Ho letto la guida presente qui su html.it e trovato questo script:
    Codice PHP:
    <?php2]

    $paginazione "Pagine totali: " $tot_pages "
    ["
    ;
    for(
    $i 1$i <= $tot_pages$i++) {
    if(
    $i == $current_page) {
    $paginazione .= $i " ";
    } else {
    $paginazione .= "<a href=\"?page=$i\" title=\"Vai alla pagina $i\">$i</a> ";
    }
    }
    $paginazione .= "]";

    ?>
    Ma a cosa servono quelle ["; e "]" e come posso integrarlo al mio caso??
    Grazie per l'attenzione

  3. #3
    Ho riprovato ancora,ma non riesco a mettere insieme i 2 script

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    777
    ciao dami
    io uso questo codice per la paginazione..
    Codice PHP:
    <?

    $messaggi 
    10;
    $pagine ceil $tot $messaggi );
    $num=1;
    // estraggo i record
    if ( ! isset ( $_GET['pag'] ) || (int)$_GET['pag'] < ) {
      
    $_GET['pag'] = $num;
    }

    if ( isset ( 
    $_GET['pag'] ) && (int)$_GET['pag'] > $pagine ) {
      
    $_GET['pag'] = $pagine;
    }

    for ( 
    $i=1$i <= $pagine;$i++ ) {
    if(
    $i == (int)$_GET['pag']) {
    $pg[] = "[b]" $i "[/b] ";
    }
    else{
    $pg[] ="<a href=\"pagina.php?pag=" $i "\">" $i "</a> ";
    }
    }


    $paginazione implode(" - ",$pg);

    ?>
    puoi richiamare la paginazione nel punto della pagina che vuoi con
    echo $paginazione

    ti rende in grassetto la pagina corrente
    $messaggi è il numero di occorrenze che tu intendi visualizzare per pagina...se la paginazione si riferisce a contenuti di db
    $tot sono il numero di record del db....

    la riga di query dovrà contenere
    $query= SELect bla bla bla LIMIT " . ( ( (int)$_GET['pag'] - 1 ) * $messaggi ) . "," . $messaggi;
    nel bla bla metti quelloc he vuoi
    nel comando implode puoi mettere il separatore tra i numeri che vuoi...io ho messo - ma puoi mettere quello che vuoi

    cmq per rispondere a cosa servono le parentesi quadrate dell'esempio che hai postato...sono solo un modo per racchiudere i numeri all'interno di esse..niente più

  5. #5
    Grazie mille per l'aiuto e per la spiegazione

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    777
    FUNZIONA ORA?

  7. #7
    Si,ho risolto tutto grazie ancora

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    777
    prego

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.