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!=''){
$riga= mysql_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()
*/