Location: PHPKode > scripts > db Class > db-class/class_db.php3
<?
////////////////////////////////////////////////////
//
// nom: Class db
// description: Classe de connexion a une base Mysql
// 
// $Id: class_db.php, v 1.2 21/12/2000$
//

//!!Class db
//!Classe de connexion a une base Mysql.

/*!
exemple de code:

\code
$db = new db($user,$password,$base,$hostname);
$db->connect();
$Query="SELECT id FROM table";
$db->query($Query);
while($row=$db->fetch_array())
{ print($row[id]); }
$db->close();
\encode

voire aussi: Les fonctions mysql de php. 
*/

/*!TODO

Dans le cas de plusieurs objet db, lors de la fermeture de la connexion de l'un,
cela influence les "autres" "sessions" (objet). On preferera pour resoudre cela,
la connexion et la deconnexion de tout les objet a proximite..

*/


//////////////////////////////////////////////////////////////////////////
//				CLASS DB
//////////////////////////////////////////////////////////////////////////
class db
{

 ///variable pour definir le debug 
 var $debug;

 ///variable de connexion user
 var $user;
 ///variable de connexion password
 var $password;
 ///variable de connexion host
 var $host;
 ///variable definissant la base
 var $base;

 ///variable designant le lien actif
 var $link;

 ///variable pour la gestion des erreurs
 var $error;
 ///variable pour la gestion des erreurs
 var $n_error;
 ///variable pour faire afficher ou pas les erreurs.
 var $bAfficheError;

 ///variable designant result
 var $result;

 ///variables definissant le nombres de rows de obtenu par la requete
 var $num_rows;
 ///variables definissant le nombres de fields de obtenu par la requete
 var $num_fields;

 /*!
 fonction constructeur
 */
 function db($inputUser, $inputPassword, $inputBase="", $inputHost="localhost", $inputAfficheError=true)
 {
  if($this->debug)
  { echo "\n$this->link: Definition des parametres"; }

  $this->user=$inputUser;
  $this->password=$inputPassword;
  $this->host=$inputHost;
  $this->base=$inputBase;
  $this->bAfficheError=$inputAfficheError;
 }


 /*!
 fonction de destruction de l'objet
 */
 function delete()
 {
  unset($this->link);
  unset($this->user);
  unset($this->password);
  unset($this->host);
  unset($this->base);
  unset($this->n_error);
  unset($this->error);
  unset($this->bAfficheError);
  unset($this->result);
  unset($this->num_rows);
  unset($this->num_fields);
 }

 /*!
 fonction de connexion .. 
 */
 function connect()
 {
  if($this->debug)
  { echo "\n-- Connexion a la base"; }

  $this->link=@mysql_connect($this->host,$this->user,$this->password);
  
  if(!$this->verifError($this->link))
  { return false; }
    
  if(!$this->select_db())
  { return false; }

  return $this->link;
 }


 /*!
 fonction de fermeture de la connexion
 */
 function close($inputLink=0)
 {
  if($this->debug)
  { echo "\n$this->link: Fermeture de la connexion a la base"; }
 
  if(!$this->free())
  { return false; }

  if($this->debug)
  { echo "\n$this->link: Fermeture"; }

  if(!$inputLink)
  { $inputLink=$this->link;  } 

  if($inputLink)
  {
   if(!@mysql_close($inputLink))
   { return false; }
  }

  $this->delete();

  return true;
 }


 /*!
 fonction pour recuperer les reponse sous forme de tableau.
 */
 function fetch_array($inputResult=0)
 {
  if(!$inputResult)
  { $inputResult=$this->result; }

  if($this->debug)
  { echo "\n$this->link: fetch_array - result: $inputResult"; }
 
  return @mysql_fetch_array($inputResult); 
 }


 /*!
 fonction pour recuperer les reponse sous forme de tableau pour une rangee.
 */
 function fetch_row($inputResult=0)
 {
  if($this->debug)
  { echo "\n$this->link: fetch_row"; }

  if(!$inputResult)
  { $inputResult=$this->result; }

  return mysql_fetch_row($inputResult);
 }


 /*!
 fonction pour recuperer les options attachees a un champs
 */
 function field_flags($inputIndex,$inputResult=0)
 {
  if(!$inputResult)
  { $inputResult=$this->result; }

  return mysql_field_flags($inputResult,$inputIndex);
 }


