<?php
/**
* Classe sConnection
*/
// **********************************************************
// Classe sConnection
// **********************************************************
/**
* Questa classe implementa un oggetto sConnection
*
* In questo esempio viene mostrato come implementare un oggetto sConnection
* che preleva i dati dal database mySql e li visualizza in un oggetto sTable.
*
* <code>
* // creazione della connessione
* $conn = new sConnection("localhost", "login", "password");
* $conn->setDb("database");
* $conn->setQuery("select * from tabella");
*
* // creazione della tabella
* $tb = new sTable("Esempio collegamento a DB");
* $tb->addThead($conn->getTitle());
* $tb->addBody($conn->getData());
* $conn->closeDb();
*
* // visualizzazione del codice html
* echo $tb;
* </code>
*
* @author Dario Mazzeo <hide@address.com>
* @version 1.0.0
* @copyright Freesoftware Italia - www.freesoftwareitalia.it
* @package sClassHTML
*/
class sConnection extends sClassHTML{
protected $server;
protected $login;
protected $password;
protected $db;
protected $closed_connection=false;
protected $database;
protected $query;
protected $result;
protected $rows;
protected $cols;
protected $dataarray;
protected $title;
protected $last_id;
/**
* Creazione dell'oggetto sConnection
*
* Esempio:
*
* <code>
* $conn = new sConnection("localhost", "login", "password");
* </code>
*
* @param string $server Specificare l'indirizzo IP del server
* @param string $login Specificare la login di accesso al database
* @param string $password Specificare la password di accesso al database
*/
public function __construct($server="localhost", $login="root", $password="root"){
$this->server=$server;
$this->login=$login;
$this->password=$password;
$this->db=@mysql_connect($server, $login, $password);
}
/**
* Distruzione dell'oggetto sConnection
*
* La distruzione dell'oggetto implica la chiusura della connessione al database.
*
* Esempio:
*
* <code>
* unset($conn);
* </code>
*/
public function __destruct (){
$this->closeDb();
}
/**
* Questo metodo è utilizzato per specificare il nome del database su cui lavorare
*
* Esempio:
*
* <code>
* $conn->setDb("db_esempio");
* </code>
*
* @param string $database Nome del database
* @return null
*/
public function setDb($database){
$this->database=$database;
@mysql_select_db($this->database, $this->db);
}
/**
* Questo metodo è utilizzato per eseguire una query di selezione al database
*
* Il risultato della query è prelevabile con il metodo getData().
*
* Esempio:
*
* <code>
* $conn->setQuery("SELECT * FROM taballa");
* </code>
*
* @param string $query Query SQL da eseguire
* @param int $numquery E' possibile specificare un numero di query per mantenere
* in memoria i risultati
* @return null
*/
public function setQuery($query, $numquery=0){
$this->query[$numquery]=$query;
$this->result[$numquery]=@mysql_query($this->query[$numquery], $this->db);
$this->rows[$numquery]=@mysql_affected_rows();
$this->cols[$numquery]=@mysql_num_fields($this->result[$numquery]);
// titoli
unset($this->title[$numquery]);
for ($i=0; $i<$this->cols[$numquery]; $i++){
$nomecampo=@mysql_field_name($this->result[$numquery], $i);
$this->title[$numquery][$i]=$nomecampo;
}
// righe dati
$j=0;
unset($this->dataarray[$numquery]);
while ($rs=@mysql_fetch_array($this->result[$numquery])){
for ($i=0; $i<$this->cols[$numquery]; $i++){
$nomecampo=@mysql_field_name($this->result[$numquery], $i);
($this->conversion) ? $tmp=str_html($rs[$nomecampo]) : $tmp=$rs[$nomecampo];
$this->dataarray[$numquery][$j][$i]=$tmp;
}
$j++;
}
}
/**
* Questo metodo è utilizzato per eseguire una query di inserimento,
* modifica e cancellazione al database (No Result)
*
* Il metodo restituisce true se il risultato della query è andato a buon fine.
*
* Esempio:
*
* <code>
* $res=$conn->setQueryNr("INSERT INTO tabella (nome, cognome) VALUES ('dario', 'mazzeo')");
* if ($res)
* echo 'Utente inserito correttamente';
* else
* echo 'Utente già presente in archivio';
* </code>
*
* @param string $query Query SQL da eseguire
* @param int $numquery E' possibile specificare un numero di query per mantenere
* in memoria i risultati
* @return bool Restituisce true se la query non ha restituito errori
*/
public function setQueryNr($query, $numquery=0){
$this->query[$numquery]=$query;
$this->result[$numquery]=@mysql_query($this->query[$numquery], $this->db);
$this->last_id=@mysql_insert_id();
return $this->result[$numquery];
}
/**
* Questo metodo è utilizzato per prelevare la descrizione
* dei campi dalla tabella
*
* Esempio:
*
* <code>
* $titoli = $conn->getTitle(); // $titoli è un array
* </code>
*
* @param int $numquery E' possibile specificare un numero di query per mantenere
* in memoria i risultati
* @return &string[] Ritorna un array monodimensionale di valori
*/
public function &getTitle($numquery=0){
return $this->title[$numquery];
}
/**
* Questo metodo è utilizzato per prelevare i valori dei campi dalla tabella
*
* Esempio:
*
* <code>
* $dati = $conn->getData(); // $dati è un array
* </code>
*
* @param int $numquery E' possibile specificare un numero di query per mantenere
* in memoria i risultati
* @return &string[][] Ritorna un array bidimensionale di valori
*/
public function &getData($numquery=0){
return $this->dataarray[$numquery];
}
/**
* Questo metodo è utilizzato per recuperare il numero di righe della query
*
* Esempio:
*
* <code>
* $righe = $conn->getRows();
* </code>
*
* @param int $numquery Specificare il numero della query
* @return int Ritorna il numero di righe della query
*/
public function getRows($numquery=0){
return $this->rows[$numquery];
}
/**
* Questo metodo è utilizzato per recuperare il numero di colonne della query
*
* Esempio:
*
* <code>
* $righe = $conn->getCols();
* </code>
*
* @param int $numquery Specificare il numero della query
* @return int Ritorna il numero di colonne della query
*/
public function getCols($numquery=0){
return $this->cols[$numquery];
}
/**
* Questo metodo restituisce l'ultimo ID della tabella
*
* L'ID è riferito alle operazioni SQL come INSERT.
*
* @return int Restituisce l'ultimo ID della tabella
*/
public function getLastID(){
return $this->last_id;
}
/**
* Questo metodo è utilizzato per chiudere la connessione al database
*
* Esempio:
*
* <code>
* $conn->closeDb(); // chiude la connessione al database
*
* unset($conn); // chiude la connessione e rilascia le risorse
* </code>
*
* @return null
*/
public function closeDb(){
if (!$this->closed_connection){
@mysql_close($this->db);
$this->closed_connection=true;
}
}
}
?>