• Super User

    costante nome del database e classi

    Ciao a tutti,
    premetto che non sono molto esperto di progammazione a oggetti, sto tentando di creare una piccola classe personalizzata per poter eseguire connessioni al database e query senza ogni volta dover scrivere codice e ho fatto cosi:

    ho creato il file config in cui ho messo le costanti che uso cioe:

    <?
     define(HOSTNAME,'localhost');
     define(USER,'root');
     define(PASS,'miapass');
     define(DBNAME.'database');
     define(URL,'http://localhost:8888/');
     define(ROOT_PATH,'antonio');
     define(URL_PATH,URL.ROOT_PATH);
    ?>
    

    poi il file class.php :

    
    <?
    /*classe per la connessione e query a un database
    */
    class connessione
    {
    //Costruttore della classe
           function connessione()
       {
         $this->dbhost = HOSTNAME;
         $this->dbuser = USER;
         $this->dbpass = PASS;
         $this->dbname = "miodb";
         $this->results = mysql_query($this->query);
         $this->row;
       }
    // creo la funzione per connettermi al server e seleziono il database
           function connetti()
       {
       $this->conn = mysql_pconnect($this->host,$this->dbuser,$this->dbpass) or die("Errore nella connessione");
               
       $this->db = mysql_select_db($this->dbname,$this->conn) or die("Errore nella selezione del database");  
       }
    
    // eseguo la query e creo l'array che contiene  risultati
          function arrayquery($query)
      {  
        $this->results = mysql_query($this->query) or die("Errore di connessione".mysql_error());
        $this->row = mysql_fetch_array($this->results);
      }
    // chiudo la connessione al database
       function closedb()
       {
         $this->connect();
         mysql_close($this->conn);
       }  
    }
    
    ?>
    

    messo cosi mi funziona perfettamente, il problema pero e che la variabile con il nome del database devo impostarla nel file class, se per esempio modifico la riga :
    $this->dbname = "miodb";
    con
    $this->dbname = DBNAME;

    Ricevo errore nella selezione del database, in pratica non posso usare una costante per il nome del database, e normale oppure sono io che sbaglio?

    Un altra curiosita avendo usando il metodo mysql_pconnect , devo anceh chiudere la connessione oppure non cene bisogno?

    Naturalmente suggerimenti su come modificare la classe e migliorarla sono ben accetti, grazie.
    🙂


  • User

    Ti sei dimenticato di racchiudere tra apici gli identificatori delle costanti nelle define. Fai così

    define('HOSTNAME','localhost');

    e lo stesso per le altre.

    Ti consiglio di mettere il livello di segnalazione degli errori al massimo quando testi uno script, così ricevi dei Notice per queste cose.