Sunteți pe pagina 1din 38

PHP & MYSQL

PLAN
I- Utilisation d'une base de donnes

MySql
1-Introduction
2- Schma de liaison entre apache/PHP/MYSQL 3- Administration de MYSQL 4- SQL : petit rcapitulatif du langage
a-Cration dune base
b-Cration dune table c-Ajout dun enregistrement d-Consultation dun enregistrement e-Mise jour dun enregistrement f-Suppression dun enregistrement
2

PLAN
5- Accder MYSQL via PHP
a- Connection un serveur MYSQL

b- Connection une base de donnes MYSQL c- Excution dune requte SQL via PHP
d- Parcourir le rsultat dun SELECT

II- Passage et transmission de variables


1-Passage et transmission de variables par formulaire

2-Passage et transmission de variables par hyperlien


3- Redirection

I- Utilisation d'une base de donnes MySql

1-Introduction
PHP fonctionne nativement avec une base de donnes

MYSQL. MYSQL est un systme de gestion de base de donnes (SGBD) qui permet dentreposer des donnes de manire structure (Base, Tables, Champs, Enregistrements). Le noyau de ce systme permet daccder linformation entrepose via un langage spcifique le SQL. Ainsi, nous avions vu que linformation au mieux pouvait tre stocke dans des fichiers accessibles en lecture et criture par des scripts PHP. MYSQL vient ajouter une couche supplmentaire de stockage des donnes qui est plus commode, rapide et puissante dutilisation. 5

2- Schma de liaison entre apache/PHP/MYSQL

Voici ce qu'il peut se passer lorsque le serveur reoit une demande d'un client de consultation dune page en PHP qui fait appel des donnes stockes sous MYSQL: 1. Le serveur WEB envoie le nom de la page PHP demande linterprteur PHP. 2. PHP excute le script existant dans la page. Sitt que des instructions relatives la connexion une base de donnes trouves, PHP se charge denvoyer les requtes dexcution MYSQL. 3. MySQL excute la requte et renvoie PHP le jeu de donnes rsultat. 4. PHP termine son traitement et renvoie la page HTML gnre au serveur web qui la transmet linternaute.
7

3- Administration de MYSQL
EasyPHP installe un produit pour ladministration dune base de donnes MYSQL appel PHPMYADMIN. Ce produit est intgralement dvelopp en PHP. Toutefois nous lui prfrons MySQL-Front qui reste plus simple dutilisation. MYSQL-Front est une application qui permet dadministrer une base de donnes MYSQL distance (Cration de base, de tables, denregistrements, excution de requtes, gestion des comptes, )

4- SQL : petit rcapitulatif du langage


Structured Query Langage est langage standard pour communiquer avec une base de donnes. Il permet la cration de bases, la dfinition de tables, la consultation des enregistrements ainsi que leur mise jour.

a-Cration dune base


CREATE DATABASE exercice Cette requte SQL va permettre de crer une base vide du nom de exercice

10

b-Cration dune table


CREATE TABLE `t_personne` ( `id` INT (6) UNSIGNED AUTO_INCREMENT, `Nom` VARCHAR (50), `Prenom` VARCHAR (50), `Age`TINYINT(3)UNSIGNED,UNIQUE(`id`),INDEX(`id`)) Cette requte va permettre de crer une table du nom de t_personne contenant 4 champs : id : un identifiant entier qui sauto incrmentera chaque nouvel ajout denregistrement Nom : une chane de caractres dau maximum 50 caractres Prenom : une chane de caractres dau maximum 50 caractres Age : un entier 11

c-Ajout dun enregistrement


INSERT INTO t_personne (id, Nom, Prenom, Age)

VALUES (NULL, 'Joulak', 'Tarak', 32) Cette requte SQL va permettre dajouter une ligne denregistrement la table t_personne encore vide. Le champs Nom prendra pour valeur Joulak Le champs Prenom prendra pour valeur Tarak Le champs Age prendra pour valeur 32 Il est noter que le champs id tant en mode auto incrmental il ne faut pas lui assigner de valeur. Le compteur sincrmentant tout seul chaque nouvel enregistrement.
12

d-Consultation dun enregistrement


SELECT * FROM t_personne WHERE id=1 Cette requte va extraire de la base de donnes la ligne denregistrement ayant pour identifiant 1 (id=1)

13

e-Mise jour dun enregistrement

UPDATE t_personne SET Age= 35 WHERE id=1 Cette requte va mettre jour dans la table t_personne

lenregistrement dont le champs id est gal 1 (id=1) en modifiant le champs Age 35.

14

f-Suppression dun enregistrement


DELETE FROM t_personne WHERE id=1

Cette requte SQL va supprimer de la table t_personne lenregistrement ayant pour identifiant 1 (id=1).

15

5- Accder MYSQL via PHP


Dans ce paragraphe nous allons voir comment combiner

