Come da titolo......
Programmo php da un po di anni, ma mai mi son cimentato con lo scrivere una classe, al massimo usavo quelle già consolidate e trovate in rete.
Lavorando il tempo per lo studio e la sperimentazione è sempre pochissimo, così durante le vacanze estive mi son messo su ed ho studiato un pochino, arrivando a creare la mia prima classe, ovviamente, per gestire lo scambio dati col DB mysql (visto che è la cosa che piu spesso serve)
Ora vorrei solo da un lato diffondere dall'alto chiedere 2 dritte per quel che rigurada questa fantasmagorica classe :-D
Come migliorarla? Son sulla stradagiusta sullo studio delle classi php ?
qui il codice
grazie in anticipo

Codice PHP:
//creo una classe x la gestione del db
class mysql{
    
    
//proprietà
    //uso protected per evitare di modificare i valori 
    
protected  $database;
    protected  
$host;
    protected  
$user;
    protected  
$password;
    protected  
$db;
    protected  
$err_sql;

//costruttore
// al suo interno effettuo la connessione al DB
    
function __construct($database,$host,$user,$password){
        
//il costruttore popola solo le proprietà di classe
        
$this->database=$database;
        
$this->host=$host;
        
$this->user=$user;
        
$this->password=$password;
    }
    
    
//metodo connessione;
//utilizzo la visibilità protected per evitare di utilizare la connessione fine a se stessa
//questo metodo può essere richiamato solo da altri metodi 
    
protected  function connect(){

        
$this->db=mysql_connect($this->host,$this->user,$this->password);
        if(
$this->db){
            
//connessione andata a buon fine
            
return mysql_select_db($this->database,$this->db) or die("Impossibile selezionare DB");    
        }else{
            
//connessione fallita
            
echo   "<p style=\"color:red\">Non mi son collegato al db.
Ricontrolla i parametri </p>"
;
            return 
false;        
        }    
    }

    
//metodo chiusura connessione
    
public function close() {
        return 
mysql_close($this->db);
    }



