• User Attivo

    problema include

    Ciao a tutti,
    ho un file "index.php" e un "dati.config.php" (dove ho i parametri per connettersi al database) e quando lo richiamo ```
    include_once(dati.config.php);
    $db=new db($host,$user,$psw,$db_name);

    include_once(dati.config.php);
    class classe{
    public function esegui(){
    $db=new db($host,$user,$psw,$db_name);
    }
    }


  • Moderatore

    Ciao; istanzia la classe e poi passi i parametri che ti occorrono al metodo tipo:

    [php]$classeistanziata->esegui($host,$user,$pass);[/php]

    in modo da poter usare file di config.


  • User Attivo

    Ho provato a fare:

    $db=new db();
    $db->connect($host,$username,$password,$db_name);
    ```ma non funziona lo stesso!

  • User Attivo

    La tua funzione (o metodo, visto che siamo nella OOP) si chiama esegui(), non capisco perchè ti sei riferita ad essa usando connect().
    Dovrai in ogni modo chiamare il tuo metodo con lo stesso nome della classe in modo da renderlo costruttore.

    [PHP]
    class Database {
    function Database($host,$username,$password,$db_name) {
    // Tutto ciò che ti serve per connetterti al db
    }
    }
    [/PHP]

    per connetterti dovrai istanziarla, ovvero

    [PHP]
    // Includi la classe
    $connessione = new Database;
    $connessione->Database("host", "username", "password", "db");
    [/PHP]


  • User Attivo

    Si si ho invertito i nomi ma nel codice avevo usato quelli giusti!
    Comunque è un problema di scope ho scoperto, probabilente perchè usando "include_once(dati.config.php)" più volte (qui sta l'errore...) lo includeva solo una volta considerandolo in ambito locale... Ho risolto usando $GLOBALS:

    $db=new db($GLOBALS['host'],$GLOBALS['user'],$GLOBALS['psw'],$GLOBALS['db_name']);