Pagina 1 di 1

OO e mysql

Inviato: 20/03/2010, 19:26
da BMercer
Mi sto cimentando per la prima volta nella programmazione orientata ad oggetti e subito il primo problema:

Sto cercando di creare una classe che poi venga richiamata in tutte le pagine per le query sql:

Codice: Seleziona tutto

class db {
// informazioni necessarie
public $host = "localhost";   
public $user = "root";
public $pass = "";
public $database = "nomedatabase";
public $dbcon = mysql_connect($this->host,$this->user,$this->pass); ***


// selezioniamo il database interessato
mysql_select_db($this->database, $this->dbcon);

// connessione al database
public function query($query) {
    mysql_query($query, $this->dbcon);
}
 


E mi dà
Parse error: parse error, expecting `','' or `';'' in C:\wamp\www\mind2\includes\common.php on line 8
La linea 8 è quella indicata con 3 asterischi...
Non ho ben capito che problema c'è...

Re: OO e mysql

Inviato: 21/03/2010, 10:05
da Carlo
Non sò esattamente a quale scopo ti servono quelle funzioni, ma non credo che abbia bisogno di farle diventare pubbliche.

Un mio suggerimento, e quello di utilizzare dei "tab", in modo che il codice sià più facile da "leggere".

Questa è la versione corretta:

Codice: Seleziona tutto

<?php

class db {
    var $host = "localhost";   
    var $user = "root";
    var $pass = "";
    var $database = "nomedatabase";
    
    function db() {
        $this->dbcon = @mysql_connect($this->host, $this->user, $this->pass);
        $select_db = @mysql_select_db($this->database, $this->dbcon);
        
        if (!$this->dbcon || !$select_db) {
            die(mysql_error());
        }
    }
    
    function query($query) {
        if (empty($query)) return false;
        
        $result = @mysql_query($query, $this->dbcon);
        
        if (!$result) {
            return false;
        }else{
            return $result;
        }
    }
}

?>
In allegato trovi questo stesso codice ma con i "tab", visto che quando salvo questo messaggio verranno sostituiti con degli spazi.
classe_db.zip

Ora nella pagina in cui ti serve, richiami la classe così (prima però devi includere il file php contenente la classe):

Codice: Seleziona tutto

$db = new db(); 
Appena esegui questo, verrà effettuata la connessione al database. Se si verificheranno degli errori nella connessione, verranno stampati gli errori con mysql_error() e poi terminerà l'esecuzione dello script.

Per eseguire una query:

Codice: Seleziona tutto

$db->query("SELECT * FROM tabella"); 

Re: OO e mysql

Inviato: 21/03/2010, 18:31
da BMercer
Ho cercato in internet ma non riesco a capire cosa sono questi tab di cui parli (@?).
Inoltre l'errore sopra riportato è scomparso senza che io facessi alcuna modifica. Li avevo resi public perchè pensavo fosse un problema della funzione private.

Ora sto ottenendo lo stesso errore in una completamente diversa:

Codice: Seleziona tutto

class login {

    private $login_code == $db->login_code; ***
    
    public function check_me($cookie_code) {
        if ($cookie_code == $login_code){
            echo '<div id="logged"></div>';
        } else {
            header("Location: error.php", true);
        }
    }
}
 
Stesso errore. Da cosa è generato di preciso?
Grazie :)

EDIT: Trovato l'errore nella prima riga della class == va sostiuito con = ...