Professional Documents
Culture Documents
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.
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
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.
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
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
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.
Page 5
Figure 2
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>
= = = = = = =
en en en en en en en
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.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 */
*/
Exemples :
echo (5+9-8)*10; print (5+9-8)*10); printf ("Lanne %d est bissextile", $Annee);
PHP dispose dune palette de fonctions qui permettent la manipulation et le test des variables de diffrentes manires.
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 ()...
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 */
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.
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 ?>
<?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>"; ?>
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>'; }
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.
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=" submit " value = "Envoyer"> <input type = "reset" name ="efface" value = "Effacer">
<input type = "checkbox" name ="case1" value="valeur_case"> <input type = "radio" name ="radio1" value ="valeur_radio">
<select name ="select" size="1"> <option value = "un"> choix </option> <option value ="deux"> choix2 </option> </select>
<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.
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>'; }
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
Interface Web
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
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
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) ;
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
Page 20
$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) ;
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; ?>
Page 23
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.
Page 24
3.3
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 ;
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;
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;
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 :
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 4 8
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)]
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
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 !).
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:
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;
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.
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
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 ;
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.
Page 34
PHP TP N1
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)
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.
Page 36
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
Page 37
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)
Lorsque l'utilisateur saisi une date incorrect, l'application doit afficher un message d'erreur signalant l'anomalie (voir figure ci-dessous)
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.
Page 39
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.
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)
Page 41
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).
Page 44
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).
Page 45
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.
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);
Page 47
Page 48
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.
Page 51
Pour supprimer lutilisateur anonyme, ouvrez une invite de commande et tapez les lignes suivantes :
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.
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
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 :
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
Si ces lignes nexistent pas, ajoutez-les la fin du fichier, enregistrez ce dernier et redmarrer votre serveur Apache.
http://www.commentcamarche.com
Page 59