Vous êtes sur la page 1sur 12

Apprentissage & Pratique

PHP

Utiliser une base de données


avec PHP : PDO, etc.

Par
El hassan Abdelwahed
Département d’Informatique
Faculté des Sciences Semlalia Marrakech

Architecture générale

Poste Client Appel de la page


Html
CSS
Serveur Web
Requête(s) Réponse(s)
Exécution du script

PHP

Serveur applications

Extraction des données

SGBD

Serveur Données

PHP & Bases de données El Hassan Abdelwahed, FSSM, UCAM 2


Etude de Cas: Gestion des commandes

Gestion des commandes des clients (Documents d’analyse …)

Document 1 : Bon de commande

N° Bon.............................. Date..............................
Code Client................................ Nom Client............
Adresse.....................................................................
......................................................................
Code Représentant.............. Nom représentant.............
Réf. Désignation. Quantité PU Montant
......... ............ ...... …. .............
......... ............ ..... …. ............

Total..........

Document 2 : Registre des clients de l’entreprise Document 3 : Liste des représentants de l’entreprise

Code client Nom Rue Ville Tél. Code Représentant Nom


1 Hassan Massira Marrakech 044 22 35 47 10 Ahmed
2 Omar Nasr Casa 022 30 25 47 11 Mohamed
… … … … … … …

PHP & Bases de données El Hassan Abdelwahed, FSSM, UCAM 3

Graphe des dépendances fonctionnelles

PHP & Bases de données El Hassan Abdelwahed, FSSM, UCAM 4


Construction des entités

PHP & Bases de données El Hassan Abdelwahed, FSSM, UCAM 5

Construction des associations

PHP & Bases de données El Hassan Abdelwahed, FSSM, UCAM 6


Gestion des commandes: MCD & MLD

Gestion des commandes des clients (MDC & MLD)

Commande Details Produit


0,n
1,n
Code Quantite Ref erence
Date Designation
PU
1,1 1,1
Gère 0,n Client
Passe commande
Cinc
1,n
NomClient
Représentant Rue
Cinp Ville
NomRepresentant

Client( Cinc, NomClient, Rue, Ville)


Produit(Reference, Designation, PU)
Commande(Code, Date, Cinc, Cinp)
Représentant( Cinp, NomRepresensant)
Details( Code, Reference, Quantite)

PHP & Bases de données El Hassan Abdelwahed, FSSM, UCAM 7

Gestion des commandes: Jeux de données


Client( Cinc, Nom, Rue, Ville) Produit(Reference, Designation, PU)
Commande(Code, Date, Cinc, Cinp) Représentant( Cinp, Nom) Details( Code, Reference, Quantite)

PHP & Bases de données El Hassan Abdelwahed, FSSM, UCAM 8


Gestion des commandes: Création de la BD

Création de la base de données dans le SGBD MySQL avec phpMyAdmin

PHP & Bases de données El Hassan Abdelwahed, FSSM, UCAM 9

PHP & BD: Pilotes Natifs (PHP4)

PHP & Bases de données El Hassan Abdelwahed, FSSM, UCAM 10


PHP & BD: Pilotes Natifs (PHP4)

PHP & Bases de données El Hassan Abdelwahed, FSSM, UCAM 11

Utiliser les Bases de données avec PHP

PHP & Bases de données El Hassan Abdelwahed, FSSM, UCAM 12


PHP < PDO > SGBD
PHP

PDO (PHP Data Object)

Autres Php_pdo_pgsql php_pdo_mysql php_pdo_oci php_pdo_sqlsrv


SGBD

Il faut utiliser un driver PDO


spécifique au SGBD utilisé
(activation de l’extension
correspondante)

PHP & Bases de données El Hassan Abdelwahed, FSSM, UCAM 13

PHP < PDO > SGBD

- PDO constitue une couche d'abstraction entre le serveur d'application et le serveur de


base de données

- L’approche objet de PDO permet de plus d’étendre les fonctions d’accès au SGBD
facilement et de manière transparente

- La classe PDO permet d'utiliser une syntaxe uniforme dans l'utilisation des fonctions et
méthodes d'accès aux différents types des bases de données,

- L’usage de la classe PDO offre l’avantage de la portabilité, de la facilité d’utilisation, de la


sécurité que de la rapidité.

- La classe PDO gère: les exceptions, les transactions, les requêtes préparées, … etc.
PHP & Bases de données El Hassan Abdelwahed, FSSM, UCAM 14
Structures des classe de PDO

La classe PDO : correspond au lien à la base de


données, elle dispose des méthodes
permettant de réaliser les fonctions
essentielles, à savoir l’envoi de requête, la
création de requêtes préparées, la gestion des
transactions, … etc.

