Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 29
  1. #1

    Inizio Programmazione a Classi

    Ciao a tutti, sto cominciando a programmare ad oggetti, e devo dire che comincio a scorgere i grandi vantaggi legati a questo modo di programmare.
    Ho iniziato con un prova creando una classe che estapola dal database determinate informazioni (ora limitato proprio per provare) ma che ci consentirà di togliere le svariate funzioni che utilizzavo prima. Vorrei che guardaste il poco e semplice codice che ho scritto per vedere se è corretta la logica:

    Codice PHP:
    require_once("classe.chiamata.php");
    $oggChiamata = new Chiamata();
    $oggChiamata-> db_host "localhost";
    $oggChiamata-> db_user "username";
    $oggChiamata-> db_password "password";
    $oggChiamata-> db_name "nomedatabase";
    $oggChiamata->Connetti(); 
    Classe:
    Codice PHP:
    <?php
         
    class Chiamata{
        public 
    $db_host;
        public 
    $db_user;
        public 
    $db_password;
        public 
    $db_name;
        private 
    $db;
        private 
    $eseguo;
        private 
    $row;
        private 
    $query "SELECT tblATTIVITA.NomeAttivita, tblATTIVITA.DescrizioneAttivita, tblCITTA.NomeCitta FROM tblATTIVITA, tblCITTA WHERE tblATTIVITA.IDCITTA = tblCITTA.IDCITTA AND tblATTIVITA.IDATTIVITA =1";
        
            function 
    Connetti() {
            
    $this->db mysql_connect($this->db_host$this->db_user$this->db_password) or die ("Errore nella connessione al database numero: ".mysql_errno()." Descrizione: ".mysql_error());
            
    mysql_select_db($this->db_name$this->db) or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");
            
    $this->eseguo mysql_query($this->query,$this->db) or die ("Errore nella query numero: ".mysql_errno()." Descrizione: ".mysql_error());
            
    $this->row mysql_fetch_array($this->eseguo);
            
    print_r($this->row);
            }
         }
    ?>
    Ovviamente l'idATTIVITA sarà specificato attraverso variabile...

    Ora, supponiamo che io non voglia stampare i dati nella funzione come ora ma restituirli alla pagina, vale la regola del return come nelle funzioni normali? E se invece richiamo dalla pagina 1 i dati come row[0], ecc., succede qualcosa?

  2. #2
    certo anche nelle function delle classi (dette METODI DI CLASSE) puoi usare eccome return, quindi la tua funzione Connetit puoi scriverla così

    Codice PHP:
    function Connetti() {
            
    $this->db mysql_connect($this->db_host$this->db_user$this->db_password) or die ("Errore nella connessione al database numero: ".mysql_errno()." Descrizione: ".mysql_error());
            
    mysql_select_db($this->db_name$this->db) or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");
            
    $this->eseguo mysql_query($this->query,$this->db) or die ("Errore nella query numero: ".mysql_errno()." Descrizione: ".mysql_error());
            
    $this->row mysql_fetch_array($this->eseguo);
            return 
    $this->row;
            } 
    così quando la richiami puoi scrivere

    $record = $oggChiamata->Connetti();

    e avere un array, $record, con tutti i campi del record estratto!

  3. #3
    Ok, perfetto.
    Un'altra cosa:
    se io specifico una variabile pubblica contenente l'id del campo da estrarre, poi la dovrei inserire nella query così:
    Codice PHP:
    WHERE IDATTIVITA this-> IDATTIVITA 
    solo che mi da errore sulle virgolette della query "".
    Come posso fare?

  4. #4
    meglio metterla al di fuorid elle virgolette, tipo

    "SELECT * FROM tabella WHERE IDATTIVITA = ".$this->IDATTIVITA

    piccola "perla":

    in una classe usa molto la funzione predefinita __construct che serve ad inizializzare variabili ed array in modo da non dichiararli più in altre funzioni, ad esempio nel tuo caso

    Codice PHP:
    <?php
        
    class Chiamata{
        public 
    $db_host;
        public 
    $db_user;
        public 
    $db_password;
        public 
    $db_name;
        private 
    $db;
        private 
    $eseguo;
        private 
    $row;
        private 
    $query;
        private 
    $array;

        function 
    __construct() {
          
    $this->db_host="localhost";
          
    $this->db_host="database";
          
    $this->db_user="username";
          
    $this->db_password="password";
          
    $this->query "SELECT tblATTIVITA.NomeAttivita, tblATTIVITA.DescrizioneAttivita, tblCITTA.NomeCitta FROM tblATTIVITA, tblCITTA WHERE tblATTIVITA.IDCITTA = tblCITTA.IDCITTA AND tblATTIVITA.IDATTIVITA =1";
          
    $this->array = array('a''b''c''d');
        }
        
            function 
    Connetti() {
            
    $this->db mysql_connect($this->db_host$this->db_user$this->db_password) or die ("Errore nella connessione al database numero: ".mysql_errno()." Descrizione: ".mysql_error());
            
    mysql_select_db($this->db_name$this->db) or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");
            
    $this->eseguo mysql_query($this->query,$this->db) or die ("Errore nella query numero: ".mysql_errno()." Descrizione: ".mysql_error());
            
    $this->row mysql_fetch_array($this->eseguo);
            return 
    $this->row;
            }
        }
    ?>
    vedrai che questo sarà utilissimo nel caso ad esempio di classi ereditate e di classi astratte. allo stessop modo impara bene l'uso anche delle variabili protected perchè nei due casi suddetti sono pressochè indispensabili..

  5. #5
    Avevo provato a metterlo fuori dalle virgolette, ma mi da il seguente errore:

    Parse error: syntax error, unexpected '.', expecting ',' or ';' in /home/gente/public_html/classe.chiamata.php

  6. #6
    la riga dove chiami quella query com'è?

  7. #7
    Codice PHP:
    $this-> query="SELECT tblATTIVITA.NomeAttivita, tblATTIVITA.DescrizioneAttivita, tblCITTA.NomeCitta, tblTIPOATTIVITA.TipoAttivita FROM tblATTIVITA, tblCITTA, tblTIPOATTIVITA WHERE tblATTIVITA.IDCITTA = tblCITTA.IDCITTA AND tblTIPOATTIVITA.idTIPOATTIVITA=tblATTIVITA.idTIPOATTIVITA AND tblATTIVITA.IDATTIVITA =".$this->IDATTIVITA

  8. #8
    ti assicuro che la sintassi è correttissima (spero che non hai messo lo spazio fra $this-> e query...) l'errore non sarà uno o due righe prima?

  9. #9
    Il codice è questo:

    Codice PHP:
         class Chiamata{
        public 
    $IDATTIVITA;
        public 
    $db_host;
        public 
    $db_user;
        public 
    $db_password;
        public 
    $db_name;
        private 
    $db;
        private 
    $eseguo;
        private 
    $row;
        private 
    $query;
        
            function 
    __construct(){
            
    $this->db_host="localhost"
            
    $this->db_user="user"
            
    $this->db_password="password"
            
    $this->db_name="database";     
            
    $this->query="SELECT tblATTIVITA.NomeAttivita, tblATTIVITA.DescrizioneAttivita, tblATTIVITA.VotoCriterio1, tblATTIVITA.VotoCriterio2, tblATTIVITA.VotoCriterio3, tblATTIVITA.VotoCriterio4, tblATTIVITA.EMangiare, tblATTIVITA.EBere, tblATTIVITA.EFumare, tblATTIVITA.EDisabili, tblATTIVITA.EParcheggio, tblATTIVITA.ECani, tblATTIVITA.ECondizionata, tblATTIVITA.ECarte, tblATTIVITA.EWireless, tblATTIVITA.EHostess, tblATTIVITA.ELap, tblATTIVITA.EStrip, tblATTIVITA.EVip, tblATTIVITA.EConferenze, tblATTIVITA.EPiscina, tblATTIVITA.ETennis, tblATTIVITA.EFrigobar, tblATTIVITA.ECassaforte, tblATTIVITA.ETennis, tblATTIVITA.EPalestra, tblATTIVITA.ESpiaggia, tblATTIVITA.EGuardaroba, tblCITTA.NomeCitta, tblTIPOATTIVITA.TipoAttivita,  tblTIPOATTIVITA.NomeCriterio1, tblTIPOATTIVITA.NomeCriterio2, tblTIPOATTIVITA.NomeCriterio3, tblTIPOATTIVITA.NomeCriterio4 FROM tblATTIVITA, tblCITTA, tblTIPOATTIVITA WHERE tblATTIVITA.IDCITTA = tblCITTA.IDCITTA AND tblTIPOATTIVITA.idTIPOATTIVITA=tblATTIVITA.idTIPOATTIVITA AND tblATTIVITA.IDATTIVITA="$this->IDATTIVITA;    
            } 
    Ora l'errore è questo:
    Parse error: syntax error, unexpected T_VARIABLE in /home/gente/public_html/classe.chiamata.php on line 18

  10. #10
    in fondo alla query dopo il doppioapice non c'è il punto...

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.