Location: PHPKode > scripts > DB Layer > db-layer/mylayer.class.php
<?php
/***************************************************************************
 * DbLayer Class - Mylayer.class.inc
 * Features:    Classe di interfaccia con Mysql
 * Platform:    Php 4.1.6 or > & MySql 3.22 or >
 * 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",3306); //Default mysql port
DEFINE("_ADMIN","hide@address.com"); //admin email
DEFINE("_LAYER","mylayer"); //name of layer

class mylayer extends dblayer {

function error_message($msg,$linea=""){
        $this-> error_mask($msg,mysql_error(),mysql_errno());
}



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

        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")      //se porta è definita
                $this->hostname = $this->hostname.":".$this->port;

        if (!$this-> link = @mysql_connect($this -> hostname , $this -> username , $this -> password ))
                $this -> error_message("Non posso connettermi al Host: ".$this-> hostname);

        $this-> select_db($this->database);
}


/*
*       Function:       pconnect         crea una connessione permanente 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 password non definita
                $this -> set_Password("") ;

        if($this->port !="0")      //se porta è definita
                $this->hostname = $this->hostname.":".$this->port;

        if (!$this-> link = @mysql_pconnect($this -> hostname , $this -> username , $this -> password ))
                $this -> error_message("Non posso connettermi al Host: ".$this-> hostname);

       $this-> select_db($this->database);
}


/**
*       Function:       select_db       seleziona il database
*       Input:          database        nome del database
*/
function select_db($database){

        if (@!mysql_select_db($database,$this -> link))
                $this->error_message("Impossibile collegarsi al db: ".$database);

}


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

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

        return $this -> result ;
}


/**
*       Function:       rs_array        restuisce un array con i risultati della query
*                       [query_id]      int - id della connessione OPTIONAL
*/
function rs_array($query_id=""){

        if($query_id == "")
                $record = @mysql_fetch_array($this-> result);
        else
                $record = @mysql_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 = @mysql_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 @mysql_num_rows($this -> result) ;
}

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


/**
*       Function:       close_connect   chiude la connessione con il database
*/
function close_connect(){
        return @mysql_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'){


        $query_db = @mysql_query($query,$this->link);


        $this->totale_record = @mysql_num_rows($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->start , $this->record_per_pagina");

}



/**
*       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 i numeri delle pagine
*/
function all_page(){

        $this->qstring = ""; //da controllare se annulla la stringa
        $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;
}

/**
*       Function        affetcted_rows          the number of rows affected by the last INSERT, UPDATE or DELETE
*/
function affected_rows(){
        return @mysql_affected_rows();
}

#################################################################################
#FUNCTION NON TESTED                                                            #
#################################################################################

//Visualizza risultati tramite oggetti
function fetch_object($query_id=""){

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

        return $record;
}

function fetch_row($query_id=""){

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

        return $record;
}



//Restituisce l'ultimo id inserito
function insert_id(){
        return @mysql_insert_id($this -> link);
}


####################################################################################
}//FINE mylayer
//TEST
//MySQL3.23.58/4.2.2
//MySQL 4.0.18/4.3.3
?>
Return current item: DB Layer