La classe PDOStatement : correspond aux


requêtes qu’on peut faire, Ses méthodes
permettent de gérer les requêtes préparées et
de lire les résultats des requêtes

La classe PDOException: permet de traiter les


erreurs.

PHP & Bases de données El Hassan Abdelwahed, FSSM, UCAM 15

Connexion à la BD

- Les connexions sont établies en créant des instances de la classe PDO.

- Le constructeur de la classe PDO accepte des paramètres pour spécifier la DNS


de la base de données et les paramètres nécessaires à la connexion (nom
d'utilisateur, mot de passe, etc.)

PHP & Bases de données El Hassan Abdelwahed, FSSM, UCAM 16


Gestion des erreurs

La classe PDO offre trois modes pour la gestion des erreurs:

- PDO::ERRMODE_SILENT: C'est le mode par défaut. PDO définit simplement le code


d'erreur à inspecter grâce aux méthodes PDO::errorCode() et PDO::errorInfo() sur les objets
représentant les requêtes, mais aussi ceux représentant les bases de données .

- PDO::ERRMODE_WARNING: Cette configuration est utile lors des tests et du


débogage, si on veut voir le problème sans interrompre l'application.

- PDO::ERRMODE_EXCEPTION: En plus de définir le code d'erreur, PDO lancera une


exception PDOException .

PHP & Bases de données El Hassan Abdelwahed, FSSM, UCAM 17

Requêtes SQL & Méthodes à utiliser

- La méthode exec( ) de la classe PDO est à utiliser principalement pour des requêtes
SQL (insertion, modification) : INSERT, UPDATE, DELETE
La méthode exec( ) retourne le nombre d’enregistrements modifiés.

- La méthode query( ) de la classe PDO est à utiliser principalement pour des


requêtes SQL (selection) : SELECT, EXPLAIN, SHOW, DESC
La méthode query( ) retourne, dans un objet de la classe PDOStatment, l’ensemble
des enregistrements sélectionnés.

PHP & Bases de données El Hassan Abdelwahed, FSSM, UCAM 18


Sécurité & Échappement

La méthode quote() de la classe PDO permet d’effectuer les opérations


d’échappement des chaînes de caractères et la formate de façon à pouvoir
l’utiliser directement dans une requête SQL (les caractères spéciaux sont
échappés, etc.): faille par injection SQL, … etc.

PHP & Bases de données El Hassan Abdelwahed, FSSM, UCAM 19

Requêtes préparées

- Les requêtes préparées sont une sorte de modèle compilé pour le SQL qu’on veut exécuter
- Elles peuvent être personnalisées en utilisant des variables en guise de paramètres.
- La requête ne doit être analysée (ou préparée) qu'une seule fois, mais peut être exécutée
plusieurs fois avec des paramètres identiques ou différents.
- Les requêtes préparées permettent de créer des requêtes SQL qui contiennent des
paramètres auxquels on peut donner des valeurs différentes en fonction des besoins.
- Les paramètres pour préparer les requêtes n'ont pas besoin d'être entre guillemets ; le driver
le gère pour vous (élimine les risques liés aux injections SQL)
- PDO émule les requêtes préparées si votre SGBD ne dispose pas de cette fonctionalité.

- Avantages: Impose une certaine rigueur de programmation; Optimisation du temps


d'exécutions requis pour les requêtes; Exécutées plus d'une fois; Plus grande sécurité au
niveau des requêtes; … etc.

PHP & Bases de données El Hassan Abdelwahed, FSSM, UCAM 20


Requêtes préparées: Typage des arguements

PHP & Bases de données El Hassan Abdelwahed, FSSM, UCAM 21

Transactions

PHP & Bases de données El Hassan Abdelwahed, FSSM, UCAM 22


Atelier: Gestion des commandes

- Implémentation, en utilisant PDO, de l’application de Gestion des commandes (Gestion


des clients, des produits, des commandes, des représentants, … etc.)

- Fonctions à réaliser:

Le directeur des ressources humaines DRH a besoin de déterminer et d’attribuer des primes
de fin de mois aux représentants de l’entreprise en se basant sur la règle de gestion en
vigueur au sein de l’entreprise: Prime = 2,5 % du Chiffre d’affaire réalisé par le représentant
durant le mois considéré.

Afin de fidéliser ses clients (CRM), le directeur commercial a besoin de connaitre la liste des
clients dont la somme des commandes ont dépassé 50000 DH qui vont bénéficier d’une
remise sur leurs prochains achats.

Sites de référence:
- http://fr.php.net/manual/fr/

PHP & Bases de données El Hassan Abdelwahed, FSSM, UCAM 23

Vous aimerez peut-être aussi