 /*!
 fonction pour recuperer la longueur max d'un champs d'une reponse
 */
 function field_len($inputIndex,$inputResult=0)
 {
  if(!$inputResult)
  { $inputResult=$this->result; }

  return mysql_field_len($inputResult,$inputIndex);
 }


 /*!
 fonction pour recuperer le nom d'un champs d'une reponse
 */
 function field_name($inputIndex,$inputResult=0)
 {
  if(!$inputResult)
  { $inputResult=$this->result; }

  return mysql_field_name($inputResult,$inputIndex);
 }


 /*!
 permet de vider le resultat...
 */
 function free($inputResult=0)
 {
  if($this->debug)
  { echo "\n$this->link: Vider le resultat"; }
  
  if(!$inputResult)
  { $inputResult=$this->result; }

  if($inputResult)
  { @mysql_free_result($inputResult); }

  return true;
 }


 /*!
 permet de recuperer le id assigne a la rangee inseree lors d'un "auto_increment"
 */
 function insert_id($inputResult=0)
 {
  if($this->debug)
  { echo "\n$this->link: Recuper l'id assigne a la rangee inseree"; }

  if(!$inputResult)
  { $inputResult=$this->result; }

  if($inputResult)
  {
   return @mysql_insert_id($inputResult);
  }

  return false;
 }


 /*!
 fonction pour lister les bases d'une machine
 */
 function list_dbs()
 {
  $this->result=mysql_list_dbs($this->link);
 
  if(!$this->verifError($this->result))
  { return false; }

  return $this->result;
 }


 /*!
 fonction pour lister les champs d'une base
 */
 function list_fields($inputTable)
 {
  $this->result=mysql_list_fields($this->base,$inputTable,$this->link);
 
  if(!$this->verifError($this->result))
  { return false; }

  return $this->result;
 }


 /*!
 fonction pour lister les tables d'une base
 */
 function list_tables()
 {
  $this->result=mysql_list_tables($this->base,$this->link);
 
  if(!$this->verifError($this->result))
  { return false; }

  return $this->result;
 }


 /*!
 fonction pour obtenir le nombre de rangees d'un resultat
 */
 function num_row()
 {
  $this->num_rows=@mysql_num_rows($this->result);

  if($this->debug)
  { echo "\n$this->link: Calcul du nombre de rangee d'un resultat: $this->num_rows"; }
 
  return true; 
 }


 /*!
 fonction pour obtenir le nombre de champs d'un resultat
 */
 function num_field()
 {
  $this->num_fields=@mysql_num_fields($this->result);

  if($this->debug)
  { echo "\n$this->link: Calcul du nombre de champs d'un resultat: $this->num_fields"; }
 
  return true; 
 }


 /*!
 fonction pour poser la requete
 */
 function query($inputQuery)
 {
  if(!$this->free())
  { return false; }
  
  if($this->debug)
  { echo "\n$this->link: Requete SQL: $inputQuery"; }

  $this->num_rows=0;
  $this->num_fields=0;

  $this->result=@mysql_query($inputQuery);

  if(!$this->verifError($this->result))
  { return false; }
  
  if(eregi("SELECT",$inputQuery))
  {
   $this->num_row();
   $this->num_field();
  }

  return $this->result;
 }


 /*!
 fonction pour selectionner une base
 */
 function select_db($inputDb="")
 {
  if($this->debug)
  { echo "\n$this->link: Selection d'un base"; }
 
  if(!$inputDb)
  { $inputDb=$this->base; }

  if(!$inputDb)
  { return false; }

  if(!@mysql_select_db($inputDb,$this->link))
  { return false;}
  else
  { return true;}

 }






 /*!
  \private
  fonction interne pour la verif du resultat.
 */
 function verifError($inputVerif)
 {
  if($this->debug)
  { echo "\n$this->link: Verification d'erreur sur le lien ou le resultat : $inputVerif"; }

  if(!$inputVerif)
  {
   $this->n_error=mysql_errno($this->link);
   $this->error=mysql_error($this->link);

   if($this->bAfficheError)
   { printf("\n%s: Error %s: %s\n",$this->link, $this->n_error, $this->error); }
   
   return false;
  }
  else
  { return true; }
 }

}
?>

Return current item: db Class