begin process at 2010 03 22 02:28:49
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Base de données

 > [POO] CLASSE D'ABSTRACTION SQL

[POO] CLASSE D'ABSTRACTION SQL


 Information sur la source

Note :
7,67 / 10 - par 3 personnes
7,67 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Base de données Classé sous :poo, sql, base, données, php Niveau :Initié Date de création :28/04/2007 Vu / téléchargé :6 426 / 307

Auteur : neigedhiver

Ecrire un message privé
Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note

 Description

Salut,

Ma première source n'était pas terrible du tout, j'espère avoir fait mieux cette fois-ci.
C'est un grand classique, il s'agit d'une classe d'abstraction SQL, permettant de se connecter à un serveur MySQL (classe concrète fournie) ou PostGreSQl (classe concrète en cours d'écriture) ou tout autre pour peu qu'on écrive la classe concrète qui va avec (ce qui ne fait pas grand chose). La classe est écrite en php5 et n'est pas compatible avec php4

J'ai abandonné l'idée de chargement de requêtes via un fichier xml à l'instanciation de la classe, c'est pas tellement utile. Il suffit d'utiliser la méthode prepare() dans une fonction de 5 lignes pour parvenir au même résultat que ce que j'avais déjà fait.

Le package se compose de plusieurs fichiers, dont voici le détail :
- DB.class.php : La classe abstraite
- DB.config.php : La configuration de connexion (nom d'utilisateur, serveur, etc)
- DB.param.php : La configuration de la classe (connexion automatique, classe d'Exception à lancer en cas d'erreur)
- mysql.class.php : La classe concrète pour MySQL

Un bout de code illustre l'utilisation de la classe.

Source

  • <?php
  • require('mysql.class.php');
  • try {
  • $db = new MySQL();
  • $db -> query('SELECT config_name, config_value FROM config');
  • $arr = $db -> fetch_assocset();
  • foreach ($arr as $item)
  • {
  • $config[$item['config_name']] = $item['config_value'];
  • }
  • $db -> prepare('exemple', 'SELECT user_id, user_name, password FROM users WHERE user={1} LIMIT 1');
  • $db -> execute('exemple', 'Neigedhiver');
  • $user_data = $db -> fetch_assoc();
  • if ($user_data['password'] != sha1('Mot2Passe'))
  • {
  • throw new Exception('Incorrect_Password');
  • }
  • }
  • catch (Exception $e) {
  • echo $e -> getMessage();
  • echo '<pre>';
  • echo $e -> getTraceAsString();
  • echo '</pre>';
  • }
  • ?>
<?php
	require('mysql.class.php');
	try {
		$db = new MySQL();
		$db -> query('SELECT config_name, config_value FROM config');
		$arr = $db -> fetch_assocset();
		foreach ($arr as $item)
		{
			$config[$item['config_name']] = $item['config_value'];
		}
		$db -> prepare('exemple', 'SELECT user_id, user_name, password FROM users WHERE user={1} LIMIT 1');
		$db -> execute('exemple', 'Neigedhiver');
		$user_data = $db -> fetch_assoc();
		if ($user_data['password'] != sha1('Mot2Passe'))
		{
			throw new Exception('Incorrect_Password');
		}
	}
	catch (Exception $e) {
		echo $e -> getMessage();
		echo '<pre>';
		echo $e -> getTraceAsString();
		echo '</pre>';
	}
?>

 Conclusion

La classe peut soit lancer des exceptions de la classe Exception native de php5, soit une classe étendue personnalisée. Cela se paramètre dans le fichier DB.param.php en renseignant le nom de la classe à utiliser.
Il faut donc impérativement (pour que le code soit propre) utiliser une syntaxe avec des blocs try/catch, ou bien utiliser une fonction de de gestion des exception définie par set_exception_handler().

Les fonctions publiques implémentées à l'heure actuelle sont :
- connect()
- disconnect()
- query()
- prepare() : cette méthode simule le comportement de la fonction php pg_prepare spécifique à PostGreSQL. Elle "stocke" une requête pour utilisation ultérieure. S'utilise avec execute()
- execute() : execute une requête stockée avec prepare(). Des paramètres peuvent figurer dans la requête, comme illustré dans le code ci-dessus.
- fetch_row, fetch_array, fetch_assoc : retourent une ligne sous forme respectivement de tableau numérique, numérique et associatifg, associatif.
- fetch_arrowset, fetch_arrayset, fetch_assocset : retournent un tableau numérique contenant le résultat des fonctions précédentes
- num_rows, affected_rows
Il s'agit du minimum vital.

Les variables publiques accessibles sont :
- sql : On peut y stocker une requête. Par défaut, la fonction query() utilise cette variable si aucune requête n'est passée en argument.
- num_queries : nombre de requêtes exécutées par la méthode query() (qui est également appelée par la méthode execute() )
- result : par défaut, les fonctions prenant un résultat en argument utilisent cette variable, qui est automatiquement renseignée par query(). On peut leur passer une autre ressource résultat (facultatif).

Le code est normalement assez clair et documenté pour qu'on comprenne aisément ce qui s'y passe.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip [PHP5] LIGHTEMPLATE - MOTEUR DE TEMPLATES ULTRA-LÉGER
Source avec Zip [PHP5.1] LISTING D'UN RÉPERTOIRE AVEC FILTRES
[PHP5.1] STRING ITERATOR
Source avec Zip [PHP5] ORPHYX PLUGIN SYSTEM
Source avec Zip [PHP5] GESTIONNAIRE DE CONFIGURATIONS

 Sources de la même categorie

RECUP IDENTIFICATION par luludovicp
Source avec Zip EXTEND MYSQLI par petibras
Source avec Zip CLASSE DE COMMANDES PEAR DB par pascalmintrosse
Source avec Zip AFFICHER LE RÉSULTAT D'UNE REQUÊTE SQL SUR PLUSIEURS PAGE par karimmass
Source avec Zip SQLDIFF : MIGRATION, VERSIONNING ET SYNCHRONISATION DE LA ST... par aKheNathOn

 Sources en rapport avec celle ci

Source avec Zip SYSTÈME D'ARTICLES par Archima
DUPLICATION D'UNE BASE DE DONNÉES POUR SAUVEGARDE par fmarie
Source avec Zip PORTAGE PDO DE MES ANCIENNES PUBLICATIONS par 8Tnerolf8
Source avec Zip Source avec une capture BASH CSVSQL: PARSER UN FICHIER CSV AVEC DES COMMANDES SQL par gentilKiki
Source avec Zip QUIZ EN INFORMATIQUE AVEC BASE DES DONNEES TESTEZ VOS CONNAI... par abidou009

Commentaires et avis

Commentaire de neigedhiver le 03/05/2007 22:22:40

Salut,

Merci aux personnes qui ont mis une note, c'est sympa.
Cependant, j'accepte aussi les commentaires, histoire de savoir un peu si ma source est correcte, pourrie, utile, complètement superflue, bien écrite ou pas,...

Merci :o)

Commentaire de Gwinyam le 10/06/2007 16:07:38

Salut,

J'ai pas pris trop le temps de regarder ce que tu as fait, mais cette idée m'intéresse puisque je comptais faire pareil sous peu pour un développement perso. Donc là ça m'arrange, forcément ;)

Juste une petite question, la classe concrète de PostGreSQL, tu penses l'avoir terminée quand? Juste pour avoir un ordre d'idée...

Sinon ben je teste ça et je reviendrais commenter ;)

