• User Attivo

    [Script] Classe per l'impaginazione

    Ciao a tutti!
    Per esigenza su un mio script, ho dovuto creare una semplice classe per l'impaginazione, ed ho pensato che forse potrebbe esservi utile.
    Ecco la classe:
    class.pagination.php

    [php]<?php
    //CLASSE DI IMPAGINAZIONE
    class impaginazione{
    public $menu;
    public $num_per_page;
    public $ceil;
    public $from;
    public $query;
    public $rows;
    function createlink($page,$num_per_page,$query,$rows,$url){
    $this->page = $page;
    $this->num_per_page = $num_per_page;
    $this->query = $query;
    $this->rows = $rows;
    $this->url = $url;

    $this->ceil = ceil($this->rows/$this->num_per_page);
    $this->from = (($this->page * $this->num_per_page) - $this->num_per_page);
    $this->menu = "";

    if($this->page > 1)
    {
    $this->menu .= " <a href="".$this->url."&page=".($page-1)."">Indietro</a> ";
    }

    for($i = 1; $i <= $this->ceil; $i++)
    {
    if(($this->page) == $i)
    {
    $this->menu .= $i;
    }
    else
    {
    $this->menu .= " <a href="".$this->url."&page=".$i."">$i</a> ";
    }
    }
    if($this->page < $this->ceil)
    {
    $this->menu .= " <a href="".$this->url."&page=".($page+1)."">Avanti</a> ";
    }
    $this->query .= " LIMIT ".$this->from.",".$this->num_per_page."";//COMPLETA LA QUERY
    }
    }
    ?>[/php]Ecco l'utilizzo:

    [php]
    <?php
    ////////////////////////////
    #IMPAGINAZIONE#
    ###########################
    require "class.pagination.php";
    $page = (!isset($_GET['page'])) ? 1 : $_GET['page'];//controlli necessari
    $page =($page == 0) ? 1 : $_GET['page'];//controlli necessari
    #Qui eseguiamo la query che recupera i dati
    #Ricordate che la query non deve contenere il carattere LIMIT
    $query_init ="SELECT * FROM snf_topics WHERE snf_t_forumid = '" . $_GET['fs'] . "' ORDER BY snf_t_id DESC";//La nostra query(in questo caso la mia)
    $action = mysql_query($query_init);//ESEGUE
    $rows = mysql_num_rows($query_init);//Il numero di colonne, dato importantissimo
    $num_per_page = 10;//quanti articoli vogliamo per ogni pagina

    $pag = new impaginazione();//creo nuova istanza
    $link = "show.php?fs=".$_GET['fs'];//La pagina su cui lo script deve agire(es index.php?var1=1 diventerà index.php?var1=1&page=1)

    $pag->createlink($page,$num_per_page,$query_init,$rows,$link);

    $query = mysql_query($pag->query);
    $menu = $pag->menu;
    while($row = mysql_fetch_array($query)){
    ....
    }
    echo $menu;
    //Formato: Indietro 1 2 3 4 Avanti

    ?>
    [/php]Spero di essere stato utile


  • User

    Appena posso la provo! :wink3:


  • User Newbie

    Ciao... Lo script non funziona!! Mi dà errore nella creazione della funzione... Non esiste qualche script simile a questo ma più semplice?