le langage SQL aux fonctions spcifiques de PHP pour exploiter le contenu dune base de donnes MYSQL.

16

a- Connection un serveur MYSQL


La premire opration raliser pour accder MYSQL

via un script PHP correspond la connection un serveur de base de donnes MYSQL. Syntaxe

<? mysql_connect("$nom_serveur_MYSQL", "$utilisateur", "$mot_de_passe"); ?> Exemple <? $nom_serveur_MYSQL="localhost" ; $utilisateur="root" ; $mot_de_passe="" ; mysql_connect("$nom_serveur_MYSQL", "$utilisateur", "$mot_de_passe"); ?>
17

La fonction mysql_connect() retourne un boolen ; True

si la connection est possible False si elle ne lest pas

18

b- Connection une base de donnes MYSQL


Suite la connection au serveur MYSQL, il faut choisir

quelle est la base du serveur MYSQL sur laquelle nous dsirons nous connecter. Un serveur MYSQL pouvant contenir plusieurs bases de donnes. Syntaxe <? mysql_select_db("$nom_de_la_base"); ?> Exemple <? $adresse_serveur_MYSQL="localhost" ; $utilisateur="root" ; $mot_de_passe="" ; $nom_de_la_base="exercice" ; mysql_connect("$adresse_serveur_MYSQL", "$utilisateur", "$mot_de_passe"); mysql_select_db("$nom_de_la_base"); ?> 19

De mme la fonction mysql_select_db() retourne un

boolen ; True si la connection est russie, False si elle a chou

20

c- Excution dune requte SQL via PHP

Le lancement dune requte SQl au travers dun script PHP se fait par le biais de la fonction mysql_query() qui prend en paramtre la requte SQL et retourne true ou false selon que la requte ait russi ou chou. Pour le cas particulier dune requte avec SELECT et si la requte a russi alors un identifiant est retourn afin dtre exploit par dautres fonctions.

21

Syntaxe <? $res = mysql_query("$requete_sql"); ?> Exemple <? $adresse_serveur_MYSQL="localhost" ; $utilisateur="root" ; $mot_de_passe="" ; $nom_de_la_base="exercice" ; $requete_sql="INSERT INTO t_personne (id, Nom, Prenom, Age) VALUES (NULL,'Joulak', 'Tarak', 32)" ; mysql_connect("$adresse_serveur_MYSQL", "$utilisateur", "$mot_de_passe"); mysql_select_db("$nom_de_la_base"); $res = mysql_query("$requete_sql"); ?>
22

Dans lexemple prcdent une ligne denregistrement a t

ajoute la table t_personne contenant Tarak Joulak 32. En remplaant la requte de lexemple prcdent par les requtes SQL de modification et suppression vues dans le paragraphe prcdent on obtient les rsultats dj observs en excutant directement la requte SQL

23

d- Parcourir le rsultat dun SELECT


Une requte SQL de consultation peut retourner plusieurs enregistrements. De ce fait il y a besoin de pouvoir les consulter enregistrement par enregistrement et champs par champs. mysql_fetch_array() est la fonction PHP destine pour ce type de traitements. Cette fonction prend en entre lidentifiant retourn par mysql_query(). Elle retourne un tableau contenant la ligne demande ou false sil ny a plus denregistrement. Elle est gnralement exploite dans une boucle WHILE.
24

Syntaxe <? $data = mysql_fetch_array($resultat_de_mysql_query) ; ?> Exemple while ($data= mysql_fetch_array($res)) { echo $data['Nom'].' '.$data['Prenom'] ' ' .$data['Age'] '<br>'; . . } <? mysql_connect("localhost" , "root" , ""); mysql_select_db("exercice"); $requete_sql="SELECT * FROM t_personne" ; $res = mysql_query("$requete_sql");?> Lexcution de ce script affichera lensemble du contenu de la table t_personne avec un enregistrement par ligne.
25

II- Passage et transmission de variables

1-Passage et transmission de variables par formulaire


Quand dans un site web un formulaire est rempli et envoy, le contenu des champs saisis est Transfr la page destination sous forme de variables. Ce passage de variables ou de paramtres Peut se faire de deux manires : en GET ou en POST.

27

Syntaxe <html> <body> <!Envoi dun formulaire en POST --> - <form method="post" action="destination.php"> <input type="text" name="nom" size="12"><br> <input type="submit" value="OK"> </form> <!Envoi dun formulaire en GET ><form method="get" action=" destination.php"> </form> </body> </html>

28

En GET les paramtres apparaissent associs lurl sous

