Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it L'avatar di the-bit
    Registrato dal
    Feb 2005
    Messaggi
    543

    problema ODBC@localhost

    Salve a tutti,
    ho creato una classe "A" (a oggetti) che si occupa di leggere dei dati da un DB ed ha alcune funzioni che restituiscono alcuni valori presi dal database e fin qui tutto bene.
    Il problema sorge quando richiamo questa classe all'interno di un'altra classe "B" per usare una determinata funzione.
    L'errore è qualcosa del tipo
    Warning: ODBC@localhost...ecc...ecc
    e lo risolvo solo se estendo la classe "A" dentro "B".
    C'è un modo per far funzionare la funzione senza dover necessariamente estendere la classe?
    Grazie.
    "To iterate is human, to recurse, divine." (R.(Heller))

  2. #2
    e come mai se la usi da B non funziona questa classe? come la stai utilizzando?
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3
    Utente di HTML.it L'avatar di the-bit
    Registrato dal
    Feb 2005
    Messaggi
    543
    Allora, mi spiego meglio:
    Classe A
    Codice PHP:
    class A
    {
    public function 
    __construct()
    {
        
    $this->dbConnect();
    }
            
    public function 
    dbConnect()
    {
        
    $this->conn mysql_connect($this->hostDB$this->userDB$this->passwordDB);
        
    mysql_select_db($this->db$this->conn);
        return 
    TRUE;
    }

    public function 
    getField($field)
    {
        
    $sql "SELECT * FROM nome_campo WHERE id=$field";
        
    $ris mysql_query($sql$this->conn);
        if(
    mysql_num_rows($ris))
        {
            
    $row mysql_fetch_array($ris);
            echo 
    $row['nome'];
        }
    }

    se chiamo quindi questa funzione nella classe B
    Classe B
    Codice PHP:
    class B
    {
    include 
    'A.php';
    $obj = new A();
    $obj->getField("nome_campo");

    mi da l'errore di cui sopra.
    Se invece estendo la classe B come
    class B extends A
    allora tutto funge.
    "To iterate is human, to recurse, divine." (R.(Heller))

  4. #4
    Codice PHP:
    class 

    include 
    'A.php'
    $obj = new A(); 
    $obj->getField("nome_campo"); 

    ma che è sta cosa?
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  5. #5
    Utente di HTML.it L'avatar di the-bit
    Registrato dal
    Feb 2005
    Messaggi
    543
    Come che è sta cosa???
    Sto richiamando uan funzione contenuto in un'altra classe.
    Poichè ha attributo "public" è visibile da ogni altra classe che la implementa.

    EDIT: ovviamente la classe B ha anche altre funzioni che la classe A non ha. Non le ho scritte per fare prima.
    "To iterate is human, to recurse, divine." (R.(Heller))

  6. #6
    1) Così ad occhio manca la proprietà conn della classe A.

    2) Nella classe B primadi utilizzare il metodo getField() dovresti usare il metodo dbConnect(), che giustamente restituisce la risorsa di connessione che memorizzi nella proprietà conn.

  7. #7
    Originariamente inviato da the-bit
    Come che è sta cosa???
    Sto richiamando uan funzione contenuto in un'altra classe.
    Poichè ha attributo "public" è visibile da ogni altra classe che la implementa.

    EDIT: ovviamente la classe B ha anche altre funzioni che la classe A non ha. Non le ho scritte per fare prima.
    ma veramente il codice l'hai scritto così o ti sei sbagliato a riportarlo??

    Codice PHP:

    include 'A.php';

    class 
    B{

    public function 
    test(){

    $a = new A();
    echo 
    $a->getField("nome_campo");

    }

    }

    $b = new B();
    $b->test(); 
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  8. #8
    Utente di HTML.it L'avatar di the-bit
    Registrato dal
    Feb 2005
    Messaggi
    543
    Ciao,
    in realtà nella classe A avevo già definito un metodo costruttore
    Codice PHP:
            public function __construct()
            {
                
    $this->dbConnect();
            } 
    ma mi sono dimenticato di metterlo nell'esempio che ho postato; perciò istanziando la classe A (con new A() ) ho giò fatto la chiamata al DB ma non va.
    "To iterate is human, to recurse, divine." (R.(Heller))

  9. #9
    E la proprietà conn?

  10. #10
    Utente di HTML.it L'avatar di the-bit
    Registrato dal
    Feb 2005
    Messaggi
    543
    All'interno della funzione della classe B ho scritto
    Codice PHP:
        include 'class_A.php';
        
    $conn;
        
    $obj = new A();
        
    $obj->getField('nome_campo'); 
    ma mi appaiono una lista di errori del genere

    Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'ODBC'@'localhost' (using password: NO)

    Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established

    Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'ODBC'@'localhost' (using password: NO)

    ecc...eccc...
    "To iterate is human, to recurse, divine." (R.(Heller))

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.