Documente Academic
Documente Profesional
Documente Cultură
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
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
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, )
10
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
13
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
Cette requte SQL va supprimer de la table t_personne lenregistrement ayant pour identifiant 1 (id=1).
15
le langage SQL aux fonctions spcifiques de PHP pour exploiter le contenu dune base de donnes MYSQL.
16
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
18
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
20
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
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
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
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
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
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
$_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
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
(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
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 :
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
$_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
?> 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.