Interface simplifiée entre php et mysql

Soyez le premier à donner votre avis sur cette source.

Vue 9 695 fois - Téléchargée 1 258 fois

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

Ajouter un commentaire Commentaires
Messages postés
1662
Date d'inscription
lundi 16 septembre 2002
Statut
Membre
Dernière intervention
30 juillet 2008
1
Si je veux exécuter des requêtes mais en fonctions de d'autres requêtes... je vais devoir me connecter 2 fois.
Tk, t'as regardé ma source ?
Messages postés
14
Date d'inscription
jeudi 23 octobre 2003
Statut
Membre
Dernière intervention
21 juin 2007

Salut GRenard,

je ne comprend pas ton expression "broche à foin", dis moi plutôt ce qui ne va pas dans mon code ou ce qui pourrait être amélioré.

J'ai developper cette classe afin de me faciliter la vie dans le developpement de site internet dynamique et j'ai pensé qu'en apelant qu'une seule fonction avec des paramètres différent ce serait plus facile à gérer.

Je l'ai publié pour que des néophytes puissent utiliser une bdd Mysql et je pense que retenir des paramètres plutôt que plusieurs membres différents est plus pratique.

Merci pour le commentaire
Messages postés
1662
Date d'inscription
lundi 16 septembre 2002
Statut
Membre
Dernière intervention
30 juillet 2008
1
MMM, c'est un peu broche à foin je trouve, mais bon...

J'ai fait une chose similaire : http://www.phpcs.com/code.aspx?ID=24813

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.