You are on page 1of 59

Universit Ibn Zohr Facult des Sciences, Dpartement de Mathmatiques et Informatique Agadir

A.U. 2009-2010

Cours Programmation Web dynamique (PHP-MySQL) Filire Sciences Mathmatiques et Informatique (SMI5)

1 Introduction
Ce document dcrit les grandes lignes du module "Programmation web dynamique". Il est destin aux tudiants de la filire sciences mathmatiques et informatique (SMI5) de la facult des sciences dAgadir qui ont suivi le cours "Initiation la programmation web" et qui ont lhabitude de programmer dans un langage de programmation tel que le langage C. Ltudiant, y trouvera : Une prsentation du langage PHP (syntaxe, nouveauts par rapport au langage C), La manipulation de fichiers avec PHP, Un rsum sur les fonctions qui permettent de manipuler une base de donnes MySQL, Les fonctions de manipulations de chaine de caractres, La gestion de la date et de lheure.

Le document est accompagn aussi dun ensemble de travaux pratiques et un mini projet permettant aux tudiants dattaquer le dveloppement de projet rels. La dernire partie, dcrit dune manire dtaille les diffrentes tapes dinstallation et de configuration du trio Apache/PHP/MySQL sous le systme Windows XP.

Programmation Web avec PHP - L. KOUTTI

Page 1

1 2

Introduction .................................................................................................................................. 1 Prsentation du langage PHP ....................................................................................................... 3 2.1 Historique .............................................................................................................................. 3 2.2 Prsentation de PHP .............................................................................................................. 3 2.3 Environnement de dveloppements....................................................................................... 3 2.4 Les bases de PHP .................................................................................................................. 4 2.5 Identification des commandes PHP ....................................................................................... 6 2.6 Sparateur dinstructions PHP............................................................................................... 7 2.7 Commentaires ........................................................................................................................ 7 2.8 Afficher du texte.................................................................................................................... 7 2.9 Les constantes et les variables ............................................................................................... 8 2.9.1 Variables ........................................................................................................................ 8 2.9.2 Test et dfinition des types de variables ........................................................................ 8 2.9.3 Test de ltat dune variable ........................................................................................... 8 2.9.4 Constantes ...................................................................................................................... 9 2.10 Types de donnes du PHP ................................................................................................. 9 2.11 Transtypage (casting)......................................................................................................... 9 2.12 Porte dune variable ....................................................................................................... 10 2.13 Les variables dynamiques ................................................................................................ 10 2.14 Les tableaux en PHP ........................................................................................................ 11 2.15 PHP et les formulaires ..................................................................................................... 13 2.15.1 Formulaire HTML........................................................................................................ 13 2.16 Stockage et rcupration des donnes ............................................................................. 17 2.17 Prsentation des fonctions de traitement des fichiers ...................................................... 17 2.18 Chanes de caractres ....................................................................................................... 21 2.19 Gestion de la date et de lheure........................................................................................ 21 3 Interfaage de PHP et MySQL................................................................................................... 23 3.1 Introduction ......................................................................................................................... 23 3.2 Architecture dune base de donnes Web ........................................................................... 23 3.3 Cration de la base de donnes Web ................................................................................... 25 3.4 Ouverture dune session MySQL ........................................................................................ 25 3.5 Cration des bases de donnes ............................................................................................ 25 3.6 Choix de la base de donnes................................................................................................ 25 3.7 Cration des tables de la base de donnes ........................................................................... 27 3.8 Types de donnes manipuls par MySQL........................................................................... 28 3.9 Accs votre base de donnes MySQL partir du Web, avec PHP .................................. 29 3.10 Principales fonctions pour laccs MySQL .................................................................. 32 4 Travaux pratiques ....................................................................................................................... 33 PHP TP N0 ................................................................................................................................ 33 PHP TP N1 ................................................................................................................................ 35 PHP TP N2 ................................................................................................................................ 39 PHP TP N3 ................................................................................................................................ 40 PHP TP N4 ................................................................................................................................ 43 Mini projet...................................................................................................................................... 44 5 Installation et Configuration dApache, de PHP et de MySQL sous Windows XP .................. 48 5.1 Introduction ......................................................................................................................... 48 5.2 Installation de MySQL sous Windows................................................................................ 48 5.3 Installation dApache .......................................................................................................... 53 5.4 Installation de PHP .............................................................................................................. 57 5.5 Ajout de PHP votre configuration Apache ....................................................................... 57 5.6 Test de linstallation de PHP .............................................................................................. 58 5.7 Ressources bibliographiques et webographiques ................................................................ 58 Programmation Web avec PHP - L. KOUTTI Page 2

2 Prsentation du langage PHP


2.1 Historique
Les origines de PHP remontent la mi-1993 avec le site de Rasmus Lerdorf : une page personnelle qui permettait de conserver une trace de passage des utilisateurs. Fvrier 1994 publication de la version 1.0 suite la demande de la mise disposition de cet outil par de nombreux utilisateurs. Et 1995, apparition de la version 2.0 (Intgration des structures des structures plus avances : conditions, boucles, intgration des formulaires ) La version 2.0 permettra ainsi au dveloppeur dintgrer des instructions de programmation puissantes directement dans du code HTML. Cest ainsi leffort dune communaut de dveloppeurs qui a ensuite permis de produire les versions ultrieures. Juin 1998 publication de la version 3.0 Dbut 2000 apparition de la version 4.0 Aujourdhui: PHP version 5

2.2 Prsentation de PHP


Langage de scripts cot serveur proche du C, Il a t conu spcifiquement pour la cration dynamique des pages HTML, Il sintgre dans une page HTML, PHP est un produit Open Source, Licence GPL, Dvelopp en C, Indpendant de la plate-forme utilise puisquil est excut ct serveur et non ct client.

Les Principaux atouts de PHP sont: La gratuit et la disponibilit du code source (PHP4 est distribu sous licence GNU GPL), La simplicit d'criture de scripts, La possibilit d'inclure le script PHP au sein d'une page HTML, La simplicit d'interfaage avec les principaux systmes de gestion de bases de donnes, L'intgration au sein de nombreux serveurs web (Apache, Microsoft IIS, ...), Indpendance vis--vis des OS et serveurs mme si lenvironnement Linux est sa plate forme de prdilection.

2.3 Environnement de dveloppements


Pour vos dveloppements des pages web dynamiques avec PHP, vous aurez besoin : Un OS : Windows, Linux Un serveur web avec un interprteur PHP o Apache o Configurable avec conf/httpd.conf (fichier texte) Page 3

Programmation Web avec PHP - L. KOUTTI

o Voir aussi le fichier php.ini pour configurer linterprteur Un diteur de texte pour crire des scripts o NotePad par exemple (vous pouvez opter pour dautres diteurs plus sophistiqus, Ultraedit, NotePad++) ventuellement une base de donnes o MySQL par exemple

2.4 Les bases de PHP


Au dpart, une page PHP est tout simplement une page HTML. Cela signifie que celle-ci comporte des balises places au sein dune structure HTML classique :
<HTML> <HEAD> <TITLE></TITLE> </HEAD> <BODY> < /BODY> </HTML>

Les balises PHP sont incluses lintrieur du code HTML, mais elles sont repres par les mentions suivantes : < ? et ?> Exemple :
<HTML> <HEAD> <TITLE> </TITLE> </HEAD> <BODY> <? echo "<b>Coucou le monde ! Cest ma premire page PHP ?> </BODY> </HTML>

</b>";

Si nous plaons une telle page sur un serveur, et veillons lui donner un nom portant lextension .php (plutt que .html), le serveur va analyser le code avant denvoyer la page au poste client. Code source

Gnration dune page PHP Programmation Web avec PHP - L. KOUTTI Page 4

Figure 1 Premire page Web en PHP

Pour savoir ce qui sest pass au niveau du serveur, il suffit daller dans le menu Affichage puis de lItem source On voit apparatre le code source suivant :
<HTML> <HEAD> <TITLE> Ma premire page PHP </TITLE> </HEAD> <BODY> <b> Coucou le monde ! Cest ma premire page PHP. </b> </BODY> </HTML>

La commande echo incluse entre < ? et ?> a disparu. Il ne subsiste que de lHTML. Lanalyseur prsent au niveau du serveur a converti la balise PHP de manire produire du HTML, puis a envoy cette page au poste client. Pour mieux prendre la mesure la mesure dun tel travail au niveau du serveur, considrons la page suivante :
<HTML> <HEAD> <TITLE> Boucle en PHP </TITLE> </HEAD> <BODY> <? for ($i=1; $i<=7; $i++) { echo "<FONT SIZE = $i>"; echo "Une boucle en PHP"; echo "<BR>"; } ?> </BODY> </HTML>

Linstruction for est une boucle. Elle comporte une valeur de dpart (1) et une valeur darrive (6). Les instructions entre les accolades sont excutes aussi longtemps que la variable $i est infrieur 6. Linstruction $i++ signifie que lon ajoute 1 chaque passage.

Programmation Web avec PHP - L. KOUTTI

Page 5

Figure 2

Excution d'une boucle avec PHP

La page qui rsulte dune telle excution affiche la phrase Une boucle en PHP avec six tailles de caractres diffrentes. Cette fois, si nous affichons le code source, nous dcouvrons quil est le suivant :
<HTML> <HEAD> <TITLE>Une </HEAD> <BODY> <FONT SIZE <FONT SIZE <FONT SIZE <FONT SIZE <FONT SIZE <FONT SIZE <FONT SIZE </BODY> </HTML>

boucle en PHP </TITLE>

= = = = = = =

1>Une 2>Une 3>Une 4>Une 5>Une 6>Une 7>Une

boucle boucle boucle boucle boucle boucle boucle

en en en en en en en

PHP<BR> PHP<BR> PHP<BR> PHP<BR> PHP<BR> PHP<BR> PHP<BR>

Lanalyseur PHP situ au niveau du serveur a gnr toute une squence du code HTML partir du code PHP. Le script PHP est excut sur le serveur. Celui-ci nenvoie au poste client que de lHTML. Cela signifie que le script pourra fonctionner quelque soit le navigateur utilis. Lorsque le langage de script est excut sur le client (cas de JavaScript par exemple), il nest pas toujours sr quil soit excut correctement. PHP rsout ce problme en plaant lexcution du script sur le serveur, lequel gnre une page HTML normale, gnralement comprhensible par tous les navigateurs.

2.5 Identification des commandes PHP


