Interface simplifiée entre php et mysql

Description

Il permet de se connecter facilement à une base de données MySql en PHP.
Il traite les différentes sortes de requêtes et permet de recupérer des données de différentes bases.
Il est aussi paramètrable.

Source / Exemple :


<?php

class base
{
/********    VARIABLES    ********/

	/////////////////////////////////////
	// Variables globales de connexion //
	/////////////////////////////////////
	var $IP = "ip_du_serveur";//---> adresse ip du serveur MySql
	var $UTIL = "nom_util_bdd";//--> nom d'utilisateur de la base
	var $PASSE = "mdp_bdd";//------> mot de passe de la base
	var $BDD = "nom_base";//-------> nom de la base sur le serveur
	////////////////////////////////////

	/////////////////////////////////////
	// Variables globales de la classe //
	/////////////////////////////////////
	var $Connexion_MySql;//------------> connexion au serveur MySql
	var $Connexion_Base;//-------------> connexion a la base
	var $Curseur;//--------------------> resultat de la requete (curseur)
	var $Erreur;//---------------------> gestion des erreurs
	var $Numero_Enregistrement = 0;//--> numero d'enregistrement du curseur
	var $Ordre_sql;//------------------> ordre sql passe en parametre
	var $Ordre_Select;//---------------> type de la requete
	/////////////////////////////////////

/**************************************************/
/*************    METHODES DE LA CLASSE    ********/
/**************************************************/
	
	//
	// Constructeur de la classe
	// permet de specifier specifier soi-meme les parametres de connexion
	//
	function base($requete)
	{
   if($requete[0] == '@')
   {
    $req = explode(':',$requete,6);
    
	  $this->IP = trim(substr($req[0], 1));
	  $this->UTIL = trim($req[1]);
	  $this->PASSE = trim($req[2]);
	  $this->BDD = trim($req[3]);
	  
	  $this->Ordre_sql = trim($req[4]);
	 }
	 else
	 {
	   $this->Ordre_sql = $requete;
   }
	  $this->connexion();
  }

  //
	// Connexion au serveur MySql et a la base
	// 
	function connexion()
	{
		$this->Connexion_MySql = @mysql_connect($this->IP,$this->UTIL,$this->PASSE);
		
		if(!$this->Connexion_MySql)
		{
			$this->erreur_mysql("Impossible de se connecter au serveur de base de données");
			return 0;
		}
		else
		{
			$this->Connexion_Base = @mysql_select_db($this->BDD);
			
			if(!$this->Connexion_Base)
			{
				$this->erreur_mysql("Impossible de se connecter à la base");
				return 0;
			}
		}
	}

  //
	// Execution des requetes
	//
	function requete()
	{
	  $requete = $this->Ordre_sql;
	  
	  $requete = trim($requete);
	   
	  $selection = strtolower(substr($requete, 0, 6));
	
		$this->Curseur = @mysql_query($requete);
		
	  if(!$this->Curseur)
		{
			$this->erreur_mysql("Requête incorrecte:\n\t".$requete);
			return 0;
		}
		
		if($selection == 'select')
		{
		  $this->Ordre_Select = True;
      return $this->nombre_enregistrement();
		}
		else
		{
		  $this->Ordre_Select = False;
		  return $this->nombre_modification();
    }
	}

  //
	// Retourne un enregistrement de la selection
	//
	function enr()
	{
    $this->Numero_Enregistrement++;
    
    $ligne_enregistrement = mysql_fetch_array($this->Curseur,MYSQL_ASSOC);
    
    if($this->Numero_Enregistrement == $this->nombre_enregistrement())
    {
      $this->deconnexion();
    }
		return $ligne_enregistrement;
	}

  //
  // Retourne le nombre de ligne affectee par
  // un ordre du type UPDATE, DELETE, INSERT, etc
  //
  function nombre_modification()
  {
    $nb_modif = mysql_affected_rows($this->Connexion_MySql);
    
    $this->deconnexion();
    
    return $nb_modif;
  }

  //
	// Retourne le nombre d'enregistrement de la selection
	//
	function nombre_enregistrement()
	{
		return @mysql_num_rows($this->Curseur);
	}

  //
	// Affichage des erreurs
	//
	function erreur_mysql($MSG)
	{
		$this->erreur=@mysql_error();
		die("<b>Erreur: </b><br><i>".$MSG."<br>".$this->erreur."</i><br><u>".@mysql_errno()."</u>");
	}

  //
	// Deconnexion du serveur MySql
	//
	function deconnexion()
	{
		mysql_close($this->Connexion_MySql);
	}

}

	/**************************************************/
  /****************    POINT D'ENTREE    ************/
  /**************************************************/
  
  function sql($requete, &$objet)
  {
    switch ($requete)
    {
      Case '0'://------------------------------> Recuperation d'une ligne d'enregistrement
        if($objet->Ordre_Select)
        {
          if($objet->Numero_Enregistrement<=$objet->nombre_enregistrement())
            return $objet->enr();
          else
            die("La requête n'a plus d'enregistrement");
        }
        else
        {
          die("La requête ne renvoie aucun resultat");
        }
        break;
      Case '1':
        $objet->deconnexion();
        break;
      default://------------------------> Initialisation de l'objet
        $objet = new base($requete);
        return $objet->requete();
        break;
    }
  }

?>

Conclusion :


Exemples d'utilisation:

include("connexion.php");

$nb = $sql("requete_a_executer", $objet);

//Si ce n'est pas une requete de selection:

$nb contiendra le nombre de ligne modifié

//Sinon

$nb contiendra le nombre de ligne selectionné

//Pour recuperer les enregistrements:

for($i = 1; $i <= $nb; $i++)
$enr = $sql(0,$objet);

//$enr correspond à un tableau contenant un ligne de la selection
//Pour acceder aux donnée: $enr['nom_colone']

//si $sql(0,$objet) est appelé $nb fois, alors la deconnexion du serveur MySql est automatique
//Toutefois si on veut se deconnecter sans recuperer tous les enregistrements, on peut appeler sql():
$sq(1, $objet);// Deconnexion()

//Pour la definition des informations de connexions, vous devez les modifier dans le fichier "connexion.php"
//Mais vous pouvez les definirs vous-même au cas par cas:

sql("@ip_serveur:login:mot_de_passe:nom_base:requete",$objet)

//Sinon je pensais ajouter une fonctionnalité: retour de la selection dans un tableau; mais on verra plus tard.

//Le but de ce code est de simplifier la vie de ceux qui veulent coder un site internet dynamique.

//-->Voilà, dites moi ce que vous en pensez, si vous voyer des bugs à corriger ou des optimisations à faire.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.