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

    Problema con il passaggio dati da una funzione all'altra di due classi differenti

    Ciao a tutti,
    sto cercando di costruire una pagina dinamica nella quale ho un menu utente che veiene popolato dinamicamente in base appunto all'utente che effettua il login. Visto che sto approfondendo la programmazione ad oggetti, ho pensato di sviluppare seguendo questa logica utilizzando PHP. In pratica ho costruito una classe, che richiama molto la struttura di un Bean Java, che definisce la struttura dell'oggetto Utente. quest'oggetto viene popolato da una funzione che come input ha appunto il nome dell'utente che si è appena loggato(che passo da Sessione). L'autenticazione, la connessione al db e la risposta vanno bene, ma il bean non viene popolato. Vi posto il codice:

    classe User:
    Codice PHP:
    <?php
     
    class User
    {
        public 
    $nome;
        public 
    $cognome;
        public 
    $username;
        public 
    $password;
        public 
    $ruolo;
        public 
    $lastAccess;
        public 
    $id;
        
        public function 
    getId()
        {
            return 
    $this->id;
        }
        
        public function 
    setId($iduser)
        {
            
    $id $iduser;
        }
        
        public function 
    getName()
        {
            return 
    $this->nome;
        }
        
        public function 
    setName($nameUser)
        {
            
    $nome $nameUser;
        }
        
        public function 
    getCognome()
        {
            return 
    $this->cognome;
        }
        
        public function 
    setCognome($cognomeUser)
        {
            
    $cognome $cognomeUser;
        }
        
        public function 
    getUsername()
        {
            return 
    $this->username;
        }

        public function 
    setUsername($usernameUser)
        {
            
    $username $usernameUser;
        }
        
        public function 
    getPassword()
        {
            return 
    $this->password;
        }
        
        public function 
    setPassword($passwordUser)
        {
            
    $password $passwordUser;
        }
        
        public function 
    getLastAccess()
        {
            return 
    $this->lastAccess;
        }
        
        public function 
    setLastAccess($lastAccessUser)
        {
            
    $lastAccess $lastAccessUser;
        }
        
        public function 
    getRuolo()
        {
            return 
    $this->ruolo;
        }
        
        public function 
    setRuolo($ruoloUser)
        {
            
    $ruolo $ruoloUser;
        }
    }

    ?>
    Classe InteractionDb
    Codice PHP:
    <?php
    include 'config_root.php';


    class 
    InteractionDb
    {
        
        public function 
    getDataFromDb($nameUser)
        {
            
    $user = new  User();
            
    $query  "SELECT * FROM database_tss.logintss WHERE username='$nameUser'";
            
    $result mysql_query($query);
            if(
    $result)
            {
                
                while(
    $row mysql_fetch_array($result,MYSQL_BOTH))
                {
                    
    $user->setName($row[1]);
                    
    $user->setCognome($row[2]);
                    
    $user->setRuolo($row[3]);
                    
    $user->setUsername($row[4]);
                    
    $user->setPassword($row[5]);
                    
    $user->setLastAccess($row[6]);
                    
                }
                
            }
            else
            {
                die (
    'Errore di selezione DataBase :'.mysql_error());
            }
            return 
    $user;
        }
    }

    ?>
    qui invece è dove vengono utilizzate le funzioni:
    Codice PHP:

    function getDataUtente($name)
    {
        
    $util = new Utility();
        
    $interaction = new InteractionDb();
        
    $user = new User();
        
    $user $interaction->getDataFromDb($name);
        
    $util->stampaMenu($user);

    Il problema è all'interno del while: la query và a buon fine infatti se faccio un echo delle singole row all'interno del while ho i valori, ma il "bean" non viene popolato. Grazie a tutti, e chiedo scusa se la domanda può sembrare banale, ma sonon alle prime armi con PHP e con la programmazione in generale
    Giuly Sei La Mia Vita

  2. #2
    Ho risolto da solo. Ho aggiunto $this-> nei metodi setter della classe User.
    In ogni caso grazie a tutti
    Giuly Sei La Mia Vita

  3. #3
    Utente di HTML.it L'avatar di Secta
    Registrato dal
    May 2002
    Messaggi
    365
    Se il tuo problema è che ad un

    Codice PHP:
    echo $user->getNome(); 
    non ti stampa nulla, il motivo è che hai sbagliato a valorizzare le proprietà della classe User appunto. Nei vari setter sostituisci

    Codice PHP:
    $nome $nameUser
    con

    Codice PHP:
    $this->$nome $nameUser
    Inoltre, tu hai

    Codice PHP:
        $user = new User(); 
        
    $user $interaction->getDataFromDb($name); 
    ma getDataFromDb($name) ti restituisce a sua volta un oggetto User
    "Dai diamanti non nasce niente, dal letame nascon fiori."
    Fabrizio De Andrè

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.