Location: PHPKode > scripts > DB Layer > db-layer/pglayer.class.php
<?php
/***************************************************************************
 * DbLayer Class - Pglayer.class.inc
 * Features:    Classe di interfaccia con Mysql
 * Platform:    Php 4.1.6 or > & PostegreSql 7.22.xx
 * Author:      hide@address.com
 * Date:        2004-04-28
 * License:     GPL
 ***************************************************************************/

include ("dblayer.class.php");

DEFINE("_MODE","TEST");  //TEST show all error , LOG log in text file all error , NO not show error
DEFINE("_DEFAULTPORT",5432); //default pgsql port
DEFINE("_ADMIN","hide@address.com"); //admin email
DEFINE("_LAYER","pglayer"); //name of layer

class pglayer extends dblayer {

/**
*       Function        error_message
*/
function error_message($msg,$linea=""){
        $this-> error_mask($msg,pg_errormessage(),nd);
}


/*
*       Function:       connect         crea una connessione al database
*/
function connect(){

        //Controllo se username non è definito
        if (!isset($this-> dati["username"]))
                $this -> set_Username("root") ;


        //Controllo se host non è definito
        if (!isset($this-> dati["hostname"]))
                $this -> set_Hostname("localhost") ;

        //Controllo se host non è definito
        if (!isset($this-> dati["password"]))
                $this -> set_Password("") ;

        if ($this->porta == "")
             $this->porta = "5432";

        if (!$this-> link =  pg_connect ("host='".$this -> hostname ."' port=".$this->porta." dbname='".$this->database."' user='".$this -> username."' password='".$this -> password."'")    )
                $this -> error_message("Non posso connettermi al Host: ".$this-> hostname);

}

/*
*       Function:       pconnect         crea una connessione persitente al database
*/
function pconnect(){

        if (!isset($this-> dati["username"]))  //Controllo se username non è definito
                $this -> set_Username("root") ;

        if (!isset($this-> dati["hostname"]))  //Controllo se host non è definito
                $this -> set_Hostname("localhost") ;

        if (!isset($this-> dati["password"]))  //Controllo se host non è definito
                $this -> set_Password("") ;

        if ($this->port == "0")
             $this->port = _DEFAULTPORT;

        if (!$this-> link =  pg_pconnect ("host='".$this -> hostname ."' port=".$this->port." dbname='".$this->database."' user='".$this -> username."' password='".$this -> password."'")    )
                $this -> error_message("Non posso connettermi al Host: ".$this-> hostname);

}


/**
*       Function        query_exec      esegue la query
*       Input:          $query          la query da effettuare
*       OutPut:         return          puntatore sul risultato
*/
function query_exec($query){

        if(!$this -> result = @pg_exec($this->link,$query))
                $this->error_message("Errore nella query: ".$query);

        return $this -> result ;
}

/**
*       Function:       rs_array        restuisce un array con i risulatati della query
*                       $query_id       id della connessione OPTIONAL
*/
function rs_array($query_id=""){

        if($query_id == "")
                $record = @pg_fetch_array($this-> result);
        else
                $record = @pg_fetch_array($query_id);

        return $record;
}

/**
*       Function        exec_result     restituisce i risulati della query
*       Input:          $num            int riga del risultato
*                       $campo          mix record che interessa nomecampo o  indice
*/
function exec_result($num=0,$campo=0){

        if (!$result_query = @pg_result($this -> result ,$num,$campo))
                $this -> error_message("Errore in $result_query");

        return $result_query;
}


/**
*       Function        rs_rows         numero di rige restituite dalla query
*/
function rs_rows(){
        return @pg_numrows($this -> result);
}

/**
*       Function:       free_result     libera i risultati della query
*/
function free_result(){
        return @pgfree_result($this->link);
}


/**
*       Function:       close_connect   chiude la connessione con il database
*/
function close_connect(){
        return @pg_close($this->link);
}

#################################################################################
#PAGINAZIONE                                                                    #
#################################################################################

/**
*       Function        query_exec_pg           esegue la query con la paginazione
*       Input:          $query                  la query da effettuare
*                       $record_per_pagina      risultati da visualizzare per ogni pagina
*       OutPut:         return                  puntatore sul risultato
*/
function query_exec_pg($query,$record_per_pagina='10'){

        if(!$query_db = pg_exec($this->link,$query))
                        $this->error_message("Errore nella query: ".$query);


        $this->totale_record = pg_numrows($query_db);   //calcola il numero totale di record
        $this->record_per_pagina = $record_per_pagina;  //$this->start = $start;


        if(!isset($_REQUEST['start'])  ) //se non definito setta start 0
                $this->start = 0  ;
        else
                $this->start = $_REQUEST['start'];


               $this->query_exec($query." limit ".$this->record_per_pagina." , ".$this->start);

        return $this->totale_record;


}

/**
*       Function:       Current_page    pagina corrente
*       Output;         this->pag_corrente
*/
function current_page(){
         $this->pag_corrente = @ceil(($this->start/$this->record_per_pagina)+1);
        return $this->pag_corrente;
}

/**
*       Function:       NumberPage      nomero totale delle pagine
*       OutPut:         $this->num_pagine
*/
function number_page(){
        $this->num_pagine = @ceil(($this->totale_record)/$this->record_per_pagina) ;
        return $this->num_pagine;
}

/**
*       Function:       next_page       visulizza la prossima pagina di risultati
*       Input:          $etichetta      label of href
*/
function next_page($etichetta="next page"){

        $pag_succ = ($this->start+$this->record_per_pagina);

        $string = "<a href=\"".$_SERVER["PHP_SELF"]."?start=".$pag_succ.$this->qstring."\">".$etichetta."</a>";

        if(($this->current_page()) < ($this->number_page()))
        return $string;
}

/**
*       Function:       previous_page   visulizza la pagina dei risultati precendenti
*       Input:          $etichetta      label of href
*/
function previous_page($etichetta="previous page"){

        $pag_prec = (($this->start)-($this->record_per_pagina));
        $string = "<a href=\"".$_SERVER["PHP_SELF"]."?start=".$pag_prec.$this->qstring."\">$etichetta</a>";

        if(($this->current_page()) >= 2)
        return $string;
}

/**
*       Function:       all_page        visualizza tutti inumeri delle pagine
*/
function all_page(){

        $string = "";

        $num_pagine = $this->number_page();

        $pagina_corrente = $this->current_page();

        if ($num_pagine >= 10  )
                $numeri_visualizzati = 10 ;
        else
                $numeri_visualizzati = $num_pagine;

        if ($pagina_corrente >= 10)
                $pagine = ($pagina_corrente - 5 );
        else
                $pagine = 0;

        $numeri_visualizzati = ($pagina_corrente + 4);

        if  ($pagina_corrente == 1)
                $numeri_visualizzati = 10;

        if ($pagina_corrente > 6)
                $pagine = ($pagina_corrente - 5);

        if ($numeri_visualizzati > $num_pagine)
                $numeri_visualizzati =  $num_pagine;

        for ($pagine ; $pagine < $numeri_visualizzati ; $pagine++)
        {
                $record_per_pagina = $this->record_per_pagina ;

                if (($pagine+1) ==  $pagina_corrente )
                        $string .= " [".($pagine+1)."]";
                else
                        $string .= " <a href=\"".$_SERVER["PHP_SELF"]."?start=".($pagine*$record_per_pagina).$this->qstring."\">[".($pagine+1)."]</a>";

        }

        return $string;
}

}//fine pglayer
//TEST
//PostgreSQL 7.2.1/4.2.2
?>
Return current item: DB Layer