<?
////////////////////////////////////////////////////
//
// 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; }
}
}
?>
|