Lanalyseur qui se trouve au niveau du serveur ne traite que les commandes PHP. Les balises HTML ne sont pas prises en compte, elles sont envoyes telles quelles au poste client. Pour utiliser PHP, Rasmus Lerdorf a invent une balise spciale. Elle commence par <? et se termine par ?>. Programmation Web avec PHP - L. KOUTTI Page 6

Toutes fois, dautres balises existent :


<?php ?> ou <script language="php"> </script>

2.6 Sparateur dinstructions PHP


A linstar de langages tels que le C ou Java, PHP requiert un point virgule la fin de chaque instruction.

2.7 Commentaires
Quelques que soit le langage de programmation utilis, il est judicieux dinclure des commentaires qui faciliteront la relecture du code. PHP accepte trois formes de commentaires. La premire forme o le commentaire peut staler sur plusieurs lignes :
<? echo "Hello Word"; /* ce commentaire se prolonge sur plusieurs lignes ?> /* commentaire sur une ligne */

*/

La deuxime forme est le commentaire sur une seule ligne :


< ? echo "Hello Word"; ?> // commentaire sur une ligne

La troisime est conforme Unix :


<? echo "Hello Word"; ?> # commentaire sur une ligne faon Shell Unix

2.8 Afficher du texte


Linstruction PHP echo permet dcrire sur la sortie standard (fichier HTML). Syntaxe :
echo Expression; echo "String";

Dautres fonctions permettent aussi laffichage : La fonction print :


print(expression); print("String");

La fonction printf : Programmation Web avec PHP - L. KOUTTI Page 7

printf (chane formate);

Exemples :
echo (5+9-8)*10; print (5+9-8)*10); printf ("Lanne %d est bissextile", $Annee);

2.9 Les constantes et les variables


2.9.1 Variables
En PHP les variables sont identifies avec $. Lidentifiant dune variable ne doit comporter que des caractres alphanumriques ou le caractre soulign (_). Un identificateur ne peut pas commencer par un chiffre. Dans le langage PHP, les identificateurs sont sensibles la casse. En PHP, il nest pas ncessaire de dclarer les variables avant de les utiliser. Une variable est automatiquement cre lorsquune valeur lui est affecte pour la premire fois.

PHP dispose dune palette de fonctions qui permettent la manipulation et le test des variables de diffrentes manires.

2.9.2 Test et dfinition des types de variables


La plupart des fonctions de variables sutilisent pour tester le type des variables. Les deux fonctions de variables les plus gnrales sont gettype () et settype (). gettype () semploie en lui passant une variable. La fonction dtermine alors le type de la variable et retourne une chane contenant le nom du type : boolean, integer, double, string, array Pour utiliser settype(), il faut passer la fonction la variable dont le type doit tre modifier, ainsi quune chane contenant le nom du nouveau type appliquer la variable. Illustration:
$var = 15 ; echo gettype($var).'<br>' ; settype($var, 'double') ; echo gettype($var);

Lors du premier appel de la fonction gettype (), la variable $var est type integer. Aprs lappel de settype (), $var est du type double. PHP fournit galement des fonctions testant un certain type de variable. Chacune de ces fonctions prend une variable comme argument et retourne soit true, soit false. Ces fonctions sont : is_array (), is_double (), is_integer (), is_string ()...

2.9.3 Test de ltat dune variable


PHP fournit plusieurs fonctions pour tester ltat dune variable.

Programmation Web avec PHP - L. KOUTTI

Page 8

isset () : cette fonction prend un nom de variable comme argument et renvoie true si la variable existe et retourne galement false si la variable nexiste pas. A ce titre, elle est utilise pour contrler lexistence des variables issues des formulaires. unset () : cette fonction supprime la variable qui lui est passe comme argument. empty () : cette fonction dtermine si une variable existe et contient une valeur non vide. empty () retourne true ou false selon le rsultat obtenu.

2.9.4 Constantes
Si lon dsire grer des valeurs fixes, non modifiables, il faut dfinir des constantes. Cest linstruction define () qui permet de dfinir les constantes : Exemples :
define ("AgeMin", 18) ; define ("PI", 3.14) ; echo AgeMin ; /* affiche le nombre 18 */

2.10 Types de donnes du PHP


Le langage PHP prend en charge les types de donnes de base suivantes : Entier : utilis pour les nombres entiers Float : (aussi appel Double). Utilis pour les nombres rels. Chane : utilis pour les chanes de caractres. Boolen : utilis pour exprimer les valeurs vraies ou fausses. Tableau : utilis pour stocker plusieurs lments de donnes de mme type

2.11 Transtypage (casting)


A linstar du langage C, il est possible de modifier le type dune variable en PHP. Le principe consiste spcifier le type temporaire entre parenthses, juste avant la variable concerne. Syntaxe :
$new = (type) $old ;

On modifier le type dune variable en crant une nouvelle variable du type voulu, soit en modifiant le type de la variable elle-mme. En fait, partir dune variable donne $old, on peut crer une nouvelle variable $new qui aura le type dsir selon la syntaxe :
$new = (type dsir) $old ;

Dans ce cas la valeur affecte $new est modifie si cela est ncessaire pour quelle soit conforme au type dsir. Le type et la valeur de $old, eux, ne sont pas modifis.

Programmation Web avec PHP - L. KOUTTI

Page 9

Il existe galement une autre mthode qui permet de modifier le type dune variable, mais sans crer une nouvelle variable ce qui implique que le type initial est perdu et que la valeur initiale peut tre perdue. On utilise, pour cela, la fonction settype(), qui suit la syntaxe :
settype($nom_variable, "nom_du_type_final") ;

Il est noter quen plus de la fonction gettype() qui permet de retourner le type dune variable, PHP dispose dun ensemble de fonctions, qui retournent une valeur boolenne, et qui permettent de vrifier le type dune variable. Ces fonctions sont : is_array(), is_bool(), is_double(), is_integer(), is_object(), is_ressource(), is numeric(). Exemple Quelques cas de transtypage sont prsents ci-aprs:
<?php $old = 25.7 ; // $old est de type double settype($old, "integer"); echo "\$old a la valeur ", $old, " et elle est de type ", gettype($old), "<br>"; //affiche 25 $old = "25.7"; // $old est du type string par typage automatique $new =(double) $old ; //$new a la valeur dcimale 25.7 et le type double $c =(integer) $old ; //$c a la valeur entire 25 et le type integer ?>

2.12 Porte dune variable


La porte dune variable dsigne les emplacements au sein dun script o la variable est visible. Les variables super globales prdfinies sont visibles nimporte quel endroit dans un script (exemple PHP_VERSION, PHP_OS). Les constantes, une fois dclares, sont visibles globalement : autrement dit, elles peuvent tre utilises lintrieur et lextrieur de fonctions. Les variables globales dclares dans un script sont visibles sur tout le script, mais pas lintrieur des fonctions. Les variables cres lintrieur de fonctions et dclares comme statiques sont invisibles en dehors de la fonction mais conservent leur valeur entre une excution de la fonction et la suivante. Les variables cres lintrieur dune fonction sont locales la fonction et cessent dexister lorsque cette dernire se termine.

2.13 Les variables dynamiques


Contrairement une variable ordinaire dont le nom est fix une fois pour toute par le programmeur du script, une variable dynamique peut voir son nom dfini dynamiquement en cours de script partir dune chane de caractre qui peut provenir de lutilisateur ou du contenu dun champ de base de donnes. Lexemple ci-aprs dcrit un script o trois variables sont cres dynamiquement. En fait les variables $ma_var1, $ma_var2, $ma_var3 sont dfinies en ajoutant un numro $i la valeur de la variable $chaine qui est : ma_var. La notation $$base dsigne la variable dont le nom sera le contenu de la chane $base. On affecte ensuite des valeurs ces nouvelles variables. Les variables ainsi cres sont utilisables dans tout le script. Le type de ces variables dpend comme pour les autres variables, de la valeur qui leur est affecte. Programmation Web avec PHP - L. KOUTTI Page 10

