Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    funzioni per essere indipendenti da database

    ciao a tutti

    sto scrivendo alcune piccole applicazioni in php + db (dove db=mysql o postgresql) vorrei avere un buon grado di indipendenza rispetto al database utilizzato, per questo pensavo di fare delle funzioni da mettere in una classe x la gestione del database, ad esempio se io volessi fare una funzione che gestisce le query:

    Codice PHP:
    class database{
    /*
    costruttori...connessioni...ecc ecc
    */
    var $tipo_database;

    function 
    esegui_query($query){

    switch(
    $tipo_database){
    case 
    'mysql':
    return 
    mysql_query($query);break;
    case 
    'postgresql':
    return 
    pg_query($query);break;
    }
    }



    e stessa cosa x le varie
    fetch_rows,fetch_array ecc ecc

    è possibile?
    "durante i primi 5 miuti di pioggia nel bosco c'è ancora asciutto, poi quando smetterà di piovere nel bosco cadranno gocce per 5 minuti.....la natura ha un'ottima memoria..."

    http://www.kumbe.it

  2. #2
    a mio avviso sbagli concettualmente

    un grosso vantaggio delle classi è proprio questo

    crei due file:
    -mysql_inc.php
    -pgsql_inc.php
    ecc ecc. per tutti i database che vuoi integrare nel tuo script

    poi metti una variabile di configurazione
    $esempio = 'dir/mysql_inc.php';

    e quando includi nei tuoi file la classe lo fai con
    include($esempio);

    in questo modo se le classi hanno identici metodi e proprietà basta modificare una variabile di configurazione per cambiare database

    in questo modo puoi anche implementare con php (nella classe) comandi non supportati da tutti i database come LIMIT che non esiste su access

    spero di essere stato chiaro

  3. #3
    ciao

    ti ringrazio x la risposta, ma anche io cambiando il valore della variabile $tipo_database automaticamente cambio tutto , perchè in ogni metodo ci sarà uno switch su questo attributo...o no?
    "durante i primi 5 miuti di pioggia nel bosco c'è ancora asciutto, poi quando smetterà di piovere nel bosco cadranno gocce per 5 minuti.....la natura ha un'ottima memoria..."

    http://www.kumbe.it

  4. #4
    [supersaibal]Originariamente inviato da nik600
    ciao

    ti ringrazio x la risposta, ma anche io cambiando il valore della variabile $tipo_database automaticamente cambio tutto , perchè in ogni metodo ci sarà uno switch su questo attributo...o no? [/supersaibal]
    si ma hai codice che non serve a niente incluso in tutte le pagine del tuo progetto e questo sarebbe bene evitarlo.
    se devi farlo per 10 db hai una classe dove solo una riga su 10 (circa) è utile allo script.
    Sprechi memoria per niente e poi potresti avere degli errori nel controllo del tipo di database, anche se sono controlli banali l'errore è sempre in agguato, nell'altro modo hai file completamente indipendenti e solo quello giusto viene incluso

  5. #5
    ho capito quello che vuoi dire

    ok ma se mettiamo un attimo da parte il modo con cui gestisco il problema, il fatto di eseguire funzioni gia fatte come mysq_query, mysqli_query, pq_query, mysql_fetch_rows, mysql_num_rows, ecc ecc in funzioni mi e ritornarne il valore non comporta nessuna controindicazione?

    grazie nik
    "durante i primi 5 miuti di pioggia nel bosco c'è ancora asciutto, poi quando smetterà di piovere nel bosco cadranno gocce per 5 minuti.....la natura ha un'ottima memoria..."

    http://www.kumbe.it

  6. #6
    devi prevedere che i tuoi metodi restituiscano sempre valori uguali

  7. #7
    posto una primissima versione della classe che ho fatto:

    Codice PHP:
    <?
    class Database{

    var 
    $nome_db;
    var 
    $host;
    var 
    $user;
    var 
    $password;


    //connessione
    var $conn;

    //tipo di database
    var $tipo_database;

    //database
    var $db;

    /*
    costruttore
    */
    function Database($tipo_db,$nome_db,$host,$user,$password){

    $this->tipo_database    =$tipo_db;
    $this->nome_db        =$nome_db;
    $this->host                =$host;
    $this->user                =$user;
    $this->password        =$password;

    $this->crea_connessione();
    }

    /*
    si connette al database
    */
    function crea_connessione(){

        switch(
    $this->tipo_database){

        case 
    'mysql':
                    
    $this->conn    =mysql_connect($this->host,$this->user,$this->password);
                    
    $this->db        =mysql_select_db($this->nome_db,$this->conn);        
                    break;

        case 
    'postgresql':
                    
    $stringa_connessione    ="host=$this->host dbname=$this->nome_db user=$this->user password=$this->password";
                    
    $this->conn            =pg_connect($stringa_connessione);
                    break;

        default:;
        }

    }

    /*
    funzione che esegue una query
    */
    function esegui_query($query){
        
        switch(
    $this->tipo_database){

        case 
    'mysql':
                    return 
    mysql_query($query);break;

        case 
    'postgresql':
                    return 
    pg_query($query);break;

        default:;
        }
    }

    /*
    funzione che estrae il primo record dal risultato di una query
    */

    function estrai_record($risultato_query){

        switch(
    $this->tipo_database){

        case 
    'mysql':
                    return 
    mysql_fetch_array($risultato_query);break;

        case 
    'postgresql':
                    return 
    pg_fetch_array($risultato_query);break;

        default:;
        }

    }

    }
    ?>
    ecco il codice con cui l'ho testata

    come vedete basta commentare una o l'altra riga x passare da un database all'altro
    Codice PHP:
    <?
    include ("database.php");

    //$d=new Database("postgresql","prova","localhost","postgres","postgres");
    $d=new Database("mysql","prova","localhost","root","nicola");

    echo 
    "ciao

    "
    ;

    $risultato=$d->esegui_query("select * from indirizzi");

    while(
    $rs=$d->estrai_record($risultato)){
    echo 
    $rs["nome"]." ".$rs["cognome"]."
    "
    ;
    }
    ?>
    "durante i primi 5 miuti di pioggia nel bosco c'è ancora asciutto, poi quando smetterà di piovere nel bosco cadranno gocce per 5 minuti.....la natura ha un'ottima memoria..."

    http://www.kumbe.it

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 © 2025 vBulletin Solutions, Inc. All rights reserved.