    public function 
query($sql){
        if(
$this->connect()){
            return 
mysql_query($sql);    
        }
    
    }

########################################
//metodo chestampa query che henera errore

public function errore($tipo=''){
    switch(
$tipo){
        case 
'':
        case 
'sql':
            echo 
$this->err_sql;    
        break;    
        
    }
    
}

//metodo che legge una query select restituendo array    
    
public function read($tabella,$filtro=''){
        
$dati='';
        
        if(
$filtro !='')
        
$filtro =' AND '.$filtro;
        
        
$ris=$this->query("SELECT * FROM $tabella where 1 $filtro");
        if(
$ris!=''){
                while (
$riga=mysql_fetch_assoc($ris)){
                    
$dati[]=$riga;
                }
            return 
$dati;
        }
    
    }



########################################
//metodo che passa una query insert
    
public function insert($tabella,$dati){
        
$chiavi '';
        
$valori '';
        
        
$sql "INSERT INTO $tabella  ";
        foreach(
$dati as $k =>$v){
            
$chiavi .=$k.',';
            
$valori .= "'$v',";
        }
        
$chiavi=substr(rtrim($chiavi),0,(strlen(rtrim($chiavi))-1));    
        
$valori=substr(rtrim($valori),0,(strlen(rtrim($valori))-1));    
        
$sql.='('.$chiavi.')';
        
$sql.=" VALUES ($valori)";
    
    
        if(
$this->query($sql)){
            return 
true;
        }else{ 
$this->err_sql =  $sql;}
        
    }
    
    
########################################
//metodo che passa una query update
    
public function update($tabella,$dati,$valore,$campo='id'){
        
$campi='';
        
$sql "UPDATE $tabella SET ";
        foreach(
$dati as $k =>$v){
            
$campi .="$k = '".rtrim($v)."',";
        }
        
$campi=substr(rtrim($campi),0,(strlen(rtrim($campi))-1));    
        
$sql.=$campi;
        
        
$sql.=" WHERE $campo = '$valore'";
        if(
$this->query($sql)){
            return 
true;
        }else{
$this->err_sql =  $sql;}
        
    }
    
########################################
//metodo che passa una query delete
    
public function delete($tabella,$valore,$campo_confronto='id',$campo=''){
        
        
        if(
$campo!=''){
        
//svuoto solo un campo     
            
$sql="UPDATE $tabella SET $campo = '' WHERE $campo_confronto = '$valore';";
        }else{
        
//elimino riga    
            
$sql "DELETE FROM $tabella WHERE $campo_confronto = '$valore' ";
        }
                if(
$this->query($sql)){
            return 
true;
        }else{
$this->err_sql =  $sql;}
        


    }    
    
########################################
//metodo che trova una riga 
    
public function riga($tabella,$valore,$campo='id'){
        
$ris $this->read($tabella,$campo = $valore"); 
        if(
$ris!=''){
            return 
$ris[0];
        }else{
$this->err_sql =  $sql;}

    }
########################################
//metodo che genera una select di un campo di una tabella

    
public function select($tabella,$nome_da_visualizzare,$value,$filtro=''){
        
$riga $this->read($tabella,$filtro);
        
$n=$this->conta($tabella,$filtro);
        
$opt='<option>--Scegli--</option>';
        if(
$riga!=''){    
            for(
$i=0;$i<$n;$i++){
                
$opt.= '<option value="'.$riga[$i][$value].'">'.$riga[$i][$nome_da_visualizzare].'</option>';
            }            
                return 
"<select name=\"$value"."_"."$nome_da_visualizzare\" id=\"$value"."_"."$nome_da_visualizzare\">".$opt.'</select>';

            }
        
    }


########################################
//metodo che conta i dati di una tabella con opzionale filtro
    
public function conta($tabella,$filtro=''){
        if(
$filtro !='')
        
$filtro =' AND '.$filtro;
        
$ris=$this->query("SELECT count(*) FROM $tabella WHERE 1 $filtro");
        if(
$ris!=''){
            
$rigamysql_fetch_array($ris);
            return 
$riga[0];
        }else{
            return 
0;
        }
    }
    
########################################
//metodo che conta i dati di una tabella con opzionale filtro    
    
    
public function trova($tabella,$campo,$campo_confronto,$valore){    
     
$dati=array();
     
$sql="SELECT $campo FROM $tabella  WHERE $campo_confronto = '$valore'";
    
        
$ris=$this->query($sql);
        if(
$ris!=''){
                while (
$riga=mysql_fetch_assoc($ris)){
                    
$dati[]=$riga;
                }
            return 
$dati;
        }
    
}
    
    
    


}





/*
//istanzio classe
$prova = new mysql($database,$host,$user,$password);

//restituisco array
$prova->read('tabella','filtro(opzionale)');

//query
//passo una query qualunque
//restituisco bool
$prova->query('sql');

//read
//
$prova->read(tabella,filtro(opzionale))



//insert
//insert in tabella (array = chiave valore)
//restituisco bool
$prova->insert('tabella',array);->bool    


//conta
//conto gli elementi du una tabella filtro opzionale
//restituisce numero
$prova->conta('tabella','filtro (opzionale)');


//select
//restituisce un campo di tipo select
//nome da visualizzare nel menu a tendina
// value da passare (default il dato precedente )
//filtro opzionale
$prova->select('tabella','nome_da_visualizzare','campo_value','filtro(opzionale)');


//riga
//restituisce un array di una riga sola
//nome tabella
//valore campo confronto
//campo di confronto di default id 
$prova->riga('tabella','valore','campo')



//update 
//tabella (array = chiave valore) 
// valore del campo 
// campo (default id)
//restituisco bool
$prova->update($tabella,$dati,$valore,$campo,);


//delete
//tabella
//valore del campo
//campo di confronto (default id)
//campo(default vuoto ) se non vuoto cancella solo il campo corrispondente, se vuoto cancella la riga
$prova->delete($tabella,$valore,$campo_confronto='id',$campo='')


//trova
//tabella
//campo da cercare
//campo da confrontare
//valore da confrontare

$prova->trova($tabella,$campo,$campo_confronto,$valore)


//errore
//stampo errore , default la query 
$prova->errore()

*/