Location: PHPKode > scripts > sClassHTML > sclasshtml/library/sConnection.class.php
<?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;
  	}
  }
}
?>
Return current item: sClassHTML