<?php $chaine = "ma_var" ; for ($i=1 ; $i<4 ;$i++){ $base=$chaine.$i; //cre les noms des variables $$base=2000+$i ;//affecte les variables } echo "\$ma_var1 vaut : " , $ma_var1, "<br>"; echo "\$ma_var2 vaut : " , $ma_var2, "<br>"; echo "\$ma_var3 vaut : " , $ma_var3, "<br>"; ?>

2.14 Les tableaux en PHP


Le langage PHP supporte les tableaux indics numriquement ( linstar du langage C) et les tableaux associatifs. Les tableaux classiques : chaque lment du tableau possde un indice numrique qui permet de le reprer.

Exemple :
<?php $Articles = array ('Tomates', 'Pommes', 'Carottes', 'Poivrons'); echo "Llment dindice trois est : $Articles[3] " ; ?>

Ce script cre un tableau appel Articles contenant quatre valeurs (Tomates, Pommes, Carottes et Poivrons. La deuxime instruction permet dafficher le quatrime lment. Les tableaux associatifs: ils permettent dutiliser des valeurs plus significatives que des nombres comme lindice.

Lindice nest plus ncessairement un nombre mais peut aussi tre une chane de caractres par laquelle llment sera identifi et que lon appellera la cl de llment.
<?php $LeTablo = array ("Ville" => "Agadir", "Cit" => "Dakhla"); echo "La ville choisie est : {$LeTablo["Ville"]}"; ?>

Remarque : PHP permet daffecter globalement les lments dun tableau un autre. On peux enregistrer de manire automatique une srie de nombre croissants dans un tableau grce la fonction range()

Syntaxe :
$LesEntiersInfACent = range(1,99) ;

En PHP, il est possible de redimensionner dynamiquement un tableau. Illustration : Programmation Web avec PHP - L. KOUTTI Page 11

<?php $Articles = array ('Tomates', 'Pommes', 'Carottes', 'Poivrons'); echo "Llment dindice trois est : $Articles[3] " ; $Articles[4] = 'Oranges' ; $Articles[] = 'Oignons' ; ?>

A linstar du langage C vous pouvez accder au contenu dun tableau indic par une srie de nombres en utilisant une boucle for.
for ($i = 0; $i < count ($Articles); $i++) echo $Articles[$i];

PHP utilise une autre boucle spcialement conue pour tre utilise avec les tableaux cest la boucle foreach. Syntaxe :
foreach ($Articles as $courant) echo $ courant.' ' ;

Ce code enregistre tour tour chacun des lments de lensemble parcouru dans la variable $courant et affiche le contenu de celle-ci. Cas des tableaux associatifs
$Prix=array('Tomates'=>7, 'Oignons'=>5, 'Oranges'=> 6, 'Carottes'=>4) ;

Cette instruction cre un tableau dont les noms des articles sont les cls et dont les prix sont les valeurs. Etant donn que dans le tableau Prix, les cls ne sont pas des nombres, il nest pas possible dutiliser un compteur simple pour raliser des itrations sur le tableau. A la place, nous pouvons faire appel une boucle foreach ou aux constructions list() et each().
foreach ($Prix as $Key => $value) echo $Key. ' => ' .$value. '<br>';

La fonction each() fonction permet de parcourir tous les lments d'un tableau sans se soucier de ses bornes. Elle retourne la combinaison cl-valeur courante du tableau pass en paramtre, puis se positionne sur l'lment suivant, et cela du premier au dernier indice. Lorsque la fin du tableau est atteinte, each( ) retourne la valeur faux (false). La fonction list() est trs souvent associe la fonction each(), elle permet d'affecter les lments du tableau dans des valeurs distinctes.
$Prix=array('Tomates '=>7, 'Oignons' =>5, 'Oranges' =>6, 'Carottes' =>4); while($element = each($Prix)) { echo $element ['key']; echo '-'; echo $element ['value']; echo '<br>'; }

Programmation Web avec PHP - L. KOUTTI

Page 12

Les fonctions de tri Tri selon les valeurs o La fonction sort () effectue un tri sur les valeurs des lments dun tableau selon un critre alphanumrique : selon les codes ASCII (le caractre a est aprs Z) Le tableau initial est modifi et non rcuprables dans son ordre original Pour les tableaux associatifs les cls seront perdues et remplaces par un indice cr aprs le tri et commenant 0

o La fonction rsort() effectue la mme action mais en ordre inverse des codes ASCII. o La fonction asort() trie galement les valeurs selon le critre des codes ASCII, mais en prservant les cls pour les tableaux associatifs o La fonction arsort() la mme action mais en ordre inverse des codes ASCII o la fonction natcasesort() effectue un tri dans lordre alphabtique non ASCII (le caractre (a est avant z) Tri sur les cls o La fonction ksort() trie les cls du tableau selon le critre des codes ASCII, et prserve les associations cl /valeur o La fonction krsort() effectue la mme action mais en ordre inverse des codes ASCII

<?php $tabAuteur=array("1622"=>"Molire","1802"=>"Hugo","1920"=>"Vian", "1905"=>"Sartre") ; ksort ($tabAuteur); echo "<h3 > Tri sur les cls de \$tabAuteur </h3>" ; foreach ($tabAuteur as $cle=>$valeur) { echo "<b> llment a pour cl : $cl; et pour valeur : $valeur</b> <br>"; } ?>

Les fonctions tableaux sont nombreuses et ne seront pas toutes listes dans ce document, on peux tout de mme citer quelques unes : next() end() prev() => permet de dplacer le pointeur vers llment suivant du tableau => retourne le dernier lment du tableau => positionne le pointeur interne du tableau sur llment du tableau situ avant llment courant et retourne celui-ci current() => retourne l'lment courant point par le pointeur interne reset() => replace le pointeur de tableau au premier lment et retourne ce dernier array_merge() => enchane des tableaux entrs en argument afin d'en retourner un seul tableau.

2.15 PHP et les formulaires


2.15.1 Formulaire HTML
Le principal objectif dun formulaire est la collecte des informations saisies par un utilisateur vers une application serveur. Rcuprer les donnes saisies par un utilisateur dans un tel formulaire se rvle trs facile avec PHP mais la mthode employe dpend de la version de PHP que vous utilisez et dun paramtrage dans votre fichier php.ini. La cration dun formulaire ncessite la connaissance de quelques balises HTML indispensables : Programmation Web avec PHP - L. KOUTTI Page 13

Structure : un formulaire commence toujours par la balise <form> et se termine par la balise </form>

Entre ces deux balises se situent les balises qui vont crer les diffrents types de champ que va contenir le formulaire. Champ de saisie de text inligne :

<input type = "text" name ="nom_du_champ" value="valeur">

Boutons denvoi et deffacement :

<input type=" submit " value = "Envoyer"> <input type = "reset" name ="efface" value = "Effacer">

Case cocher et bouton radio :

<input type = "checkbox" name ="case1" value="valeur_case"> <input type = "radio" name ="radio1" value ="valeur_radio">

Liste de slection avec options choix unique :

<select name ="select" size="1"> <option value = "un"> choix </option> <option value ="deux"> choix2 </option> </select>

Liste de slection avec options choix multiples :

<select name ="select" size = "1" multiple> <option value = "un"> choix1 </option> <option value = "deux"> choix2 </option> </select>

La transmission se fait selon une des deux mthodes d'envoi GET ou POST. ). Il s'agit de mthodes implmentes dans le protocole HTTP appeles GET et POST 1. Mthode GET
o

La mthode GET place les informations d'un formulaire directement la suite de l'adresse URL de la page appele. Il s'agit du mode de transmission par dfaut. Les paramtres passs au moment de la validation sont ajouts l'URL du script appel. inconvnients : rendre visibles les donnes dans la barre dadresse du navigateur. de plus, la longueur totale est limite 255 caractres, ce qui rend impossible la transmission dun volume de donnes important.

Exemple dutilisation : Identite.html


<html> <head><title> Formulaire identit </title></head>

Programmation Web avec PHP - L. KOUTTI

Page 14

<body> <center> <FORM action = "Identite.php" method ="get"> <table> <tr> <td bgcolor ="#CCCCFF"> Nom </td> <td> <INPUT TYPE = "text" NAME = nom ></td> </tr> <tr> <td bgcolor ="#CCCCFF"> Prnom </td> <td><INPUT TYPE = "text" NAME = prenom></td> </tr> <tr> <td bgcolor ="#CCCCFF"> Age </td> <td><INPUT TYPE = "text" NAME = age ></td> </tr> <tr> <td colspan = 2> <center> <INPUT TYPE = submit VALUE = "Valider"> </center> </td> </tr> </table> </FORM> </center> </body> </html>

Une fois que le formulaire aura t envoy, le relais est pass une autre page Web : Identite.php. Identite.php
<html> <?php if ($nom <> "" && $prenom <> "" && $age <> ""){ $LaDateCourante = 2005; echo '<center>'; echo 'Bonjour'.' '; echo "$prenom".' '."$nom".'<br>'; echo "Vous tes n en". " "; echo $LaDateCourante - $age; echo '</center>'; }

Programmation Web avec PHP - L. KOUTTI

Page 15

else{ echo "<center><b>"; if($nom == "") echo "Le champs nom n'a pas t saisi<BR>\n"; if ($prenom =="") echo "Le champs prnom n'a pas t saisi <BR>\n"; if ($age == "") echo "Le champs age n'a pas t saisi"; } ?> </html>

Lorsque le formulaire passe le relais la page PHP, il indique dans lURL les noms des variables et leurs valeurs

Lors de la soumission une page de traitement, chaque lment de saisie est assimil une variable PHP dont le nom est constitu par la valeur de l'attribut name et son contenu par la valeur de l'attribut value Remarque : Quand vous saisissez la chane ?nom=Abbe&prenom=Pierre&age=100, vous aurez le mme rsultat. 2. Mthode POST o regroupe les informations dans l'entte d'une requte HTTP o assure une confidentialit efficace des donnes En spcifiant la mthode post pour envoyer les informations, les donnes sont envoyes dans le corps du message, elles ne sont donc pas visibles dans l'URL. Si vous reprenez les pages Web cidessus en utilisant la mthode post, vous aurez le mme rsultat. Programmation Web avec PHP - L. KOUTTI Page 16

2.16 Stockage et rcupration des donnes


Les donnes rcupres partir des formulaires HTML doivent tre enregistres en vue dun usage ultrieur. Traitement de donnes

Interface Web

Stockage des donnes

Deux modes de stockage des donnes sont rellement envisageables : dans des fichiers plats, ou dans une base de donnes. Un fichier plat peut tre enregistr sous de nombreux formats. Le terme fichier plat est employ pour dsigner un simple fichier texte. Cette partie est consacre au stockage des donnes dans des fichiers sous la forme dun enregistrement par ligne. Ce mode de stockage est trs simple mettre en uvre, mais se rvle assez limit (ds que le nombre dinformations traiter devient assez consquent, lusage dune base de donnes est recommand). Le problme est le suivant : On veut partir dune interface Web stocker les informations saisies dans un fichier de donnes. 2.17 Prsentation des fonctions de traitement des fichiers Lcriture dans un fichier seffectue en trois tapes : 1. Ouverture du fichier. 2. Ecriture dans le fichier. 3. Fermeture du fichier. De la mme manire, la lecture des donnes dun fichier seffectue en trois tapes : 1. Ouverture du fichier. Si louverture du fichier se rvle impossible, on doit le signaler par un message adquat. 2. Lecture des donnes dans le fichier. 3. Fermeture du fichier. Ouverture dun fichier En PHP, louverture dun fichier seffectue au moyen de la fonction fopen (). Lors de louverture dun fichier, vous devez spcifier le mode de fichier, c'est--dire la manire dont vous voulez utiliser le fichier. Programmation Web avec PHP - L. KOUTTI Page 17

Lorsque vous ouvrez un fichier : 1. Vous avez la possibilit de lutiliser en lecture seule, en criture seule, ou bien en lecture et en criture. 2. Pour crire des donnes dans le fichier, vous pouvez soit remplacer le contenu existant par vos nouvelles donnes ("craser" le contenu), soit ajouter les nouvelles donnes la suite du contenu existant. Utilisation de fopen () pour ouvrir un fichier Syntaxe :
$file = fopen ("identite.txt", 'w') ;

Le premier paramtre est le nom du fichier ouvrir, avec ventuellement le chemin daccs correspondant. Le deuxime paramtre passer la fonction fopen () est le mode du fichier, lequel doit tre spcifi sous la forme dune chane. Celui-ci indique lusage prvu pour le fichier. Dans lexemple considr ici, nous avons donn la valeur w ce paramtre, ce qui signifie que le fichier doit tre ouvert en vue dy crire des donnes. Le tableau ci-dessous rcapitule les divers modes de fichier disponibles.

Mode r r+ w

Nom du module Lecture Lecture Ecriture

w+

Ecriture

Ecriture prudente

x+

Ecriture prudente

Ajout

a+

Ajout

Signification Le fichier est ouvert en lecture, partir de son dbut. Le fichier est ouvert en lecture et en criture, partir de son dbut. Le fichier est ouvert en criture, partir de son dbut. Si le fichier existe dj, son contenu est cras. Dans le cas contraire, le fichier est cre. Le fichier est ouvert en criture et en lecture, partir de son dbut. Si le fichier existe dj, son contenu est cras. Dans le cas contraire, le fichier est cre. Le fichier est ouvert pour criture, en commenant au dbut du fichier. Si le fichier existe dj, il nest pas ouvert, fopen () retourne false et PHP gnre un avertissement. Le fichier est ouvert pour criture et lecture, en commenant au dbut du fichier. Si le fichier existe dj, il nest pas ouvert, fopen () retourne false et PHP gnre un avertissement. Le fichier est ouvert pour ajout (criture) uniquement, en commenant la fin du contenu existant. Si le fichier nexiste pas PHP tente de le crer. Le fichier est ouvert pour ajout (criture) et lecture, en commenant la fin du contenu existant. Si le fichier nexiste pas PHP tente de le crer. Page 18

Programmation Web avec PHP - L. KOUTTI

Lorsque louverture dun fichier avec la fonction fopen () russit, celle-ci retourne un pointeur sur le fichier, lequel doit tre enregistr dans une variable. Cette variable permet ensuite daccder au fichier pour y lire ou y crire des donnes. Lorsque lappel de la fonction fopen () choue, celle-ci retourne la valeur false. Vous pouvez traiter lerreur survenue avec plus de convivialit en supprimant le message derreur PHP et en gnrant votre propre message derreur :
@$file = fopen ("identite.txt", 'w') ; if( !$file) { echo '<p><strong>Le fichier ne peut pas tre ouvert . '</strong></p>'; exit ; }

en ce moment.'

La prsence du symbole @ avant lappel de la fonction fopen () informe linterprteur PHP quil doit supprimer toute erreur rsultant de lappel de la fonction. Linstruction if teste la variable $file pour dterminer si un pointeur de fichier valide a t retourn par la fonction fopen (). Si ce nest pas le cas, elle affiche un message derreur et interrompe lexcution du script. Ecriture dans un fichier En PHP, lcriture des donnes dans un fichier peut se faire par la fonction fwrite
fwrite ($File, $ChaineDeSortie, strlen($ChaineDeSortie)) ;

Cette instruction demande linterprteur PHP dcrire la chane stocke dans la variable $ChaineDeSortie dans le fichier sur lequel pointe $File. Formats de fichiers Lors de la cration dun fichier de donnes, le choix du format de stockage des donns vous appartient (bien sr, si vous prvoyez dutiliser le fichier de donnes avec une autre application, vous devez en tenir compte dans votre choix). Pour construire une chane reprsentant un enregistrement du fichier de donnes identite.txt, nous pouvons procder comme ceci :
$lidentite = $vnom ."\t" .$vprenom ."\t" .$vage . "\n";

Fermeture dun fichier Une fois que vous avez fini avec un fichier, vous devez le fermer au moyen de la fonction fclose (), comme suit :
fclose ($File) ;

Lecture dans un fichier

Programmation Web avec PHP - L. KOUTTI

Page 19

Il est possible de lire le contenu dun fichier grce la fonction fgets () qui permet de rcuprer une ligne du fichier. Elle renvoie 0 en cas d'chec, 1 dans le cas contraire Syntaxe :
fgets (entier Etat_du_fichier, entier Longueur);

Le paramtre Longueur dsigne le nombre de caractres maximum que la fonction est sense rcuprer sur la ligne Pour rcuprer l'intgralit du contenu d'un fichier, il faut insrer la fonction fgets () dans une boucle while. On utilise la fonction feof (), fonction testant la fin du fichier. Lecture de lintgralit du contenu dun fichier : readfile (), fpassthru () et file () Lappel de la fonction readfile () ouvre le fichier, affiche son contenu sur la sortie standard, puis ferme le fichier
readfile ("identite.txt") ;

La fonction fpassthru () permet d'envoyer le contenu dun fichier dans la fentre du navigateur.
fpassthru ($file);

Elle permet d'envoyer le contenu du fichier partir de la position courante dans le fichier. Elle n'ouvre pas automatiquement un fichier. Il faut donc l'utiliser avec fopen (). La fonction file () permet de retourner dans un tableau l'intgralit d'un fichier en mettant chacune de ces lignes dans un lment du tableau Autres fonctions utiles pour la manipulation des fichiers Vrification de lexistence dun fichier : file_exists (). Cette fonction permet de dterminer si un fichier existe, sans mme louvrir
if (file_exists ("identite.txt")) "On peut manipuler le fichier"; else "Le fichier identit nexiste pas" ;

filesize ("identite.txt") : cette instruction dtermine la taille en octets dun fichier grce la fonction. unlink ("identite.txt") : cette instruction dtruit le fichier identit. Navigation dans un fichier : rewind (), fseek () et ftell () rewind () : dplace le pointeur de fichier au dbut du fichier. ftell () : retourne la position du pointeur dans le fichier, en nombre doctets dbut du fichier. compts depuis le

Programmation Web avec PHP - L. KOUTTI

Page 20

2.18 Chanes de caractres


Ci-dessous les principales fonctions de manipulations de chaine de caractres sont dcrites : strpos (chaine, sous chaine) : retourne la position de la sous chane dans la chane. Dans le cas o la chane existe en plusieurs exemplaires, cest la position de la premire occurrence qui est retourne. strrpos retourne quand elle la position de la dernire occurrence. strstr (chaine, sous chaine) retourne la portion de la chane partir de la premire occurrence de la sous chane. strtolower|strtoupper (chaine) : retourne la chane passe en paramtres an minuscules (resp. majuscules). str_replace (car dorigine, car de destination, chaine) : remplace le caractre dorigine par le caractre de destination dans la chane. strcmp (chaine1, chaine2) : compare les chanes 1 et 2. Elle retourne 0 si les deux chanes sont gales. Si chaine1 vient aprs (ou suprieure ) chaine2 dans lordre lexicographique, la fonction strcmp retourne un nombre suprieur zro ; si cest linverse, elle retourne un nombre infrieur zro. Cette fonction est sensible la casse. strlen (chaine) : retourne la taille de la chane. strcasecmp : elle identique strcmp, si ce nest quelle est insensible la casse. substr () : permet daccder une sous chane dune chane, en spcifiant les points de dbut et de fin de la sous chane. Soit la chane $Politesse = "Bonjour tous le monde"; substr ($politesse, 0) retourne Bonjour tous le monde. Les positions dans les chanes sont numrotes partir de zro. ($politesse, -8) retourne le monde. ($politesse, 0, 5) retourne Bonjo. Exo partir de la chane 21/11/2005 construisez la chane 21/11/05 explode () : dcoupe une chane en fragments l'aide d'un dlimiteur et retourne un tableau.

$email_array = explode(@, $email) ; Lexcution de cette instruction conduit la division de ladresse de courrier lectronique en deux parties : le nom de lutilisateur, qui est enregistr dans $email_array [0], et le nom de domaine, qui est enregistr dans $email_array [1]. Leffet produit par la fonction explode () peut tre annul avec les fonctions implode () ou join (). Ces deux fonctions sont identiques. $new_array = implode(@, $email_array) ;

2.19 Gestion de la date et de lheure


getdate () : cette fonction retourne les lments de date et d'heure courante dans un tableau associatif. Ci-dessous, les cls et les valeurs du tableau associatif. Page 21

Programmation Web avec PHP - L. KOUTTI

Cl seconds Minutes Hours Mday Wday Mon Year Yday Weekday Month -

Valeur Secondes, numrique Minutes, numrique Heures, numrique Jour du mois, numrique Jour de la semaine, numrique Mois, numrique Anne, numrique Jour de lanne, numrique Jour de la semaine, format texte Mois, format texte

checkdate () : cette fonction semploie pour sassurer de la validation de dune date. Elle se rvle particulirement utile pour vrifier les dates saisies par lutilisateur. Elle prend en paramtre le mois, le jour et lanne et retourne true ou false selon la validit ou non de la date passe en argument. date () : est une autre fonction PHP de dtermination de date, elle retourne une chane de caractres date/heure selon le format.

Les codes de format reconnus par la fonction date () sont donns dans le tableau ci-dessous.

Code Description a Matin ou aprs-midi, reprsent sous la forme de deux caractres en minuscules : respectivement "am" et "pm" A Matin ou aprs-midi, reprsent sous la forme de deux caractres en majuscules : respectivement "AM" et "PM" d Jour du mois, sous la forme dun nombre deux chiffres, ventuellement prfix par un zro. La plage autorise stend de "01" "31". D Jour de la semaine, abrg en trois lettres : exemple "Fri" pour (vendredi) F Mois de lanne en anglais, au format texte, version longue. h Heure du jour, exprime dans le systme 12 h. H Heure du jour, exprime dans le systme 24 h. i Minutes, si ncessaires prfixes avec un zro. La plage autorise stend de "00" "59". j Jour du mois au format numrique, sans zro en prfixe. La plage autorise stend de "1" "31". l Jour de la semaine en anglais, au format texte, version longue. m Mois de lanne, sous la forme dun nombre deux chiffres, ventuellement prfixs par un zro. La plage autorise stend de "01" "12". M Mois de lanne en anglais, dans un format texte abrg en trois lettres. n Mois de lanne, sous la forme dun nombre deux chiffres, sans zro en prfixe. La plage autorise stend de "1" "12". s Secondes avec si ncessaire un zro en prfixe. La plage autorise stend de "00" "59". t Nombres total du jours dans le mois donn. La plage autorise stend de "28" "31". T Fuseau horaire du serveur U Nombres total de secondes qui se sont coules depuis le 1er janvier 1970 jusquau moment considr. Programmation Web avec PHP - L. KOUTTI Page 22

w W y Y z

Jour de la semaine sous la forme dun seul chiffre. La plage autorise stend de "0" (dimanche) "6" (samedi). Numro de la semaine dans lanne. Anne exprime en deux chiffres, par exemple "04" Anne exprime en quatre chiffres, par exemple "2004" Jour de lanne sous forme dun nombre. La plage autorise stend de "0" "365" mktime () : convertit une date et une heure en un entier contenant le nombre de secondes coules depuis le 1 Janvier 1970 (poque UNIX).

entier mktime(entier heure, entier minute, entier seconde, entier mois, entier jour, entier anne). Si lheure na pas dimportance dans votre le contexte de votre application, vous pouvez passer la valeur zro pour chacun des trois premiers paramtres, auquel cas linterprteur PHP les dfinira automatiquement sur les valeurs courantes.
<?php $date=date('d/m/y', mktime(0,0,0,date('m'),date('d')-1,date('y'))); echo $date; ?>

ce code affiche la date dhier au format d/m/r '21/11/05'.

3 Interfaage de PHP et MySQL


3.1 Introduction
Ce document dcrit les lments indispensables pour travailler avec une base de donnes Web. Le systme de gestion de base de donnes que lon va utiliser pour cette partie est MySQL. Pour mieux tirer profit des fonctionnalits quoffrent les bases de donnes Web, il est ncessaire de connatre le langage PHP qui permet la connexion MySQL et le langage SQL qui permet la manipulation de vos donnes.

3.2 Architecture dune base de donnes Web


Ce paragraphe prsente larchitecture externe des systmes de bases de donnes Web et prsente la mthodologie permettant de dvelopper ces systmes. Le fonctionnement fondamental dun serveur Web est prsent la figure 3. Ce systme est compos de deux objets : un navigateur Web et un serveur Web. Un lien de communication doit exister entre ces deux objets. Le navigateur effectue des requtes auprs du serveur et le serveur renvoie des rponses. Cette architecture est parfaitement adapte un serveur qui fournit des pages statiques. Larchitecture qui permet de servir des sites Web faisant intervenir des bases de donnes est un peu plus complexe.

Programmation Web avec PHP - L. KOUTTI

Page 23

Requte Navigateur Rponse


Figure 3 La relation client/serveur entre un navigateur Web et un serveur Web ncessite un lien de communication.

Serveur Web

Les applications de bases de donnes Web ont la structure reprsente par la figure 4 ci-dessous. 1 Navigateur 6 Serveur Web 5 2 Moteur PHP 4 3 Serveur MySQL

Figure 4 L'architecture fondamentale des bases de donnes Web est compose d'un navigateur Web, d'un serveur Web, dun moteur de scripts et dun serveur de bases de donnes.

Une transaction de base de donnes Web typique est compose des tapes suivantes, qui sont numrotes la figure 4. 1. Le navigateur Web dun utilisateur envoie une requte http pour une page particulire. Par exemple, cette requte peut concerner tous les tudiants de SMI5 et tre envoye partir dun formulaire HTML. La page de recherche des rsultats est appele results.php. 2. Le serveur Web reoit la requte pour results.php, rcupre le fichier et le passe au moteur PHP afin quil soit traite. 3. Le moteur PHP commence analyser le script. A lintrieur de ce script se trouve une commande permettant de se connecter la base de donnes et dexcuter une requte. PHP ouvre une connexion vers le serveur MySQL et transmet la requte approprie. 4. Le serveur MySQL reoit la requte de base de donnes et la traite, puis renvoie les rsultats au moteur PHP. 5. Le moteur PHP termine lexcution du script, ce qui consiste gnralement en un formatage des rsultats de la requte en HTML. Il renvoie ensuite le fichier HTML obtenu au serveur Web. 6. Le serveur Web transmet la page HTML au navigateur, pour que lutilisateur puisse voir la liste des tudiants de SMI5.

Programmation Web avec PHP - L. KOUTTI

Page 24

3.3

Cration de la base de donnes Web

Pour pouvoir crer une base de donnes Web, vous devez avoir accs MySQL. Cela signifie normalement que : Vous avez effectu linstallation de la base de MySQL sur votre serveur Web. Pour cela, il faut notamment : installer les fichiers configurer un utilisateur sous le nom duquel MySQL sera excut ; configurer votre chemin daccs ; dfinir le mot de passe root ; supprimer lutilisateur anonyme ;

3.4 Ouverture dune session MySQL


Pour dmarrer une session MySQL, ouvrez une interface de type ligne de commande sur votre ordinateur et saisissez la ligne suivante : mysql/bin > mysql h hostname u username p La commande mysql invoque le moniteur MySQL. Il sagit dun client en ligne de commande qui vous connecte au serveur MySQL. Loption h est utilise pour spcifier lhte auquel vous souhaitiez vous connecter. Loption u sert spcifier le nom de lutilisateur sous lequel vous souhaitez vous connecter. Loption p indique au serveur que vous souhaitez vous connecter en utilisant un mot de passe.

3.5 Cration des bases de donnes


Le systme de base de donnes de MySQL peut prendre en charge diffrentes bases de donnes. Gnralement, il existe une base de donnes par application. Une base de donnes peut tre cre en ligne de commande par la commande suivante : mysql > create database comptes;

3.6 Choix de la base de donnes


Tout dabord vous devriez avoir ouvert une session sous un compte dutilisateur MySQL, soit parce que vous avez configur cet utilisateur, soit parce que votre administrateur de serveur Web la cr pour vous. Ltape suivante consiste spcifier la base de donnes avec laquelle vous souhaitez travailler. Pour ce faire, saisissez la commande suivante : mysql > use comptes; Programmation Web avec PHP - L. KOUTTI Page 25

Ou bien lors de louverture de votre session, saisissez la commande suivante : mysql/bin > mysql -D comptes h hostname u username p Remarque 1. Il est important de configurer un utilisateur pour que vos scripts PHP puissent se connecter MySQL. 2. Lutilisateur root doit gnralement servir uniquement pour ladministration du systme, cause de certains problmes de scurit. 3. Pour chaque utilisateur qui doit avoir accs au systme, vous devez dfinir un compte et un mot de passe. 4. Vous devez dfinir un systme de privilges pour les utilisateurs qui accdent au systme. 5. Un utilisateur (ou un processus) doit possder le niveau de privilge le plus bas possible pour pouvoir effectuer correctement sa tche. La commande grant est utilise pour accorder des droits daccs aux utilisateurs de MySQL. Linverse de grant est revoke, cette commande est utilise pour supprimer les privilges des utilisateurs. Exemples dutilisation de grant et revoke Pour configurer le compte dun administrateur, vous pouvez saisir la commande suivante :
mysql > grant all -> on * -> to V1 identified by V1 -> with grant option;

Cette commande accorde tous les privilges sur toutes les bases de donnes un utilisateur appel V1, avec le mot de passe V1 et lautorise transmettre ces privilges. Cet utilisateur na vraiment pas la raison dtre, votre systme besoin dun seul super utilisateur (root), cest pourquoi vous pouvez le supprimer immdiatement :
mysql > revoke all privileges, grant -> on * -> from V1;

Pour configurer le compte dun utilisateur classique, sans aucun privilges :


mysql > grant usage -> on comptes.* -> to sgully identified by Lly;

Programmation Web avec PHP - L. KOUTTI

Page 26

Une fois, sgully dfinit ce quil souhaite rellement faire, nous pouvons lui fournir les privilges correspondant :
mysql > grant select, insert, update, create, alter, drop -> on comptes.* -> to sgully;

Si lon se rend compte que sgully abuse de ces privilges, on peut les rduire :
mysql > revoke alter, drop, create -> on comptes.* -> to sgully;

Sil savre, que lutilisateur sgully na plus besoin dutiliser la base de donnes, on peut supprimer tous ces droits :
mysql > revoke all -> on comptes.* -> to sgully;

3.7 Cration des tables de la base de donnes


Pour crer une table, vous pouvez vous servir de la commande SQL create table. Voici le format gnral de linstruction create table :
mysql > create table comptes (colonnes) ;

Pour crer la base de donnes comptes, vous allez excuter le script create_DB_Comptes.sql (me demander le script) soit en ligne de commande ou bien en utilisant linterface phpMyAdmin. Vous pouvez visualisez le contenu de votre base de donnes en utilisant la commande show ou describe. Ouvrez une session et slectionner la base de donnes comptes. Vous pouvez afficher les tables de cette base en saisissant la commande suivante :
mysql > show tables;

MySQL affiche alors la liste de toutes les tables de cette base de donnes :

Programmation Web avec PHP - L. KOUTTI

Page 27

Pour afficher plus dinformations sur une table particulire, par exemple la table comptes, servez vous de la commande describe :
mysql > describe comptes;

3.8 Types de donnes manipuls par MySQL


MySQL reconnat trois principaux types de donnes dans les colonnes : des valeurs numriques, des dates et des heures, et des chanes de caractres. Dans chacune de ces catgories il existe plusieurs types diffrents reprsents dans les tableaux ci-dessous. Type TINYINT [(M)] BIT BOOL SMALLINT [(M)] Taille (octets) 1 Description Entiers trs courts Synonyme de TINYINT Synonyme de TINYINT Entiers courts Page 28

Programmation Web avec PHP - L. KOUTTI

MEDIUMINT [(M)] INT [(M)] INTEGER [(M)] BIGINT [(M)]

3 4 8

Entiers de taille moyenne Entiers classiques Synonyme de INT Entiers larges


Tableau 1 : Types de donnes entiers

Type FLOAT [(M, D)] DOUBLE [(M, D)] REAL [(M, D)]

Taille (octets) 4 8

Description Nombres virgule flottante en simple prcision. Nombres virgule flottante en double prcision. Synonyme de DOUBLE [(M, D)]

Tableau 2 : Types de donnes virgule flottante

MySQL prend en charge plusieurs types de dates et dheures, qui sont prsents dans le tableau cidessous Type DATE TIME DATETIME TIMESTAMP TIMESTAMP (14) TIMESTAMP (12) TIMESTAMP (10) TIMESTAMP (8) TIMESTAMP (6) TIMESTAMP (4) TIMESTAMP (2) YEAR [(2|4)] Affichage YYYY-MM-DD HH:MM:SS YYYY-MM-DDHH:MM:SS YYYYMMDDHHMMSS YYYYMMDDHHMMSS YYMMDDHHMMSS YYMMDDHHMM YYYYMMDD YYMMDD YYMM YY

Tableau 3 : Les types de dates et heures

Les types de chanes de caractres manipuls par MySQL sont : CHAR : chane de caractre de taille fixe avec une longueur comprise entre 0 et 255. VARCHAR : chane de caractre de taille variable. BLOB : Binary Large OBjects , ce type correspond des donnes binaires qui peut contenir des images ou des sons. TEXT : pour reprsenter un champ text de taille normal.

3.9 Accs votre base de donnes MySQL partir du Web, avec PHP
Aprs avoir cre votre base de donnes, vous pouvez crire le code PHP qui permet dexcuter les tapes dcrites au paragraphe 2. PHP sert en effet d'intermdiaire entre vous et MySQL. Problme : PHP ne peut pas dire MySQL ds le dbut "Rcupre-moi ces valeurs". En effet, MySQL demande d'abord un nom d'utilisateur et un mot de passe. S'il ne faisait pas a, tout le monde pourrait accder votre BDD et lire les informations qu'il y a dedans (parfois confidentielles !).

Programmation Web avec PHP - L. KOUTTI

Page 29

Il va donc falloir que PHP s'authentifie, on dit qu'il tablit une connexion avec MySQL. Une fois que la connexion sera tablie, vous pourrez faire n'importe quelle opration sur votre base de donnes. PHP fournit un grand choix de fonctions permettant de manipuler les bases de donnes. Toutefois, parmi celles-ci quatre fonctions sont essentielles :

La fonction de connexion au serveur La fonction de choix de la base de donnes La fonction de requte La fonction de dconnexion

Par exemple, avec le SGBD MySQL, ces fonctions sont les suivantes:

mysql_connect mysql_select_db mysql_query mysql_close

1. La connexion MySQL Pour vous connecter, vous utiliserez une fonction PHP : mysql_connect. Cette fonction ncessite trois paramtres qu'il vous faudra renseigner :

$host : Le nom de lordinateur l'hte (ordinateur sur lequel le SGBD est install) ; $user : Le nom de lutilisateur ; $passwd : Le mot de passe.

Aussi longtemps que vous testez vos bases de donnes en local, ces paramtres sont les suivants : localhost, root et . Le code suivant permet d'tablir une connexion MySQL :
<? mysql_connect("localhost","root,"mdp"); ?>

Pour ne pas avoir modifier de dizaines de pages quand cest ncessaire, il est conseill de crer un fichier .inc dans un but de rutilisation. A lintrieur de ce fichier que vous pouvez baptiser sql.inc placez les instructions suivantes :
<? $host $user $passwd ?> = localhost; = root; = mdp;

Programmation Web avec PHP - L. KOUTTI

Page 30

Vous pouvez ainsi, lintrieur de toutes vos pages exploitant MySQL, placer la squence suivante :
include("sql.inc"); mysql_connect($host, $user, $passwd);

2. Slection dune base de donnes et affichage de son contenu Une fois la connexion effectue, il faut ouvrir une de vos bases de donnes. Il faut utiliser pour cela la fonction mysql_select_db :
$bdd = mysql_select_bd("comptes");

Cette fonction renvoie une valeur TRUE ou FALSE selon quelle a aboutit ou non. Il est donc dusage dajouter un test pour vrifier que la base a t ouverte.
$bdd = mysql_select_bd("comptes"); if (!$bdd) echo 'impossible douvrir la base comptes';

Si tout se passe bien, vous pouvez lancer une requte SQL en utilisant la fonction mysql_query () afin de lire le contenu dune table telle que clients. La requte place entre les parenthses est une requte SQL SELECT. Pour dire MySQL que contient la table clients on utilise la fonction mysql_query () comme ceci :
$result = mysql_query("SELECT * FROM clients");

Cette instruction lit les donnes de la table, mais elle ne les affiche pas sur la sortie. Pour afficher les lignes de la requte une une, il faut utiliser linstruction mysql_fetch_object (). Une fois cette fois fonction est appele, elle permet daccder au contenu des colonnes de la table par leur nom. Ci-dessous un exemple de lutilisation de la fonction mysql_fetch_object ().
while($line = mysql_fetch_assoc($result)){ echo $line['date_derniere_consultation'].'<br>'; echo $line['num_client']; }

3.

Dconnexion de la base de donnes

Pour fermer une connexion de base de donnes vous pouvez utilisez la fonction mysql_close (). Lutilisation de cette commande nest pas strictement ncessaire, car la connexion est de toute faon ferme lorsquun script termine son excution. Programmation Web avec PHP - L. KOUTTI Page 31

3.10 Principales fonctions pour laccs MySQL


Voici la liste des fonctions intgrs PHP et spcialises dans l'accs aux bases MySQL. Chacune fait l'objet d'une description dans la documentation disponible sur le site PHP http://www.php.net/docs.php. La traduction franaise jour se trouve
$connexion=mysql_connect ($serveur, $login, $mdp) mysql_close ($connexion) mysql_select_db($bd,$connexion) $resultat = mysql_query ($requete [, $connexion]) L'utilisateur $login ouvre une connexion au serveur $serveur, et reoit en retour l'identifiant $connexion Ferme la connexion MySQL identifie par $connexion Slectionne la base de donnes nomme $bd La requte SQL $requete, crite sous forme de chane, est envoye la base dj slectionne, et reoit un identifiant de rsultat. Celui-ci est un pseudo boolen TRUE si la requete a t correctement excute (mme si aucune ligne n'a t modifie ou slectionne). En cas de requete SELECT, $resultat permet d'accder aux donnes extraites. mysql_db_query ($bd, $requete [, $connexion]) Idem, mais la base est d'abord slectionne $nbchamps=mysql_num_fields($resultat) Retourne dans $nbchamps le nombre de champs du rsultat $nblignes = mysql_num_rows ($resultat) Retourne dans $nblignes le nombre de lignes du rsultat $nb=mysql_affected_rows($connexion) Retourne le nombre de lignes affectes lors de la dernire requte de type INSERT, UPDATE, DELETE, CREATE ou DROP $ligne = mysql_fetch_row($resultat) Retourne la ligne suivante du rsultat dans un tableau indic, dont les lments contiennent les valeurs de cette ligne $ligne = mysql_fetch_array($resultat) Retourne la ligne suivante du rsultat dans un tableau associatif. $ligne = mysql_fetch_object ($resultat) Retourne la ligne suivante du rsultat, dans un objet dont les attributs sont exactement les champs obtenus $liste_tables = mysql_list_tables($bd) Retourne la liste des tables de la base $bd $nom = mysql_db_name($resultat,$i) Retourne le nom de la $i me base de donne $tab[$i] = mysql_tablename($liste_tables, $i) Lit le nom du champ numro $i dans la table mysql_data_seek ($resultat,0) Dplace le pointeur interne de rsultat au dbut du rsultat $num=mysql_errno() Retourne le numro de message d'erreur de la dernire opration MySQL. $texte=mysql_error() Retourne le texte associ avec l'erreur gnre lors de la dernire requte.

Programmation Web avec PHP - L. KOUTTI

Page 32

4 Travaux pratiques
PHP TP N0
Lobjectif de ce TP est de se familiariser avec les bases du langage PHP. Pr-requis : langage de description html Exercice N1 : Affichage en php 1. Aprs avoir install et configurer le programme EasyPHP, Ecrire un script en langage php (hello.php) qui permet dafficher la phrase Hello World. Appeler ce script par un browser et vrifier qu'il s'excute correctement. 2. Editer le code source partir de votre navigateur. Commenter. 3. Utiliser les diffrents styles de balisage vus dans le cours pour afficher Hello World. Vous pouvez dupliquer le fichier hello.php en quatre autres fichiers (exemple hello_js.php, hello_asp.php, hello_xml.php et hello_php.php). Rendez vous dans le fichier php.ini : Positionner les clefs short_open_tag et asp_tags On puis excuter les scripts. Positionner les clefs short_open_tag et asp_tags Off ensuite excuter les scripts.

Commenter. 4. Insrer une ligne de commentaire dans votre script hello.php. Exercice N2 : Variables, constantes et portes. 1. Ecrire un script (cercle.php) qui permet de calculer et dafficher la surface dun cercle de Rayon 4 cm (utiliser la fonction define pour donner une valeur approche Pi). 2. Rcrire le script cercle.php en utilisant une fonction (surafceCercle). 3. Etudier la visibilit de la variable rayon. Je vous conseil de faire des traces avant, pendant et aprs lexcution de la fonction surafceCercle. 4. Reprendre la question 3 avec la variable prdfinie DOCUMENT_ROOT ou REMOTE_ADDR. Exercice N3 : Variables statiques Une variable statique a une porte locale, en revanche elle garde sa valeur lorsque le script appelle la fonction. Les variables statiques sont essentielles lorsque vous fates des appels rcursifs une fonction. 1. Quaffiche le code source suivant
<?php function cumul ($prix) { $cumul = 0 ;

Programmation Web avec PHP - L. KOUTTI

Page 33

$i = 1 ; echo "Total des achats $i = "; $cumul += $prix; $i++ ; return $cumul ; } echo cumul (175), "<br />" ; echo cumul (65) , "<br />" ; echo cumul (69) , "<br />" ; ?>

2. Modifier le script ci-dessus en prcdant la dfinition des variables $cumul et $i par le mot static. R-excuter le script et commenter. Exercice N4 : Variables dynamiques Ecrire un script dynamique.php qui permet dafficher le rsultat suivant :

Indication : Dfinir les variables dynamiques $ma_var1, $ma-var2, $ma_var3 en ajoutant un numro $i la valeur une variable auxiliaire : ma_var. Mini projet : Cration d'un compteur de visite Ecrivez un script PHP compteur.php qui, chaque appel, incrmente le nombre d'appel de la page. Ce nombre sera stock dans un fichier texte valeur_compteur.txt.

Programmation Web avec PHP - L. KOUTTI

Page 34

PHP TP N1

Exercice 1 Excuter le script suivant :


<?php echo ("<I>Bonjour</I> tout le monde !<BR>\n"); echo ("Cet affichage est <U> produit </U> par<B>PHP</B>,<BR>\n"); echo ("il contient des <FONT COLOR=\"red\">balises HTML</FONT>.\n"); ?>

Exercice 2 Modifier le script ci-dessous fin quil affiche les lments des tableaux, Exploiter au maximum les fonctions de manipulations de tableaux (trie, navigation, ).
<?php $article1 = array ("3.0","4.5","5.0","4.0","3.5") ; $article2 [0] = "3.0"; $article2 [1] = "4.5"; $article2 [2] = "5.0"; $article2 [3] = "4.0"; $article2 [] = "3.5"; $article3 = array ("Carottes"=>"3.0", "Tomates"=>"4.5", "Oignons"=>"5.0", "Navets"=>"4.0", "Courgettes"=>"3.5"); ?>

Exercice 3 : Stockage et rcupration de donnes Ecrire un script PHP compteur.php qui, chaque appel, incrmente le nombre d'appel de la page. Ce nombre sera stock dans un fichier texte valeur_compteur.txt. Exercice 4 : Utilisation de PHP pour afficher le contenu dun fichier de commandes Crez un fichier texte comportant quelques lignes de commandes clients. A chaque ligne correspond une commande. A titre dexemple vous pouvez insrer les lignes ci-dessous dans votre fichier txt 202005001 | 1236 | 20 octobre 2008 | Tomates | 4 | 4.0 212005001 | 1235 | 21 octobre 2008 | Tomates | 6 | 3.5 212005002 | 1234 | 21 octobre 2008 | Tomates | 8 | 3.0 Programmation Web avec PHP - L. KOUTTI Page 35

Ecrire un script PHP qui permet de charger lintgralit du fichier txt dans un tableau, ensuite afficher le contenu du fichier en utilisant les fonctionnalits des tableaux PHP. Exercice 5 Crer une fonction qui prend en paramtre une chane $string et un dlimiteur $car. La fonction aura comme tche de couper la chane en utilisant le dlimiteur et renvoie le rsultat sous forme d'un tableau. Exercice 6 : Utilisation de PHP pour sparer, mettre en forme et afficher les commandes clients Une Centrale dachats, souhaite centraliser les commandes clients provenant de ces points de ventes fin des les traites ensemble. En utilisant lexercice 4, crire le script PHP qui permet laffichage des commandes clients cidessous. Il vous est demand de scinder chaque ligne et de mettre en forme le rsultat sous la forme ci-dessous. La fonction explode permet de scinder une chane de caractre en plusieurs parties explode ( caractre dlimiteur , chane de donne)

Figure 1 : Visualisation de commandes

Exercice 7 Ecrire un script en langage PHP qui permet de reproduire les crans ci-dessous : Fonctionnement : Lutilisateur saisi les donnes via linterface ci-dessous (figure 1) et presse sur le bouton Envoyer la commande pour validation. Quand lutilisateur clique sur le bouton de validation, les donnes saisis sont envoyes et rcupres par un script PHP gestionCommande.php , elles sont traites et les rsultats sont affichs sur la sortie standard.

Programmation Web avec PHP - L. KOUTTI

Page 36

Figure 2 : Interface de saisie de donnes (creeCommande.html)

Figure 3 : Interface de validation et visualisation de donnes (gestionCommande.php)

Exercice 8 : Interface de saisie dune date Le formulaire de saisi (voir figure 1) est compos de : trois listes pour la saisie du jour, du mois et de l'anne un bouton d'envoie des informations saisies au serveur pour validation

Programmation Web avec PHP - L. KOUTTI

Page 37

Figure 4 Interface de saisie dune date

Exercice 9 : Validation du formulaire L'utilisateur commence par choisir une date, il valide ensuite en cliquant sur le bouton Validez . Le script valideDate.php est alors appel en affichant la date saisie (voir figure ci-dessous)

Figure 5 Validation dune date

Lorsque l'utilisateur saisi une date incorrect, l'application doit afficher un message d'erreur signalant l'anomalie (voir figure ci-dessous)

Figure 5 Gestion des erreurs

Programmation Web avec PHP - L. KOUTTI

Page 38

PHP TP N2

Ce TP pour bu la manipulation des formulaires en utilisant le langage PHP. Pr-requis : langage de description html et le langage C. Ecrire un script en langage PHP qui permet de reproduire les crans ci-dessous : Fonctionnement : Lutilisateur saisi les donnes via linterface ci-dessous (figure 1) et presse sur le bouton Envoyer la commande pour validation. Quand lutilisateur clique sur le bouton de validation, les donnes saisis sont envoyes et rcupres par un script PHP gestionCommande.php , elles sont traites et les rsultats sont affichs sur la sortie standard.

Figure 6 : Interface de saisie de donnes (creeCommande.html)

Programmation Web avec PHP - L. KOUTTI

Page 39

Figure 7 : Interface de validation et visualisation de donnes (gestionCommande.php)

PHP TP N3

Ce TP pour but la ralisation de quelques applications en utilisant les tableaux PHP. Pr-requis : langage de description html et le langage C. Exercice N1 : Utilisation de PHP pour gnrer une page daccueil dynamique Une socit spcialise dans la vente des fruits et lgumes aimerait que la page daccueil de son site prsente quelques-uns des produits proposs la vente. Elle voudrait montrer trois des articles de son catalogue choisis au hasard et faire en sorte que ceux-ci soient diffrents chaque nouvelle visite de ses clients. Ecrire un script PHP qui permet laffichage dune page diffrente chaque chargement. Pour ce faire vous pouvez utiliser la fonction shuffle() qui permet de trier de manire alatoire les lments dun tableau. Comme vous le devinez, cette fonction prend en paramtre un tableau. La figure ci-dessous reprsente la capture dcran correspondant une excution du script demand.

Programmation Web avec PHP - L. KOUTTI

Page 40

Exercice N2 : Utilisation de PHP pour afficher le contenu dun fichier de commandes Crez un fichier texte comportant quelques lignes de commandes clients. A chaque ligne correspond une commande. A titre dexemple vous pouvez insrer les lignes ci-dessous dans votre fichier txt 242005001 | 1236 | 24 octobre 2005 | Tomates | 4 | 4.0 252005001 | 1235 | 25 octobre 2005 | Tomates | 6 | 3.5 252005002 | 1234 | 25 octobre 2005 | Tomates | 8 | 3.0 Ecrire un script PHP qui permet de charger lintgralit du fichier txt dans un tableau, ensuite afficher le contenu du fichier en utilisant les fonctionnalits des tableaux PHP. Exercice N3 : Utilisation de PHP pour sparer, mettre en forme et afficher les commandes clients envoyes
une centrale dachats

Une Centrale dachats (Marjane par exemple), souhaite centralise les commandes clients provenant de ces points de ventes fin des les traites ensemble. En utilisant lexercice N2, crire le script PHP qui permet laffichage des commandes clients cidessous. Il vous est demand de scinder chaque ligne et de mettre en forme le rsultat sous la forme ci-dessous. La fonction explode permet de scinder une chane de caractre en plusieurs parties explode ( caractre dlimiteur , chane de donne)

Programmation Web avec PHP - L. KOUTTI

Page 41

Programmation Web avec PHP - L. KOUTTI

Page 42

PHP TP N4
Exercice N1 : Manipuler les chaines de caractres Reprendre le TP N2. Le fichier de donnes contient les commandes envoyes par tous les clients (dans notre cas deux clients "CLI1001" et "CLI1004"). Ecrire un script PHP qui permet d'archiver les commandes du client CLI1001 dans un fichier de donnes pscde01_CLI1001.txt et celle du client CLI1004 dans le fichier psccl01_CLI1004.txt. Utiliser au maximum les fonctions de manipulations des chaines de caractres vus en cours.

Exercice N2 : Rutilisation de code Reprendre l'exercice N1 en utilisant des fonctions. Programmation Web avec PHP - L. KOUTTI Page 43

Mini projet

Objectif : Raliser une application qui permet la gestion dune librairie virtuelle. Le travail raliser consiste dvelopper une application qui permet la gestion dune librairie virtuelle. Lapplication doit tre la plus complte possible (cration, ajout, suppression). Elle doit tre labore en utilisant le langage PHP et le SGBD MySQL. Le schma de la base de donnes est donn en annexe. 1 : Crer un script d'enregistrement d'un lecteur Un lecteur est dfini par les caractristiques suivantes : * * * * * nom prnom adresse (numro, rue) ville code postal

La figure 1, reprsente le formulaire de saisie permettant la saisie des informations relatif un lecteur. La validation du formulaire (figure 2) consiste vrifier les donnes saisies et l'enregistrement du lecteur dans la table lecteurs (voir le script de cration de la base de donnes en annexe).

Figure 1 Enregistrement dun lecteur

Programmation Web avec PHP - L. KOUTTI

Page 44

Figure 8 Validation dun lecteur

2 : Crer une page d'enregistrement d'un livre Un livre est dfini par les caractristiques suivantes : * * * * * nom de l'auteur prnom de l'auteur titre du livre catgorie (Roman, Science-fiction, Policier...) numro ISBN

Ralisez le formulaire de saisie permettant la saisie de ces informations (voir figure 3). Aprs validation du formulaire, l'action ralise consiste appeler le script valideLivre.php qui enregistre l'ensemble des valeurs saisies par le formulaire dans la table livres (voir le script de cration de la base de donnes en annexe) et les affiches l'cran (figure 4).

Programmation Web avec PHP - L. KOUTTI

Page 45

Figure 9 Enregistrement dun livre

Figure 10 Validation dun livre

3 : Rservation de livres en ligne Lobjectif et de dvelopper la rservation des livres en ligne, sur le site de la librairie virtuelle.

Cahier de charges fonctionnel Lorsque lutilisateur se connecte sur le site de la librairie, un formulaire dauthentification saffiche, lui demandant son nom et son mot de passe. Lorsque le lecteur est authentifi, la liste des livres la rservation saffiche par catgorie. Lorsque le lecteur valide le formulaire de rservation, une page affiche les dates de dbut et de fin de rservation.

Script de cration de la base de donnes


USE mysql; DROP DATABASE IF EXISTS `librairie`; CREATE DATABASE `librairie`; USE librairie; -- Structure de la table emprunts DROP TABLE IF EXISTS `emprunts`; CREATE TABLE `emprunts` ( empnum char(255), empdate date , empdateret date, empcodelivre char(255) , empnumlect char(255), PRIMARY KEY (`empnum`) );

Programmation Web avec PHP - L. KOUTTI

Page 46

-- Structure de la table `lecteurs` DROP TABLE IF EXISTS `lecteurs`; CREATE TABLE `lecteurs` ( lecnum char(16), lecnom char(16), lecprenom char(16), lecadresse char(80), lecville char(16), leccodepostal char(10), lecmotdepasse char(80), PRIMARY KEY (`lecnum`) ); -- Donnes enregistres pour la table `lecteurs` insert into `lecteurs` values ('216', 'Lamy', 'Elena', '7 rue du Paradis', 'Paris', '75012', 'Elena'); insert into `lecteurs` values ('221', 'Theos', 'Pablo', '3 passage Secret', 'Paris', '75004', 'Pablo'); insert into `lecteurs` values ('342', 'Camden', 'Nicolas', '24 av du Papillon', 'Paris', '75013', 'Nicolas'); insert into `lecteurs` values ('528', 'Line', 'Margo', '22 rue de la Libert', 'Paris', '75005', 'Margo'); -- Structure de la table `livres` DROP TABLE IF EXISTS `livres`; CREATE TABLE `livres` ( livcode char(255) , livnomaut char(255) , livprenomaut char(255) , livtitre char(255) , livcategorie char(255) , livISBN char(255) , livdejareserve tinyint(1) NOT NULL default '0', PRIMARY KEY (`livcode`) ); -- Donnes enregistres pour la table `livres` insert into `livres` values ('KaElRo58', 'Kazan', 'Elia', 'Larrangement', 'Roman', '2234023858', 1); insert into `livres` values ('AsIsSc08', 'Asimov', 'Isaac', 'Fondation', 'Science-fiction', '2070415708', 1); insert into `livres` values ('DiPhSc43', 'Dick', 'Philip K.', 'Blade Runner', 'Science-fiction', '2290314943', 1); insert into `livres` values ('WaAlRo37', 'Walker', 'Alice', 'La couleur pourpre', 'Roman', '2290021237', 1); insert into `livres` values ('KuMiRo38', 'Kundera', 'Milan', 'La plaisanterie', 'Roman', '2070703738', 0); insert into `livres` values ('BaJaJu63', 'Barrie', 'James M.', 'Peter Pan', 'Junior', '2290333263', 0); insert into `livres` values ('VeJuRo22', 'Verne', 'Jules', 'L le mysterieuse', 'Roman', '0812966422', 0);

Programmation Web avec PHP - L. KOUTTI

Page 47

5 Installation et Configuration dApache, de PHP et de MySQL sous Windows XP


5.1 Introduction
Apache, PHP et MySQL sont disponibles pour un grand nombre de combinaisons de systmes dexploitation et de serveurs Web. Ce manuel explique comment installer et configurer Apache, PHP et MySQL sur le systme Windows.

5.2 Installation de MySQL sous Windows


Les instructions suivantes ont t crites pour une installation sous Windows. Commencer par crer un rpertoire temporaire (C:\Temp\Download\MySQL par exemple). Vous pouvez tlcharger le fichier ZIP requis de http://www.MySQL.com. Dcompresser le fichier ZIP de MySQL vers le rpertoire temporaire et excuter le programme setup.exe. Le programme dinstallation est un InstallShield standard; il devrait prsenter le mme aspect que les nombreux autres installateurs que vous avez dj rencontrs. Si vous choisissez linstallation type, lassistant ne devrait pas vous poser de question autres que celle relative lemplacement o installer MySQL. Par dfaut, MySQL sinstalle dans le rpertoire C:\MySQL. Ci-dessous lenchanement relative linstallation de MySQL

Programmation Web avec PHP - L. KOUTTI

Page 48

Programmation Web avec PHP - L. KOUTTI

Page 49

Dans linstallation sous Windows NT/2000/XP, le nom du serveur MySQL est MySQL-nt et celui-ci sera normalement install en tant que service. Un service est un programme qui sexcute de manire permanente larrire-plan et qui est destin fournir des services dautres programmes. Vous pouvez installer le serveur MySQL en tant que service en ouvrant une fentre dinvite de commande et en entrant les lignes suivante : cd C:\MySQL\bin MySQLd-nt -install Aprs avoir excuter cette commande, vous devriez obtenir la rponse suivante :

Utilisez les commandes en ligne NET START MySQL pour dmarrer le service MySQL NET STOP MySQL pour arrter le service MySQL Vous devriez obtenir la rponse suivante : Programmation Web avec PHP - L. KOUTTI Page 50

Pour afficher le contenu de la base de donne (par dfaut), tapez la commande suivante : MySQLshow

Suppression de lutilisateur anonyme La configuration par dfaut de MySQL permet nimporte quel utilisateur daccder au systme sans avoir fournir un nom dutilisateur ou un mot de passe. Excutez les ordres SQL suivantes pour afficher les utilisateurs de la table user, la figure ci-dessous montre que la table user contient le super utilisateur root et un utilisateur anonyme.

Programmation Web avec PHP - L. KOUTTI

Page 51

Pour supprimer lutilisateur anonyme, ouvrez une invite de commande et tapez les lignes suivantes :

Vrifions si lutilisateur anonyme a t supprim en utilisant la requte ci-dessous

Dfinition du mot de passe root

Programmation Web avec PHP - L. KOUTTI

Page 52

A ce stade, le compte du super-utilisateur est encore dpourvu de mot de passe. Le mot de passe pour ladministrateur (root) de la base MySQL peut tre dfini par la commande suivant :

Dsormais, vous serez invit spcifier le nom de lutilisateur ainsi que le mot de passe. Vous pouvez tester la commande suivante :

Pour arrter votre serveur MySQL, vous devez saisir votre mot de passe.

5.3 Installation dApache


Rendez-vous dans le rpertoire C:\TEMP\DOWNLOAD\Apache. Vous y trouverez le fichier apache_1.3.31-win32x86-no_src. Cette version contient la version courante (dans la hirarchie 1.3) pour Windows. Ce fichier contient le serveur Apache prt pour linstallation. Double cliquer sur le fichier pour dmarrer la procdure dinstallation. Celle-ci devrait vous tre familire puisquelle est semblable de nombreuses autres utilisant linstallateur Windows (Figure ci-dessous)

Programmation Web avec PHP - L. KOUTTI

Page 53

Le programme dinstallation vous interrogera sur les points suivants : Network Domain localhost Server Name nom donn au serveur, mettez 127.0.0.1 Administrators Email Adress adresse email de ladministrateur nom du domaine de votre ordinateur, mettez

Programmation Web avec PHP - L. KOUTTI

Page 54

Si vous voulez excuter Apache en tant que service, comme pour MySQL, il est gnralement prfrable de le configurer de la manire suivante : Le type dinstallation. Il est recommand de choisir linstallation complte Le rpertoire dans lequel installer Apache. (Le rpertoire par dfaut est C:\Program Files \Apache Group \Apache.) Une fois choisies toutes ces options, le serveur Apache sera install et dmarr. Apache coutera sur le port 80 (except si vous avez modifi les directives Port, Listen ou BindAddress dans les fichiers de configuration) aprs son dmarrage. Pour vous connecter au serveur et accder la page par dfaut, lancez un navigateur Web et entrez lURL suivante : http://localhost/ Vous devrez alors obtenir laffichage dune page de bienvenue ci-dessous :

Programmation Web avec PHP - L. KOUTTI

Page 55

Vous pouvez dmarrer et arrter le service Apache partir du menu Dmarrer : Apache sy ajoute lui-mme sous lintitul Apache http Server. Dans le panneau intitul Contrle du serveur Apache, vous trouverez les options permettant de dmarrer, darrter ou de redmarrer le serveur.

Aprs avoir install Apache, il peut tre ncessaire dditer les fichiers de configuration conservs dans le rpertoire conf. Programmation Web avec PHP - L. KOUTTI Page 56

5.4 Installation de PHP


Rendez vous dans le rpertoire C:\Temp\Download\PHP Commencez par dcompresser le fichier ZIP vers le rpertoire de votre choix. Lemplacement habituel est C:\PHP. Cest celui que nous utiliserons dans lexemple suivant. Vous pouvez installer les bibliothques PECL en dcompressant le fichier PECL vers votre rpertoire dextensions. Si C:\PHP est le rpertoire de base, il sagira de C:\PHP\ext. A prsent, suivez ces tapes Copiez toutes les DLL vers le rpertoire systme de Windows. Installez le fichier de configuration php.ini. Faites une copie du fichier php.ini.recommended que vous renommerez php.ini. Placez votre fichier php.ini dans le rpertoire Windows. Editez votre fichier php.ini. Celui-ci contient plusieurs paramtres. Les paramtres modifier pour le moment sont les suivants : Modifiez la directive extension_dir de manire quelle pointe vers lemplacement o rsident les DLL de vos extensions. Dans le cadre dune installation standard, il sagit de C:\PHP\ext. Votre php.ini contiendra en consquence la ligne suivante : Extension_dir = C:/php/ext Dfinissez la directive doc_root de faon quelle pointe vers le rpertoire racine partir duquel opre votre serveur Web. Le plus souvent avec Apache, la ligne se prsente comme suit : doc_root=C:\Program Files/Apache Groupe/ Apache /htdocs Assurez-vous que les extensions suivantes sont actives : php_pdf.dll, php_gd2.dll, php_imap.dll et php_MySQLi.dll. Si ce nest pas le cas vous devez dcommenter ces lignes. Fermez et sauvegarde le fichier php.ini

5.5 Ajout de PHP votre configuration Apache


Vous aurez certainement besoin dditer les fichiers de configuration dApache. Ouvrez le fichier httpd.conf dans votre diteur de prdilection. Ce fichier est gnralement situ dans le rpertoire C:/Program Files/Apache Groupe/Apache /conf. Recherchez les lignes suivantes : LoadModule php5_module C:/php/php5apache.dll AddModule mod_php5.c AddType application/x-httpd-php .php Action application/x-httpd-php /php/php.exe Programmation Web avec PHP - L. KOUTTI Page 57

Si ces lignes nexistent pas, ajoutez-les la fin du fichier, enregistrez ce dernier et redmarrer votre serveur Apache.

5.6 Test de linstallation de PHP


Dmarrer le serveur Web et testez le bon fonctionnement de PHP. Crez un fichier test.php et insrez-y la ligne suivante : < ? phpinfo() ?> Placez ce fichier dans le rpertoire racine des documents du serveur (gnralement C:\ Program Files\ Apache Group\Apache\htdocs, puis chargez-le dans votre navigateur, comme suit : http://localhost/test.php

5.7 Ressources bibliographiques et webo graphiques


Ci-dessous, une liste de quelques-unes de nombreuses ressources disponibles sur le Web, dont vous pouvez tirer profit pour trouver des cours, des articles, des informations rcentes et des exemples de code PHP. PHP 5 & MySQL 5 Luke Welling & Laura Thomson CampusPress http://www.phpfrance.com http://www.siteduzero.com/php/qcm.php http://www.ac-creteil.fr/util/programmation/scripts/php-langage.php http://www.mysql.com http://dev.nexen.net/docs/mysql/chargement.hml http://www.apache.org http://www.apachefrance.com Programmation Web avec PHP - L. KOUTTI Page 58

http://www.commentcamarche.com

Programmation Web avec PHP - L. KOUTTI

Page 59