formes de variables spares par des & (http://localhost/destination.php?nom=Tarak&prenom=J oulak). En POST le passage de paramtre se fait de manire invisible. Selon que la mthode denvoi a t du GET ou du POST la rcupration du contenu des variables est faite selon une syntaxe diffrente : Syntaxe <? / /Dans le cas dun envoi des paramtres en POST $variable1=$_POST'nom_du_champ'] ; [ / /Dans le cas dun envoi des paramtres en GET $variable1=$_GET['nom_du_champ'] ; ?>

29

Exemple 1 : Dans lexemple suivant le fichier formulaire.html

contient le script html permettant dafficher un formulaire et denvoyer les rsultats de la saisie la page resultat.php qui elle les affichera. Fichier formulaire.html <html> <body> <form method="post" action="resultat.php"> Nom : <input type="text" name="nom" size="12"><br> Prnom : <input type="text" name="prenom" size="12"> <input type="submit" value="OK"> </form> </body> </html>
30

Fichier resultat.php <? / /Rcupration des paramtres passs ] ; $prenom =

$_POST['prenom'; $nom = $_POST['nom'] / /affichage des paramtres echo "<center>Bonjour $prenom $nom</center>"; ?> En excutant travers le serveur web le fichier formulaire.html, en remplissant le formulaire et en cliquant sur OK, nous sommes emmens vers la page resultat.php qui nous affiche une phrase compose des champs saisis dans le formulaire. Les champs saisis sont donc pass de formulaire.html vers resultat.php.

31

Exemple 2 : Lexemple prcdent peut tenir dans un seul fichier qui

senverrait lui mme les paramtres Fichier formulaire.php <? if ($_POST['submit'] == "OK") { <input type="submit" name="submit" value="OK"> //Le formulaire a t transmis //Rcupration des paramtres passs $prenom = $_POST['prenom']; $nom = $_POST['nom']; //affichage des paramtres echo "<center>Bonjour $prenom $nom</center>"; } else { ?> <!-- Affichage du formulaire de saisie --> <form method="post" action="formulaire.php"> Nom : <input type="text" name="nom" size="12"><br> Prnom : <input type="text" name="prenom" size="12"> </form> <? } ?> 32

Remarque : La dfinition de la destination du formulaire

(action="formulaire.php") aurait pu ne pas tre nominative mais exploiter une variable serveur PHP_SELF puisque les paramtres sont envoyes la page elle mme. Ainsi $_SERVER['PHP_SELF'] retournera naturellement formulaire.php. Cela donnera donc : <form method="post" action="<? echo $_SERVER['PHP_SELF']; ?>" > la place de <form method="post" action="formulaire.php">
33

2-Passage et transmission de variables par hyperlien


Des paramtres ou variables peuvent passer dune page

source vers une page destination sans transiter par un formulaire pour leur envoi. Les hyperliens peuvent tre des vecteurs de passage de paramtre. Syntaxe <!Syntaxe denvoi --> . <a href=destinat onphp ?variable1=contenu1&variable2=contenu2&> Lien </a> La rcupration des paramtres dans la page destination se fait par le tableau $_GET <? $variable1=$_GET['variable1'] ; $variable2=$_GET['variable2'] ; ?>
34

Exemple :

Dans lexemple suivant nous allons crer un fichier

menu.php contenant un menu fait dhyperliens. Chacun de ces hyperliens enverra des paramtres diffrents. Ce menu sera appel dans une page qui ragira diffremment selon le paramtre envoy. Fichier menu.php <table width="200" border="0" cellspacing="0" cellpadding="1"> <tr> <td> <a href="page.php?menu=1">Menu1</a> </td> </tr> <tr> <td> <a href="page.php?menu=2">Menu2</a> </td> </tr> <tr> <td> <a href="page.php?menu=3">Menu3</a> </td> </tr> </table>
35

Fichier page.php

<? Include("menu.php") ; echo "<br><br>" ; $menu=

$_GET['menu'] ; switch ($menu) { case 1: echo "Ceci est la page obtenue du Menu1" ; break; case 2: echo "Ceci est la page obtenue du Menu2" ; break; case 3: echo "Ceci est la page obtenue du Menu3" ; break; default: echo "Ceci est la page daccueil" ; } ?>
En excutant travers le serveur web page.php, la

slection de chacun des menus chargera nouveau la page en envoyant des paramtres diffrents qui seront traits par la page.

36

3- Redirection
La fonction essentielle de la redirection consiste sitt

que linstruction a t trouve de lexcuter en redirigeant lutilisateur vers la page spcifie. Header() int header( Location :string destination ) Syntaxe
<? header("Location:$page_destination"); exit() ; ?>

37

Exemples

<? header("Location:http://www.google.com"); exit() ;

?> Le rsultat obtenu sera : Vous serez automatiquement redirectionn vers le site de google <? header("Location:menu.php"); exit() ; ?> Le rsultat obtenu sera :Vous serez automatiquement redirectionn vers la page menu.php de votre rpertoire web Remarque importante La fonction header doit tre appele avant la premire balise HTML, et avant n'importe quel envoi de commande PHP. C'est une erreur trs courante que de lire du code avec la fonction include et d'avoir des espaces ou des lignes vides dans ce code qui produisent un dbut de sortie avant que header n'ait t 38 appel.

S-ar putea să vă placă și