Commentaire de amezghal le 25/08/2007 13:47:58

vas y mis à jour la source
ya encore postgreSQL et surtous les itérateurs
script propre, gestion des exceptions impec
bravo :)

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Récupérer données d'une base sql [ par Billybobbonnet ] Bonjour,Je suis débutant en php/sql et je ne sais pas comment récupérer les valeurs d'une ligne de table SQL dans des variables. Voilà la commande qui Formulaire complexe avec connexion php/mysql [ par baxhax ] bonjour les amis Salut, je suis dans l'impasse, je suis débutant dans php et je dois faire un projet de recherche pour créer une base de données ave Cr&ation de Base de Données [ par JLB59 ] A tous ceux qui ont essayés de m'aider à résoudre mon problème, je les en remercie.Voilà ce que j'ai trouvé :&lt;?php$link = mysql_connect('localhost' communication entre php et excel [ par developinform ] Bonjour; Je veux importer des données d'une feuille Excel a une base de données sous Mysql (en utilisant le php ou non). Alors est ce que c' En PHP, créer une base de données simples [ par JLB59 ] Bonjour à tous,Voilà, j'utilise EasyPHP et je voulais savoir s'il est possible de créer une base et une table .sql à partir de PHP.Vous allez me dire mettre les données du SQL dans une page PHP [ par djteuf ] Bonjour a tousJ'aimerais avoir toutes les infos dans une page PHP de qui sont réaliser avec cette structure que j'ai en image plus bas.C'est simplemen Pb base de données sql php [ par maxxou56 ] Je souhaiterais réalisé une page php a partir dune base de données Voici mes deux tables:ARTISTE (nom_artiste, image_artiste, type_musique, nationalit Redirect PHP [ par Stephane0000 ] Bonjour,Mon projet se compose de trois pages en php. Sur la première page j'ai un formulaire dont les données sont traitées sur la seconde page (les d base de données [ par astuces_jeux ] bonjour,je suis un utilisateur d'ifrance et ont fait ma base de données pour moi,j'ai créer une base de donnée avec phpmyadmin : SQL.inscriptionjai un connection entre page php et la Base de données [ par selma2ce ] svp aider moi ; je veux faire la connection à ma base de donnée. j'ai fait un site web (de débutant) et à la page commande j'ai fait un formulaire à r


Nos sponsors


Sondage...

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,796 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales