You are on page 1of 58

PHP Le tutoriel pour grands dbutants presss

par Sylvie Vauthier (Accueil)

Data de publication :1er fvrier 2009 Demire mise A jour :

Ce tutoriel, comme son nom l'Indique, est Intgralement conu pour des grands dbutants presss. Appelons grand dbutant celuiqui n'a jamais programm ni entam aucune initiation sur les notions gnrales de la programmation. Nous ambitionnons donc de satisfaire ce public,s'ilest prt travailler rgulirement et y consacrer une semaine intensive, par exemple... Mals blan entendu,quipeut le plus peut le moins 1 Aussi ce tutoriel ne devrait pas rebuter l'informaticien qui connat dj un ou plusieurs autres langages, mais souhaiterait se mettre PHP, langage devenu incontournable pour la programmation web. Ce lecteur-l pourra parcourir son rythme le tuto qui suit et y trouver rponses ses questions... Dans tous les cas,bonne lecture 1

PHP:Le tutorielpour grands dbutanls presas par Sylvie V&ulhier (Accueil)

1 - PHP ETAPE 1 : INTRODUCTION..........................................................................................................................4 1-0- Les pr-requis................................................................................................................................................. 4 1-0-e- Ce qu'il vous faut connaitre.................................................................................................................. 4 1-0-b - Ce qu'il vous faut installer.................................................................................................................... .4 1-0-b-a- Si vous tes sous Windows..........................................................................................................4 1-0-b-b - Si vous tes sur Mac....................................................................................................................4 1-0-b-c- Si vous tes sous Linux................................................................................................................4 1-0-c - Et c'est tout pour ce tutoriel !.................................................................................................................4 1-1 - Que fait PHP ?...............................................................................................................................................5 1-2- Quand PHP intervient-il ?............................................................................................................................... 5 1-3 - Un zeste d'algorithmique............................................................................................................................. ...5 1-3-a - Tout d'abord le concept de variable......................................................................................................5 1-3-b- La programmation............................................................................................................................. .....5 1-3-c - L'instruction en boucle...........................................................................................................................5 1-3-d - L'instruction en condition.......................................................................................................................6 1-3-e- Pour conclure sur la programmation..................................................................................................... 6 1-4- TP1.................................................................................................................................................................6 1-5 - Correction du TP1..........................................................................................................................................7 Il- PHP ETAPE 2........................................................................................................................................................8 11-1 -Comment a marche ?..................................................................................................................................8 11-2 - Les variables...............................................................................................................................................10 11-3 - echo............................................................................................................................................................. 11 11-4- Guillemets ou Apostrophes ?......................................................................................................................11 11-4-a -Ce que je ne conseille pas.................................................................................................................11 11-4-b - Ce que je conseille.............................................................................................................................12 11-5 - TP2..............................................................................................................................................................12 11-6 - Correction du TP2............................................................................................................................. ..........13 Ill - PHP ETAPE 3.....................................................................................................................................................14 111-1 - Les formulaires...........................................................................................................................................14 111-2 - La syntaxe de la condition if......................................................................................................................15 111-3 - Les formulaires, suite.................................................................................................................................16 111-4 - Les formulaires, fin..................................................................................................................................... 7 1 111-5 - TP3.............................................................................................................................................................17 111-6 - Correction du TP3............................................................................................................................. .........18 IV - PHP ETAPE 4....................................................................................................................................................19 IV-1 - Les tableaux simples.................................................................................................................................19 IV-2 - Les commentaires............................................................................................................................. .........20 IV-3- Les tableaux associatifs.............................................................................................................................20 IV-4- La boucle foreach...................................................................................................................................... 21 IV-5- Boucle foreach et variables POST............................................................................................................23 IV-6 - TP4.............................................................................................................................................................24 IV-7- Correction du TP4............................................................................................................................. ......... 5 2 V - PHP ETAPE 5.....................................................................................................................................................26 V-1 - Les oprateurs............................................................................................................................. ...............26 V-2 - Les fonctions...............................................................................................................................................27 V-2-a - Les fonctions dans la page................................................................................................................27 V-2-b - Plusieurs paramtres passs la fonction........................................................................................29 V-2-c- Les fonctions dans un fichier part...................................................................................................29 V-2-d - Fonction qui renvoie une valeur de retour......................................................................................... 0 3 V-3 - La boucle for...............................................................................................................................................31 V-4- La commande switch.................................................................................................................................. 31 V-5- TP5..............................................................................................................................................................33 V-6 - Correction du TP5............................................................................................................................. ..........33 VI - PHP ETAPE 6....................................................................................................................................................35 Vl-1 -Les bases de donnes : introduction.........................................................................................................35 Vl-1-a- A quoi a sert ?............................................................................................................................. .... 5 3 Vl-1-b- Comment a marche ?......................................................................................................................35 Vl-2- Alimenter sa base via PHP...................................................................................................................... .3 7 .
-2.
Les sources prsentes sur cette paqes sont libres de droits,BIvous pouvez les utiliser voire oonV81'1ance.Par contre la page de prsentation de s sources constitue une oeuvre Intellectuelle protge par les droits d'auteurs.Copyright Cl 2009 VAUTHIER Sylvie.Aucune reproduction, mme partielle,ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents,images,etc sana l'autorisation expresse de l'auteur.Sinon vous encouraz selon la loi jusqu'Ill 3 ans de prison et jusqu' 300 000 Ede dommages et fntrts.
hl!p:J/sytvie-vauthier.davelappaz.comlhltarialllphplgrancklebutanl/

PHP:Le tutorielpour grands dbutanls presas par Sylvie V&ulhier (Accueil)

Vl-2-a - Prsenter le formulaire......................................................................................................................38 Vl-2-b - Se connecter notre base via PHP.................................................................................................38 Vl-2-c- Pour travailler proprement (Gnralits)...........................................................................................39 Vl-2-d - Insrer des donnes dans notre base via PHP................................................................................ 9 3 Vl-2-e - On rcapitule le code ?.....................................................................................................................40 Vl-3 - TP6.............................................................................................................................................................41 Vl-4 - Correction du TP6...................................................................................................................................... 1 4 VIl - PHP ETAPE 7.................................................................................................................................................... 5 4 Vll-1 - Les bases de donnes : suite et fin.........................................................................................................45 Vll-1-a- Pour travailler proprement (Gnralits)..........................................................................................45 Vll-1-b - Le code pour rcuprer toutes les filles...........................................................................................46 Vll-2- Un exemple (plus complexe) de relation dynamique entre PHP et SQL..................................................46 Vll-3- TP7............................................................................................................................................................48 Vll-4 - Correction du TP7.....................................................................................................................................50 VIII - PHP ETAPE 8: CONCLUSION.......................................................................................................................53 Vlll-1 - En guise de conclusion............................................................................................................................53 Vlll-1-a- PHP, un langage qui ne peut pas tout...........................................................................................53 Vlll-1-b- Conceptualisation d'un projet PHP..................................................................................................54 Vlll-2- Quelques rflexes pour progresser en PHP............................................................................................55 Vlll-3 - TP8...........................................................................................................................................................55 Vlll-4 -Correction du TP8....................................................................................................................................56 Vlll-5- Mes liens favoris pour l'apprentissage du dveloppement web..............................................................58 Vlll-5-a - Les tutos et cours Developpez.com................................................................................................58 Vlll-5-b- D'autres tutos et cours qui m'ont beaucoup appris.........................................................................58 Vlll-6 - Remerciements........................................................................................................................................58

Les sources prsentes sur cette paqes sont libres de droits,BIvous pouvez les utiliser voire oonV81'1ance.Par contre la page de prsentation de s sources constitue une oeuvre Intellectuelle protge par les droits d'auteurs.Copyright Cl 2009 VAUTHIER Sylvie.Aucune reproduction, mme partielle,ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents,images,etc sana l'autorisation expresse de l'auteur.Sinon vous encouraz selon la loi jusqu'Ill 3 ans de prison et jusqu' 300 000 Ede dommages et fntrts.
hl!p:J/sytvie-vauthier.davelappaz.comlhltarialllphplgrancklebutanl/

-3

PHP:Le tutorielpour grands dbutanls presas par Sylvie V&ulhier (Accueil)

1 - PHP ETAPE 1 : INTRODUCTION 1-0 - Les pr-requis 1-0-a- Ce qu'il vous faut connaftre
Pour profiter de ce tutoriel PHP pour grand dbutant press,ilfaut rpondre aux a-itres suivants : a) Connanre la langage d'affichage HTML dans les grands principes... Sia n'est pas le cas,commencez par l.(Voir liste tutos recommands sur la question dans le chapHre conclusion de ce cours) b) Possder un ordinateur et une connexion intemet

1-0-b- Ce qu'il vous faut installer 1-0-b-a - Si vous tes sous Windows
a) Wamp server 2 :un environnement (gratuit bien sOr) qui vous permettra de programmer PHP en loca. .. l http://www.wampserver.coml b) Notapad++ Un diteur de texte (gratuit aussi) quicolore automatiquement le code que l'on entre en fonction de la logique de votre langage informatique, ce quivous permettra une relecture facile... Cette aide indispensable s'appelle la coloration syntaxique. http://notapad-plus.sourceforge.net/fr/site.htm

1-0-b-b - Si vous tes sur Mac


Equivalent Wamp server http://www.mamp.lnfo/en/mamp.html Equivalent Notepad++ http://tuppls.com/smultron

1-0-b-c - Si vous tes sous Linux


Equivalent Wamp server http://doc.ubuntu-fr.org/lamp Equivalant Notapad++ http://bluefish.opanoflice.nlldownload.html

1-0-c- Et c'est tout pour ce tutoriel!


Pour le reste, on va essayer d'avancer, mme sivous n'avez jamais programm. Ce tuto ne prtend pas tre un topo savant et encore moins exhaustif :c'est une Initiation,une premire couche de peinture,indispensable pour faire vos premiers pas dans PHP,voire dans la programmation sans trop de souffrance, et pour que les couches suivantes tiennent. lise dcoupa en 8 tapes,avec des travaux pratiques.Il est bien vident que si vous tes un grand dbutant et que vous ne faites pas les travaux pratiques vous-mmes, tout ce que vous lirez vous sortira par la tte aussi vite que c'est entr. Il est donc recommand,pour les grands dbutants bien videmment. de travailler un jour par tape,et de faire les travaux pratiques,pas simplement de se prcipiter sur les rponses. Amusez-vous bien durant votre semaine d'apprentissage 1

Les sources prsentes sur cette paqes sont libres de droits,BIvous pouvez les utiliser voire oonV81'1ance.Par contre la page de prsentation de s sources constitue une oeuvre Intellectuelle protge par les droits d'auteurs.Copyright Cl 2009 VAUTHIER Sylvie.Aucune reproduction, mme partielle,ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documenta,images,etc sana l'autorisation expresse de l'auteur.Sinon vous encouraz selon la loi jusqu'Ill 3 ans de prison et jusqu' 300 000 E de dommages et fntrts.
hl!p:J/sytvie-vauthier.davelappaz.comlhltarialllphplgrancklebutanl/

-4

PHP:Le tutorielpour grands dbutanls presas par Sylvie V&ulhier (Accueil)

1-1 -Que fait PHP ?


Vous avez de bonnes notions de HTML et CSS,vous savez donc que ces deux langages ne sont pas des langages de programmation,mais des langages de simple affichage statique. Facile d'afficher pour vous une page web quidit :"bonjour,on est lundi." Le seulsouci,c'est que l'on sera toujours lundisur votre page... Pas trs dynamique tout

a. C'est

l qu'intervient PHP quiest un langage de programmation web.

Il produit du code HTML. En quoiest-il utile ? Parce que le code HTML que produit PHP change enfonction des circonstances que vous avez programmes. On dira qu'li Introduit du dynamisme dans la page web.

1-2- Quand PHP intervient-il?


Le code PHP que vous avez insr dans vos pages agit A chaque chargement (et donc rafra.Tchlssement) de
page web.Ceci pour relativiser son "dynamisme". L'interactivit avec l'utilisateur se limite certaines actions de l'utilisateur. Un rafrafchissement de page,c'est par exemple le elle de l'utilisateur sur le bouton 'submlt'inclus dans une balise form,ou bien une premire arrive sur une page web.

1-3- Un zeste d'algorithmique


Il faut enfin aborder dans cette introduction quatre notions cls de la programmation.

1-3-a - Tout dabord le concept de variable


Un exemple suffira.On a tous eu entre les mains une publicit faussement personnalise du type : "Bonjour Madame Michu Vous avez gagn notre canap extra-cuir lors du tirage du 2011212008." Il est clair que l'entreprise quienvoie cette pub possde une base de donnes avec des tas de noms.Et que c'est un programme automatique quistocke les valeurs de Madame,de Michu,et la date dans des variables. Le reste est du texte fig.On va dire que cMIIt,nom et date sont des variables...

1-3-b - La programmation
Autre chose, programmer, c'est donner une suite d'instructions la machine. Exactement comme l'on construirait une recette de cuisine.Sauf que l'oncrit la recette l'usage d'une machine quine comprend que le binaire et qu'une instruction la fois.On avance,on avance,instruction par instruction,de faon linaire. Dans la sb'ucture du programme, deux types de construction peuvent s'loigner de cette linarit :

1-3-c- Linstruction en boucle


On a une action affreusement rptitive.Du genre, dcoupe les trois plaques de chocolat en carrs individuels.En programmation, on ne va pas dire 150 fois, dtache le carr de chocolat, dtache le carr de chocolat, dtache le carr de chocolat... Alors on va faire ce que l'on nomme une boucle (Il y en a de plusieurs sortes),du genre :
-5

Les sources prsentes sur cette paqes sont libres de droits,BIvous pouvez les utiliser voire oonV81'1ance.Par contre la page de prsentation
de

mme partielle,ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documenta,imagea,etc sana l'autorisation expresse de l'auteur.Sinon vous encouraz selon la loi jusqu'Ill 3 ans de prison et jusqu' 300 000 E de dommages et fntrts.
hl!p:J/sytvie-vauthier.davelappaz.comlhltarialllphplgrancklebutanl/

sources constitue une oeuvre ntellectuelle protge par les droits d'auteurs.Copyright Cl 2009 VAUTHIER Sylvie.Aucune reproduction,

PHP:Le tutorielpour grands dbutanls presas par Sylvie V&ulhier (Accueil)

Boucle tant que


tant qu'il y a une plaquette de chocolat{ dtache le carr de chocolat

Une boucle parce que le programme lit la condition,entre dans la boucle aprs la premire accolade (sila condition
est vraie) et '"boucla"' tant qua la condition est vraie...

1-3-d- L'instruction en condition


On a une condition.Restons sur notre recette de mousse au chocolat.
Sij'ai8 gourmands,je casse 8 oeufs,sij'ai8 personnes au rgime,je casse 4 oeufs,mais par dfaut,une bonne mousse,c'est 8 oeufs pour 8

Sors le plat. si gourmand{ casse 8 oeufs sinon si rgime{ casse 4 oeufs sinon{ casse 6 oeufs Bien mlanger.

Cette fois,vous comprendrez que le cheminement logique linaire se spare en trois voies parallles,unpeu comme des rails,puis se regroupe nouveau la fin. Le programme na doit passer qua par une at une seule dea trois voles.

1-3-e - Pour conclure sur la programmation


Programmer,c'est finalement ramener toute problmatique l'une des trois possibilits suivantes : - une instruction quis'excuta automatiquement, - une instruction quis'excute autant de fois que ncauaire dans une boucle, - une Instruction quis'excute dans une condition. AJout tout cela un certain nombre de variables que l'on manipule Joyeusement Et vous avez les grandes lignes de la programmation.

1-4- TP1
Selon la mthode que vous venez de lire, pourriez-vous tracer la structure gnrale du programme qui gre la distribution da carburant d'une pompe essence automatise quine distribuerait qua cas trois carburants : Diesel,Super,et GPL1 Attachez-vous la logique suivante :telle action de l'utilisateur :telle partie du programme s'enclenche

//commentaire :affichage permanent affiche 'Merci d'avoir choisi VroumVroum Choisissez votre carburant Gazole, SuperSP ou GPL 7'; Si rponse{ recueille carburant choisi //etc. etc.
}

-6 Les sources prsentes sur cette paqes sont libres de droits,BIvous pouvez les utiliser votre oonV81'1ance.Par contre la page de prsentation de s sources constitue une oeuvre Intellectuelle protge par les droits d'auteurs.Copyright Cl 2009 VAUTHIER Sylvie.Aucune reproduction, mme partielle,ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documenta,images,etc sana l'autorisation expresse de l'auteur.Sinon vous encouraz selon la loi jusqu'Ill 3 ans de prison et jusqu' 300 000 Ede dommages et fntrts.
hl!p:J/sytvie-vauthier.davelappaz.comlhltarialllphplgrancklebutanl/

PHP:Le tutorielpour grands dbutanls presas par Sylvie V&ulhier (Accueil)

1-5- Correction du TP1


Retenez dj que dans toutes les propositions de correction, il y a toujours plusieurs possibilits, celle-0 n'est qu'un exemple. Vous pourrez galementvous imprgner de cette ide :a n'est passimple de penser tout la place d'une machine ! Ca exige des trsors de rigueur et de patience !Mais bon, a devient vite passionnant. Veuillez cliquer sur le symbole droite pour dcouvrir la solution quand vous aurez fini.

//affichage permanent affiche 'Merci d'avoir choisi Vroum-Vroum Choisissez votre carburant Gazole, SuperSP ou GPL 7'; //raction quand il y a utilisateur Si rponse { recueille carburant_choisi; affiche 'Entrez votre carte bleue'; tantque info carte bleue pas entre{ affiche 'Entrez votre carte bleue'; Sinon si info carte bleue entre { affiche 'Entrez votre code'; tant que code pas entr ou pas bon{ affiche 'Entrez votre code'; Sinon si code bon{ affiche 'Vous pouvez vous servir en '; affiche carburant_choisi; //Pour la suite, initialisation de ma variable nb litres nb_litras O; //Raction quand utilisateur dcroche le pistolet Si user a dcroch robinet{ si rponsechoisie=RGazole"{ prix_au_litre=l.l2; ainonsi rponsechoisie="SupersPn{ prix_au_litre=l.21; //rponsechoisie=nGPL", le dernier cas par dfaut sinon{ prix au litre=0.69; tantque robinet coule( //le compteur tourne nb_litres=nb_litrea+l; prix_temporaire=nb_litre * prix_au_litre; affiche prix_temporaire;
)

//quand on arrive cette ligne du programme, user a raccroch le pistolet prix_total=prix_temporaire; dbite le prix total de son compte; affiche 'Merci, et la prochaine fois chez Vroum-Vroum l';

-7 Les sources prsentes sur cette paqes sont libres de droits,BIvous pouvez les utiliser votre oonV81'1ance.Par contre la page de prsentation de s sources constitue une oeuvre Intellectuelle protge par les droits d'auteurs.Copyright Cl 2009 VAUTHIER Sylvie.Aucune reproduction, mme partielle,ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documenta,images,etc sana l'autorisation expresse de l'auteur.Sinon vous encouraz selon la loi jusqu'Ill 3 ans de prison et jusqu' 300 000 Ede dommages et fntrts.
hl!p:J/sytvie-vauthier.davelappaz.comlhltarialllphplgrancklebutanl/

PHP:Le tutorielpour grands dbutanls presas par Sylvie V&ulhier (Accueil)

Il - PHP ETAPE 2 11-1 -Comment a marche?


L'ossature de toute page HTML
<html>

<head> <title>Ma page de test</title> </head> <body> <hl>Bienvenue sur le site de toto </hl> <p>Le blabla de ma page. </p> </body> </html>

Voiciune page HTML bien traditionnelle comme on les aime. Copiez-collez en le contenu dans votre diteur de texte notepad++. Enregistrez et nommez-la test.html Vous remarquerez que le code de la page se colore de faon syntaxique,ce qui le rend bien plus comprhensible. C'tait l'intrt de vous faire tlcharger cet diteur de texte. Vous apprcierez beaucoup ds que l'affaire se corsera. Pour l'instant,enregistrez ce fichier sur votre bureau,fermez notepad++,et double-cliquez maintenant directement sur votre fichier test.html,cela vous ouvrira une page web comme sivous tiez sur Internet. Pourtant,vous n"y itas pas, sur Internat.Vous itas "an local'", bref, sur votre ordi, et vous ne faites que voir votre fichier Il la faon d'une page web. Rouvrez maintenant l'diteur de texte et copiez/collez le bout de code suivant dans lequelon a introduit des balises PHP.

<head> <title>Ma page d'accueil </title> </head> <body> <hl>Bienvenue sur le site de toto </hl> <p> Toto fait de l'anglais :</p> <?php echo '<p>Hello!What is the day today? It is '.date (nl"l , !</p>' ; ?> </body> </html>

Quand vous l'enregistrez,sur votre bureau,renommez-la tast.php,(changez l'extension de .htmlen .php). Ainsi, le serveur php est avis que cette page contient du code PHP (que le navigateur ne sait pas afficher en ce quile concerne). Fermez votre diteur.Double-cliquez directement sur votre page test.php :Quelle dception 1 Cela ne vous ouvre pas une page web mais... le code que vous venez de quitter, sous un diteur de texte qui est probablement bloc-notes sans coloration syntaxique. (Au passage,profitez-en pour paramtrer votre ordipour ouvrir notepad++ par dfaut pour les fichiers PHP)... C'est ici que le fait d'avoir install WampServer sur votre machine va vous tre utile. En effet, il vous faut un interprteur PHP install en local. Ouvrez votre serveur wamp.Une fois dmarr,cliquez sur son icne dans la barre d'tat droite,une sorte de demisphre jaune,un peu comme un demi-pamplemousse.
-8

Les sources prsentes sur cette paqes sont libres de droits,BIvous pouvez les utiliser votre oonV81'1ance.Par contre la page de prsentation de s sources constitue une oeuvre Intellectuelle protge par les droits d'auteurs.Copyright Cl 2009 VAUTHIER Sylvie.Aucune reproduction, mme partielle,ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documenta,images,etc sana l'autorisation expresse de l'auteur.Sinon vous encouraz selon la loi jusqu'Ill 3 ans de prison et jusqu' 300 000 E de dommages et fntrts.
hl!p:J/sytvie-vauthier.davelappaz.comlhltarialllphplgrancklebutanl/

PHP:Le tutorielpour grands dbutanls presas par Sylvie V&ulhier (Accueil)

Choisissez www dlrectory.

phpMyAdmin SQLiteManager

www directory
Apache ._

..

Stop Ali Services Restart Ali Services

l'interface graphique du serveur wamp

Dans la fentre qui s'ouvre,crz un dossier PHP et glissez-y

votre fichier test.php.

Vous passerez toujours par cette icne Rpamplemousse" pour accder vos fichiers. Cliquez maintenant sur cette icOne, puis sur localhost.Dans la fentre qui s'ouvre,rubrique vos projets, ouvrez le dossier PHP ... Cliquez sur votre fichier test.php et admirez le travail... La Jour affich en anglais,date quisera toujours Jour... Cliquez affichage/source sur votre navigateur :Vous pouvez constater qu'il n"y a plus trace de PHP,il ne reste que du code HTML... Voicirapidement ca quisa passa chaque rafralchlssamant : le serveur PHP va droit aux fichiers qui ont une extension PHP, puis il va droit aux balises PHP de ce fichier, et interprte ce qu'ily a dedans : ici,ilaffiche (echo) tout ce quiest entre parenthses,puis concatne ou colle sivous voulez (le point) le rsultat de la fonction date qui renvoie le jour en anglais... Il a donc Interprt du PHP pour le traduire en HTML. Ensuite,li repasse le fichier aunavigateur,qullulnesaltafflcherQUEduHTML(ou duCSS)... et bien a tombe bien,il ne voit que du HTML dornavant... Mais sivous revenez demain sur cette page,la fonction date affichera un autre jour dans le HTML. Voici pour l'aspect technique. Pour la prisa an main da Wamp,na retenez qua cecipour !"Instant :

Les sources prsentes sur cette paqes sont libres de droits,BIvous pouvez les utiliser voire oonV81'1ance.Par contre la page de prsentation de s sources constitue une oeuvre Intellectuelle protge par les droits d'auteurs.Copyright Cl 2009 VAUTHIER Sylvie.Aucune reproduction, mme partielle,ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents,images,etc sana l'autorisation expresse de l'auteur.Sinon vous encouraz selon la loi jusqu'Ill 3 ans de prison et jusqu' 300 000 E de dommages et fntrts.
hl!p:J/sytvie-vauthier.davelappaz.comlhltarialllphplgrancklebutanl/

-9-

PHP:Le tutorielpour grands dbutanls presas par Sylvie V&ulhier (Accueil)

Prise en main de Wamp


1 2 Quand vous voulez retrouver votre code :icne puis wwwdirectory et PHP/volre fichier... Quand vous voulez voir la produit da votre travail,bref,tester votre coda :icne puis localhost,rpertoire PHP et votre fichier...

Ca deviendra vite un rflexe.. Maintenant que tout toume,notre premire tape portera sur les variables et sur la structure echo quisignifie donc afficha et qua l'on utilisa en permanence... Voiciquelques exemples...que vous testerez en les rajoutant sur votre fichierau seindes balises PHPbien entendu.

11-2- Les variables


$ devant une chalne de caractres signifie que nous partons d'une variable, on la nomme comme on veut ensuite, mais jamais d'accent nid'espace dans un nom de variable. Une variable est type:elle peut prendre 4 types (dans l'ordre ci-dessous):

Les types des variables


string (chalne de caractres) integer (nombre entier} bool (boolen qui signifie logique binaire genre vraiou faux) float (nombre rel)

<?php $nom='MickaiH '; $age-17; $gars= 'tr1111; $taille -1.75; ?>

tudiez bien chaque dtail


Toutes les instructions (toutes) se tenninent par un point virgule. Seule la variable string exige les guillemets (simples ou doubles,prfrez les apostrophes pour l'instant, nous verrons pourquoiun peu plus loin}... La boolenne prend la valeur trua,mals sans guillemets, elle a pour contraire...falsa. La nombre ralprend un point l'anglo-saxonne at non une virgula...

N'hsitez pas personnaliser ces exemples et les triturer en en changeant les donnes pour les assimiler.

10Les sources prsentes sur cette paqes sont libres de droits,BIvous pouvez les utiliser voire oonV81'1ance.Par contre la page de prsentation de s sources constitue une oeuvre Intellectuelle protge par les droits d'auteurs.Copyright Cl 2009 VAUTHIER Sylvie.Aucune reproduction, mme partielle,ne peut tre faite de ce site et de l'ensemble de son conlenu : textss, documents,images,etc sana l'autorisation expresse de l'auteur.Sinon vous encouraz selon la loi jusqu'Ill 3 ans de prison et jusqu' 300 000 E de dommages et fntrts.
hl!p:J/sytvie-vauthier.davelappaz.comlhltarialllphplgrancklebutanl/

PHP:Le tutorielpour grands dbutanls presas par Sylvie V&ulhier (Accueil)

11-3- echo
Bien maintenant que nous avons dfini le type des variables en mme temps que nous leur avons affect une valeur, affichons les grce echo,dans un environnement HTML :

<?php

edho'<p>Bonjour toua.<br/>
Mon vrai nom n\'est pas Toto.<br/> Mon vrai nom est '.$nom.'<br/> J\'ai '.$age.'ans et je mesure '.$taille.'m.<br/> Et comme mon nom 1\'indique, je suis '; if ($gars ==tru8) {

eaho 'un garon.</p>' ;


1{ echo 'une fille. </p>' ; ?>

Commentaires sur cette Instruction echo : Ici je n'aifait que deux instructions 'affiche' :Une automatique, et une conditionnelle. Vous remarquerez que je suis alle la ligne au sein de l'affichage grce la balise br/.Vous remarquerez que toutes les apostrophes qui sont seulement du texte ont t neutralises en plaant\ devant chacune d'elle pour qu'elles ne soient pas considres comme la fin de la chaine de caractres. Vous remarquerez que l'affichage du contenu de la variable se fait automatiquement, en mettant la variable nue dans le coda. Vous remarquerez que la point sart concat6nar (ou coller du texte bout bout). Il vous faut grer les espaces l'affichage au sein des guillemets. Ici la coloration syntaxique devient indispensable. Enfin vous remarquerez que ma condition (sic'est un garon ou une fille),bien qu'crite la ligne dans mon code et ouvrant une seconde instruction echo,s'affiche tout de mme dans la continuit de mon prcdent echo... Autrement dit,c'est toujours auniveau du code HTML quese grent les retours la ligne de l'amchage (balises br/,balises pou autres). Les retours la ligna que vous faites spontanment dans votre code PHP aprs chaque instruction ne sont que des retours la ligne destination du programmeur pour une meilleure lisibilit de son code. Dernire remarque :Prenez bien l'habitude de savoir quelniveau vous tes : au niveau du mta-langage PHP ou bien au niveau du code HTML quiaboutit un affichage.

11-4- Guillemets ou Apostrophes?

11-4-a- Ce que je ne conseille pas


Si vous tes un peu flemmard, vous trouverez bien pratique de savoir que les guillemets- (contrairement aux guillements simples ou apostrophes) pennettent cecien PHP:

<?php
$age=l8;

//Ceci affichera directement //J'ai 18 ans.

edho"J'ai $age ana." ;


?>

Alors vous allez peut-tre trouver cela un peu tordu d'utiliser les guillemets simples pour PHP du coup, puisque l'exemple ci-dessus rgle en un seul coup de cuiller pot le problme de l'interprtation directe de la variable et le problme de l'apostrophe du texte J'ai...

Les sources prsentes sur cette paqes sont libres de droits,BIvous pouvez les utiliser votre oonV81'1ance.Par contre la page de prsentation de s sources constitue une oeuvre ntellectuelle protge par les droits d'auteurs.Copyright Cl 2009 VAUTHIER Sylvie.Aucune reproduction, mme partielle,ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documenta,images,etc sana l'autorisation expresse de l'auteur.Sinon vous encouraz selon la loi jusqu'Ill 3 ans de prison et jusqu' 300 000 E de dommages et fntrts.
hl!p:J/sytvie-vauthier.davelappaz.comlhltarialllphplgrancklebutanl/

- 11-

PHP:Le tutorielpour grands dbutanls presas par Sylvie V&ulhier (Accueil)

Pourtant, Je pense que vous devrez procder de faon plus rigoureuse si vous tes amen continuer avec PHP, aussije vous prie d'adopter la convention suivante,pour ce tuto du moins:

11-4-b - Ce que je conseille


A l'avenir, vous allez frquemment produire du HTMlavec votre code PHP, puisque c'est sa fonction essentielle. Ainsien adoptant la convention suivante,vous saurez toujours sivous tes au niveau de PHP ou bien de HTML.

<?php edho'<div class="contenu">blablabla</div>' ; ?>

Quandvous utilisez un ' :on est au niveau de PHP. Quand vous utilisez un " :on est au niveau du HTML.
Pour la clart de vos ides,je conseille donc ceci:

<?php $age=l8; edho'J\'ai '.$age.'ans.' ; ?>

Bien sOr, il vous restera du coup avoir le rflexe : Attention, dans le contenu de mon HTML, entre deux balises, siJ'alune apostrophe dans mon texte (ce quirevient somme toute assez rarement) :

il faut que je pense au caractre d'chappement. Mais a ne devrait pas poser de problme majeur, toutes les phrases ne contenant pas autant d'apostrophes que
dans l'exemple ci-dessous...

edho'<div class="contenu">L\'hirondelle vole tire d\'ailes vers 1\'Europe du Nord \'teint.</div>' ; ?>

L\'hiver s

11-5- TP2
Pour vos premiers travaux pratiques,vous programmerez ceci : A partir d'une page vierge de notepad++ et sans copier-coller,vous ferez la page emploi.php quidevra afficher ceci:

Les sources prsentes sur cette paqes sont libres de droits,BIvous pouvez les utiliser voire oonV81'1ance.Par contre la page de prsentation de s sources constitue une oeuvre Intellectuelle protge par les droits d'auteurs.Copyright Cl 2009 VAUTHIER Sylvie.Aucune reproduction, mme partielle,ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents,images,etc sana l'autorisation expresse de l'auteur.Sinon vous encouraz selon la loi jusqu'Ill 3 ans de prison et jusqu' 300 000 E de dommages et fntrts.
hl!p:J/sytvie-vauthier.davelappaz.comlhltarialllphplgrancklebutanl/

-12-

PHP:Le tutorielpour grands dbutanls presas par Sylvie V&ulhier (Accueil)

BONJOUR
Le salaire auquel j'aspire pour bien vivre : 2000 La branche dans laquelle je travaille ou souhaiterais travailler: L iufonnatique Pour prciser: L iufonnatique est la branche dans laquelle je travaille. La note moyenne que j'ai obtenue au bac : 11.5

Bien entendu les donnes suivantes :2000,L'Informatique,et11.5 ainsique mon option (dans laquelleJe travaille ou souhaita travailler) sont des variables car on peut les modifier souhait. Vous prendrez soin de les afficher en gras,ces variables Bon courage... Et Interdiction da courir . la solution au premier chec. Lisez bien les messages d'erreur,ils indiquent la ligne modifier (ou parfois la ligne du dessus). Il est invitable de faire beaucoup d'erreurs de ce type au dbut... Donc patience, relisez le cours, mais ne venez la solution que quand votre code produit quelque chose de satisfaisant et sans copier/coller.

11-6 - Correction du TP2


Veuillez cliquer sur le symbole droite pour dcouvrir la solution quand vous aurez fini.

<head><title>Ma page d'accueil </title></head> <body> <hl>BONJOUR </hl> <?php //Initialisation des variables $travail='L\'informatique' ; $salaire -2000; $etude=fal; $bac-11.5; //affichage eabo 'Le salaire auquel j\'aspire pour bien vivre:<b>' $salaire.'</b>D<br/> . La branche dans laquelle je travaille ou souhaiterais travailler:<b>' .$travail .'</b><br/> Pour prciser: <b>'$travail.'</b>' ; if ($etude==tzuel 1 echo' <b>est la branche dans laquelle je souhaiterais travailler.</b><br/>' ;

11 ' <b>est la branche dans laquelle je travaille.</b><br/>' echo ;


ecbo 'La note moyenne que j\'ai obtenue au bac: <b>' .$bac.'</b>' ; ?> </body> </html>

-13Les sources prsentes sur cette paqes sont libres de droits,BIvous pouvez les utiliser votre oonV81'1ance.Par contre la page de prsentation de s sources constitue une oeuvre Intellectuelle protge par les droits d'auteurs.Copyright Cl 2009 VAUTHIER Sylvie.Aucune reproduction, mme partielle,ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documenta,images,etc sana l'autorisation expresse de l'auteur.Sinon vous encouraz selon la loi jusqu'Ill 3 ans de prison et jusqu' 300 000 Ede dommages et fntrts.
hl!p:J/sytvie-vauthier.davelappaz.comlhltarialllphplgrancklebutanl/

PHP:Le tutorielpour grands dbutanls presas par Sylvie V&ulhier (Accueil)

Ill- PHP ETAPE 3


Pour l'instant, on a manipul des variables que l'on entrait " la main" soi-mme. Il nous faut maintenant voir comment manipuler vritablement des variables,entres par l'utilisateur.

111-1 - Les formulaires


Vous le savez,un formulaire en HTML,c'est la suite de balises suivante :

<form name="inscription" method="post" action="saisie.php" > Entrez votre pseudo :<input type="text" name="pseudo"/> <JJr/> Entrez votre ville :<input type="text" name="ville"/><br/> <input type="submit" name="valider" value="OK" /> </form>

Ici,ce formulaire prsente une zone de saisie pour entrer son pseudo,va la ligne,une zone de saisie pour entrer sa ville,va la ligne, et enfin un bouton pour valider sur lequelsera crit 'OK'...

Le but,vous l'aurez compris,c'est de rcuprer,via PHP,les infos entres par n'importe quelusager. Voicicomment les choses vont se dcouper :
Las attributs dans la balisa forrn prcisant la nom duformulaire,puis prcisent que les variables contenues dans ce formulaire seront anvoy6as par la mthode POST (au moment oa'J l'utilisateur cliquera sur le bouton submit) i la page salsla.php (disons que c'est notre page de dpart,oui,celle o il y a le formulaire)... Quelles variables y aura-t-il,que comporteront-elles et surtout,quels noms porteront ces variables ? Il y aura la variable $_POSTrpseudo'],quiconstitue le texte entr dans la zone pseudo par l'utilisateur avant d'avoir cliqu sur submit... Et on continue ainsi, salon la formula immuable $_POSTfnama1pour chaque input, car les variables sont automatiquent nommes ainsi. Pareilpour S_POST["vllle']... Enfin S_POST('valldar'] sera la variable qui dira, si elle existe bien entendu, qu'il y a eu clic sur la validation, et si elle n'existe pas, qu'il n'y a pas eu clic... Information trs Importante,nous y reviendrons souvent... Les choses sont claires ? Comment allons-nous donc rcuprer maintenant cette affaire, sur le fichier qui se nomme donc saisie.php et comporte ceci?

<head><title>Ma page d'accueil</title></head> <JJody> <hl>Bienvenue sur le site de toto </hl> <h2>Commencez-donc par vous inscrire :</h2> <form name="inscription" method="post" action="saisie.php" > Entrez votre pseudo :<input type="text" name="pseudo"/> <JJr/> Entrez votre ville :<input type="text" name="ville" /><br/> <input type="submit" name="valider" value="OK" /> </form> </body> </html>

En PHP,il faut toujours commencer par classer vos ides ainsi: Quelle est la condition pour que mon code s'excuta ? Autrement dit, quelle action de l'utilisateur va dclencher mon code...

Les sources prsentes sur cette paqes sont libres de droits,BIvous pouvez les utiliser voire oonV81'1ance.Par contre la page de prsentation
de

14-

mme partielle,ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documenta,images,etc sana l'autorisation expresse de l'auteur.Sinon vous encouraz selon la loi jusqu'Ill 3 ans de prison et jusqu' 300 000 E de dommages et fntrts.
hl!p:J/sytvie-vauthier.davelappaz.comlhltarialllphplgrancklebutanl/

sources constitue une oeuvre ntellectuelle protge par les droits d'auteurs.Copyright Cl 2009 VAUTHIER Sylvie.Aucune reproduction,

PHP:Le tutorielpour grands dbutanls presas par Sylvie V&ulhier (Accueil)

Ah, tout

a sera donc dans une condition,voyons donc immdiatement la syntaxe du si:

111-2 - La syntaxe de la condition if


if(user a cliqu sur valider){ rcupre la variable pseudo; rcupre la variable ville; cris 'Salut (son pseudo) de (sa ville).Bienvenue sur mon site !';
}

Voil donc la structure d'une condition... On entoure la condition entre des parenthses,on encadre toutes les Instructions dans des accolades. Et encore une fols bien sOr,chaque Instruction se tennlne toujours par un point-virgule. Oubliez un dtailde ce genre,et tout plante...Alors la syntaxe d'un truc aussi frquent,il vaut mieux la rpter jusqu' la savoir par coeur... Tout en restant prs de notre formulaire,imaginons que nous compliquons un peu notre condition : Dans le premiersi(ilacliqu),nousaimerionsdire qu'en plus,sisa ville estParis,nous luiproposonsde le rencontrer... Ce sera un 'ai'imbriqu. Mme principe, mais cette fois, pensez indenter votre code ds son laboration, pour ne pas vous prendre les pieds dans le tapis. lndenter,c'est dcaler d'un cran le code pour raisonner par niveau d'Imbrication...

if(user a cliqu sur valider){ rcupre la variable pseudo; rcupre la variable ville; cris 'Salut (son pseudo) de {sa ville).Bienvenue sur mon site !'; if(sa ville) 'Paris'{ cris 'On est plusieurs de Paris sur le site. Si tu veux qu'on se voie, contacte-nous l';

Remarquez une chose essentielle : if($ville=='Paris') comporte deux signes = C'est indispensable pour une comparaison. La variable ne reoit pas 'Paris'(signe d'affectation),elle est compare ( ) Paris. Vous ferez forcment cette erreur au dbut, d'autant plus difficile reprer qu'elle ne provoquera pas de message d'erreur: Le programme comprendra => Sila variable reoit Paris, et ce sera toujours vrai. Autrement dit,votre programme ne fera pas ce que vous voulez,mais le langage ne pourra pas vous prciser votre bug... Donc bien penser a en premier quand une condition ne toume pas comme on veut. (Aiiebien mis un double galdans la comparaison pour la condition ?)

Une dernire chose pour les si,s'liy a un si,Ilfaut parfois un ou plusieurs slnonsl,puis un sinonpour conclure en tout dernier... Restons toujours dans notre thmatique formulaire : Mettons que j'ai un formulaire qui m'a renvoy l'Age entr par l'utilisateur :
<?php $age=$_POST['age' ; ] ?>

La syntaxe donnera ceci:

Les sources prsentes sur cette paqes sont libres de droits,BIvous pouvez les utiliser votre oonV81'1ance.Par contre la page de prsentation de s sources constitue une oeuvre Intellectuelle protge par les droits d'auteurs.Copyright Cl 2009 VAUTHIER Sylvie.Aucune reproduction, mme partielle,ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documenta,images,etc sana l'autorisation expresse de l'auteur.Sinon vous encouraz selon la loi jusqu'Ill 3 ans de prison et jusqu' 300 000 E de dommages et fntrts.
hl!p:J/sytvie-vauthier.davelappaz.comlhltarialllphplgrancklebutanl/

-15-

PHP:Le tutorielpour grands dbutanls presas par Sylvie V&ulhier (Accueil)

<?php U($age<5)1 Sverdict='Ouh le bb! ; '


}

e1-.t.( aqe<13){ $
Sverdict='Vous tes un enfant!' ;
}

e1-.t.( aqe<18 $ ){ 1{

Sverdict='Vous tes un(e) ado !' ; $verdict='Ah enfin un(e) adulte!' ;

echo $verdict; ?>

Ici,pas d'imbrication,puisque ce sont des conditions successives et non imbriques l'une dans l'autre. La dernire (le else), c'est bien sr 'sinon',le truc par dfaut... Ici,que signifie-t-il concrtement? Que user a 18 ans ou plus,n'importe quelenlier> ou= 18... Dans tous les cas,Ilest affect une valeur $verdict au moment o Ilparvient l'Instruction 'affiche mol le verdict' .. . L'instruction n'est pas dans une condition,elle s'excute tous les coups. Mais la variable $verdict elle,n'est pas initialise de la mme faon selon que c'est l'une ou l'autre des 4 conditions de ce systme de conditions quil'a initialise. En d'autres termes, ds l'instant o le programme tombe sur une condition quise ralise,il cesse da tester la suite et passe l'excution de l' instruction

111-3- Les formulaires, suite


Revenons maintenant sur le traitement de notre formulaire de dpart,avec une toute petite condition bien classique :
if(user a cliqu sur valider){ rcupre la variable pseudo; rcupre la variable ville; cris 'Salut (son pseudo) de (sa ville).Bienvenue sur mon site !'1

Comment allons-nous dira enPHPla conditionou les instructions ? De la faonsuivante,que jecommenteraiensuite :

<?php if( saat ($_POST['valider' )) ] { Spseudo=$_POST ['pseudo' ]; $ville=$_POST ['ville' ]; echo 'Salut '$pseudo.'de ' $ville.'<br/>Bienvenue sur mon site!' ; ?>

Traduction : s'ilexiste une variable POST quia pour nom 'valider' et que donc user a valid, $pseudo reoit la variable POST qui a pour nom 'pseudo' $ville reoit la variable POST quia pour nom 'ville' affiche...bon la fonction echo n'a plus de secret pour vous... Remarque: On peut trs bien se passer de ranger la variable de type $_POSTrname1dans une variable au nom simplifi de type $name, et la manipuler directement ! Mais sion doit la manipuler sans arrt,c'est plus agrable (at plus stabia) da la renommer... Autre remarqua :

Les sources prsentes sur cette paqes sont libres de droits,BIvous pouvez les utiliser votre oonV81'1ance.Par contre la page de prsentation de s sources constitue une oeuvre Intellectuelle protge par les droits d'auteurs.Copyright Cl 2009 VAUTHIER Sylvie.Aucune reproduction, mme partielle,ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documenta,images,etc sana l'autorisation expresse de l'auteur.Sinon vous encouraz selon la loi jusqu'Ill 3 ans de prison et jusqu' 300 000 Ede dommages et fntrts.
hl!p:J/sytvi&-vauthier.davelappaz.comlhltarialllphplgrancklebutanl/

-16-

PHP:Le tutorielpour grands dbutanls presas par Sylvie V&ulhier (Accueil)

Puisque c'est l'attribut name dans la balise d"un obJet type formulaire quiva dterminer le nom de la variable POST,pensez-bien Ilne pas y mettre d'accent, nid'espace... Le name ne sert pas l'affichage,le user ne le verra pas 1 C'est pour le programmeur,pour vous...

111-4- Les formulaires, fin


On remet tout

a bout bout dans le code maintenant 1

<head><title>Ma page d'accueil</title></head> <body> <hl>Bienvenue sur le site de toto </hl> <h2>Commencez-donc par vous inscrire :</h2> <form name="inscription" method="post" action="saisie.php" > Entrez votre pseudo :<input type="text" name="paeudo" <br/> /> Entrez votre ville :<input type="text" name= 0 ville" /><br/> <input type="submit" name="valider" value="OK" /> </form> <?php if( it ($_POST['valider' )) ] { $pseudo $ POST['pseudo' J; $ville $_POST['ville' ; ] echo Salut '.$pseudo.'de $ville.'<br/>Bienvenue sur mon site
'

?> </body> </html>

Vous exprimentez tout a en localbien entendu... Changez des dtails,triturez,appropriez-vous la mthode et la syntaxe D'autant que le TP3 est un vritable travail de programmation cette fois. Prenez bien votre temps...

111-5- TP3
Sans copier, ni copier/coller le cours,concevez une page qui s'appelle imc.php, et propose un formulaire sous la forme suivante :
Entrez votre prnom Entrez votre taille (sous la forme 1.701 Entrez votre poids (en kilos) : OK

Ensuite vous traiterez le formulaire en PHP pour que quand la personne clique,elle voit apparaftre:
Bonjour (son prnom) Votre IMC (indice de masse corporelle) est exactement : (son !mc) Vous avez (une corpulence normale ou bien Vous tes en surpoids, ou bien Vous tes obse etc)

Pour la petite opration,I'IMC, c'est le poids divis par la taille divis par la taille... En voicila syntaxe : $polds/($tallle'*$tallle) (Nous reviendrons plus tard sur les oprateurs)... Pour les conditions quidterminent les tranches de I'IMC,consultez wikipedia par exemple,rubrique :interprtation de I'IMC, classification de l'OMS. N'omettre aucune tranche bien entendu 1 http:/lfr.wikipedia.org/wikinndice_de_masae_corporelle

Les sources prsentes sur cette paqes sont libres de droits,et vous pouvez les utiliser votre oonV81'1ance.Par contre la page de prsentation
de

17-

mme partielle,ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documenta,imagea,etc sana l'autorisation expresse de l'auteur.Sinon vous encouraz selon la loi jusqu'Ill 3 ans de prison et jusqu' 300 000 E de dommages et fntrts.
hl!p:J/sytvie-vauthier.daveloppaz.comlhltarialllphplgrancklebutanl/

sources constitue une oeuvre ntellectuelle protge par les droits d'auteurs.Copyright Cl 2009 VAUTHIER Sylvie.Aucune reproduction,

PHP:Le tutorielpour grands dbutanls presas par Sylvie V&ulhier (Accueil)

111-6 - Correction du TP3


Veuillez cliquer sur le symbole droite pour dcouvrir la solution quand vous aurez fini.

<head><title>Votre IMC</title></head> <body> <hl>Dterminez votre IMC et sachez quelle est votre corpulence d'un point de vue mdical</hl> <h2>Entrez les donnes suivantes </h2> <form name="formulaire" method="post" action="imc.php"> Entrez votre prnom :<input type="text" name="prenom" <br/> /> Entrez votre taille (sous la forme 1.70) : <input type="textn name=ntaille" <br/> /> Entrez votre poids (en kilos) :<input type="text" na.me="poids"/> <br/> <input type="submit" name="valider" value="OK" /> </form> <?php if( it ($_POST['valider' )J { ] $prenom-$_POST['prenom' ; ] $taille -$_POST['taille' ; ] $poids=$_POST['poids' ; ] $imc=$poids/($taille+$taille);
echo 'Bonjour '.$prenom.'<br/>

Votre IMC (indice de masse corporelle) est exactement


i:f ($imc<16 .51 1

'.$i.mc.'<br/>' ;

$verdict='Vous tes en dnutrition.' ;


e1se :f ($imc<18 .5l l

$verdict='Vous tes maigre.' ; 1


e1sei:f ($imc<25){

$verdict='Vous avez une corpulence normale.' ; 1


e1sei:f ($imc<30 ){

$verdict='Vous tes en surpoids.; 1


e1sei:f ($imc<35){

$verdict='Vous @tes en tat d\'obsit modre.' ; l


e1sei:f ($imc<40 ){

$verdict='Vous tes en tat d\'obsit svre.' ;

11$verdict='Vous tes en tat d\'obsit massive.' ;


ecbo $verdict;

?> </body> </html>

-18Les sources prsentes sur cette paqes sont libres de droits,BIvous pouvez les utiliser votre oonV81'1ance.Par contre la page de prsentation de s sources constitue une oeuvre Intellectuelle protge par les droits d'auteurs.Copyright Cl 2009 VAUTHIER Sylvie.Aucune reproduction, mme partielle,ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documenta,imagea,etc sana l'autorisation expresse de l'auteur.Sinon vous encouraz selon la loi jusqu'Ill 3 ans de prison et jusqu' 300 000 E de dommages et fntrts.
hl!p:J/sytvie-vauthier.davelappaz.comlhltarialllphplgrancklebutanl/

PHP:Le tutorielpour grands dbutanls presas par Sylvie V&ulhier (Accueil)

IV - PHP ETAPE 4
Vous avez un formulaire qui propose des saisies au client (client au sens informatique du mot, par opposition serveur).Disons une dizaine. Vous vous en souvenez,cela crera une dizaine de variables $_Posrrnom_de_l_input']. IlsetrouvequePHPrange automatiquement ces variablesdans un tableau.Nous yreviendrons la finde cette tape. Commenons par voir ce qu'est un tableau :

IV-1- Les tableaux simples


Un tableau,c'est un moyen de stocker plusieurs variables,selon un plan quivous paralt logique. C'est comparable un meuble avec ses tiroirs. Dans le tiroir 0,(oui,le tableau commence par le tiroir zro),vous rangez la variable lundi par exemple, dans le tiroir 1,vous rangez la variable mardi etc. En informatique, on appelle index ou indice le numro de tiroir (la position de la variable dans le tableau),et valeur la valeur de la variable entrepose. Voicila syntaxe d'un tableau tout simple

Ssemaine= ray('lundi' 'mardi''mercredi' 'jeudi' 'vendredi' 'samedi' 'dimanche' ; , , , , , , ) ?>

Par cette simple ligne,vous venez de construire un tableau (quivous le remarquerez,est une variable en luimme puisqu'il commence par$,mais une variable complexe,organise). $semaine est le nom du tableau entier. Vous luiavez affect des valeurs,(via la commande array, il sait que c'est un tableau). Et ici,par dfaut,l'index commence 0, donc dimanche aura pour index... 6 et non 7. Une fois construit ce tableau,comment convoquer une valeur ? $aemaine[2] aera..m ercrediet ainside suite...selon la rgle :$semaine[index] . Vous pouvez le vrifier en tapant la commande suivante :
cho $semaine[2]; ?>
<?php

Bien sr ici, nous avons construit un tableau contenant des variables string (les jours de la semaine) indices numriques (0,1,2 etc... ). On peut tout--fait ranger des valeurs numriques dana un tableau. Ainsice tableau quistocke quelques annes marquantes de l'histoire de France...

et dea

<?php

$dates= ray( l7B9,1B30,1B48 ,1851,1B71,1914,1918 ,1936 ,1939,1945,195B,l96B); cho $dates [3]; ?>

La commande echo renverra...1851ici.

Les sources prsentes sur cette paqes sont libres de droits,BIvous pouvez les utiliser votre oonV81'1ance.Par contre la page de prsentation de s sources constitue une oeuvre Intellectuelle protge par les droits d'auteurs.Copyright Cl 2009 VAUTHIER Sylvie.Aucune reproduction, mme partielle,ne peut tre faite de ce site et de l'ensemble de son contenu : textss, documenta,images,etc sana l'autorisation expresse de l'auteur.Sinon vous encouraz selon la loi jusqu'Ill 3 ans de prison et jusqu' 300 000 E de dommages et fntrts.
hl!p:J/sytvie-vauthier.davelappaz.comlhltarialllphplgrancklebutanl/

19-

PHP:Le tutorielpour grands dbutanls presas par Sylvie V&ulhier (Accueil)

IV-2- Les commentaires


Au sein de votre code, il est bon de poser parfois quelques commentaires, quelques lignas d'explication quine seront bien entendu pas considres par la machine comme dea lignes de programmation excuter mais
des lignes qu'elle pourra zapper, et quine sont destines qu'au programmeur, qui remet le nez dans son programme parfois dix ans aprs et ne sait plus pourquoiou comment ila conu son code. Parfois,c'est une autre personne qui hrite du programme.Dans tous les cas,Ilfaut donc commenter son code.

Deux sortes de syntaxe pour des commentaires en PHP


Petit commentaire sur une seule ligne Il en dbut de ligne Commentaire sur plusieurs lignes /* au dbut et '*/ en dernier...

<?php
/* TOUS LES TABLEA'UX TOUTES LES DATES TOUS LES PAYS

*/

//tableau dates marquantes en France


$datesF=erra( 1789,1830,1848 ,1851,1871,1914,1918,1936,1939,1945,1958,1968);

//tableau dates marquantes aux Etats-unie


$datesUS arrey( 1861,1865,1917 ,1918,1929,1934,1941,1945,1959,1975); ?>

PS : partir de maintenant dans ce tuto, les commentaires me permettront galement d'insrer mes commentaires didactiques directement dans mon code... C'est-y-pas plus facile ?

IV-3- Les tableaux associatifs


Ici, la seule diffrence, par rapport un tableau simple, c'est que l'index n'est plus numrique,mais lui-mime une variable string: Par exemple,votre tableau veut stocker une adresse. Sachant que chaque adresse comporte en gros et dans cet ordre,un nom,un prnom,un numro,une rue,un code postal et une ville... On peut construire le tableau suivant :

<?php

//On signale que notre variable $adresse4 sera un tableau $adresse4 - arrey() ; //on le remplit $adresse4 ['nom' ]='DUPONT' ; $adresse4 ['prenom' ='Micka l ] ; ' $adresse4 ['num' = 12; ] $adresse4 ['rue' - rue des glantines' ] ; $adresse4 ['cp' - 93000; ] $adreaae4 ['ville' = 'SAINT-DENIS' ] ; ?>

'num'est iciun index du tableau adresse.12 est la valeur stocke l'index 'num'.
//Pour convoquer 12 echo $adresse4 ['num' ]; ?> -20<?php

Les sources prsentes sur cette paqes sont libres de droits,BIvous pouvez les utiliser votre oonV81'1ance.Par contre la page de prsentation
de

mme partielle,ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documenta,images,etc sana l'autorisation expresse de l'auteur.Sinon vous encouraz selon la loi jusqu'Ill 3 ans de prison et jusqu' 300 000 E de dommages et fntrts.
hl!p:J/sytvie-vauthier.davelappaz.comlhltarialllphplgrancklebutanl/

sources constitue une oeuvre ntellectuelle protge par les droits d'auteurs.Copyright Cl 2009 VAUTHIER Sylvie.Aucune reproduction,

PHP:Le tutorielpour grands dbutanls presas par Sylvie V&ulhier (Accueil)

Bien entendu,l'intrt d'un tableau d'adresses,c'est d'en stocker plus d'une ! Alors nous prooderons... un tableau de tableaux,un tableau imbriqu en fait... Nous venons de voir que $adresse4 est un tableau.

<?php //construction de mon tableau $agenda $agenda=array( $adresse0, $adressel, $adresse2 $adresse3 ,$adresse4); , ?>

Je procde ensuite en deux tapes :

<?php //rcuprer l'adresse totale de Mickal $adresaeMick $agenda[4]: En effet, l'adresse de Mickal se trouve dans notre agenda l'index 4 */ //Rcuprer enfin le nom de famille de Micka l echo $adresseMick['nom' ]: ?>

/*

(l'index numrique construit aut tiqueme

Compris ? Allez,mme sia pique un peu la tte, signalons au passage que l'on aurait pu retrouver le nom de Mickal dans ce tableau de tableaux par la syntaxe suivante,plus condense :

<?php
echo $agenda[4]['nom' ];

?>

IV-4- La boucle foreach


Bien sOr, l'idalpour parcourir les valeurs d'un tableau,c'est une boucle. La boucle foreach (pour chaque lment) prsente l'avantage de parcourir la totalit d'un tableau, mime sil'on n'a aucune ide du nombre d'lments qu'ilcontient. Reprenons notre tableau des jours de la semaine, comment le parcourir ?

<?php //construction du tableau semaine $semaine=array( 'lundi' ,'mardi''mercredi' , , //parcours du tableau fo aah( $semaine $jour){ echo '.$jour.'<br/>' ':
/*

'jeudi' 'vendredi , , '

'samedi' 'dimanche' ; , )

Pour chaque valeur du tableau $semaine, compose la variable $jour et affiche le jour puis va la ligne... */ ?>

Les sources prsentes sur cette paqes sont libres de droits,BIvous pouvez les utiliser votre oonV81'1ance.Par contre la page de prsentation de s sources constitue une oeuvre Intellectuelle protge par les droits d'auteurs.Copyright Cl 2009 VAUTHIER Sylvie.Aucune reproduction, mme partielle,ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents,imagea,etc sana l'autorisation expresse de l'auteur.Sinon vous encouraz selon la loi jusqu'Ill 3 ans de prison et jusqu' 300 000 Ede dommages et fntrts.
hl!p:J/sytvie-vauthier.davelappaz.comlhltarialllphplgrancklebutanl/

-21-

PHP:Le tutorielpour grands dbutanls presas par Sylvie V&ulhier (Accueil)

Copiez, collez maintenant le gros morceau de code qui suit, dont nous avons vu l'essentiel tout l'heure, la

construction la main d'un agenda d'adresses :

<head><title>Mon aqenda</title></head> <body> <?php $adresse0 = array() ; //on le remplit $adresse0 ['nom' 'ZERO' ]; $adresse0 ['prenom' 'Toto' ]; $adresse0 ['num' = 10 ] ; $adresse0 ['rue' = 'rue des rosiers' ] ; $adresse0 [ 'cp' ] 94000; $adresse0 ['ville' = 'IVRY-SUR-SEINE' ] ; $adresse ! array() = ; //on le remplit $adresse! ['nom' ]='AIN ; ' $adresse! ['prenom' J='Anne' ; $adresse! ['num' - 11; J $adresse! ['rue' - 'rue des moineaux' ] ; $adresse! [ 'cp'1 57000; $adresse! ['ville' = 'METZ' ] ; $adresse2 = array() ; //on le remplit $adresse2 ['nom' ]='DEUX' ; $adresse2 ['prenom' ='Al' ] ; $adresse2 ['num' = 2; ] $adresse2 ['rue' = 'rue des arbres' ] ; $adresse2 [ 'cp' ] 88000; $adresse2 ['ville' - 'EPINAL' ] ; $adresse3 = array() ; //on le remplit $adresse3 ['nom' ]='TROIS' ; $adrease3 ['prenom' ='La' ] ; $adresse3 ['num' = 3; ] $adresse3 ['rue' = 'rue des lphants' ] ; $adresse3 ['cp' ] 69000; $adresse3 ['ville' = 'LYON' ] ; $adresae4 = array() ; //on le remplit $adresse4 ['nom' 'DUPONT' ]; $adresse4 ['prenom' 'Mick' ]; $adresse4 ['num' = 4; ] $adresse4 ['rue' = 'rue des glantines' ] ; $adresse4 [ 'cp'1 93000; $adresse4 ['ville' = 'SAINT-DENIS' ] ; //on dclare et remplit l'agenda avec toutes les adresses prcdentes $aqenda=array( $adresse0 ,$adressel,$adresse2 ,$adresse3,$adresse4); ?> </body> </html>

Les sources prsentes sur cette paqes sont libres de droits,BIvous pouvez les utiliser votre oonV81'1ance.Par contre la page de prsentation de s sources constitue une oeuvre Intellectuelle protge par les droits d'auteurs.Copyright Cl 2009 VAUTHIER Sylvie.Aucune reproduction, mme partielle,ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents,images,etc sana l'autorisation expresse de l'auteur.Sinon vous encouraz selon la loi jusqu'Ill 3 ans de prison et jusqu' 300 000 Ede dommages et fntrts.
hl!p:J/sytvie-vauthier.davelappaz.comlhltarialllphplgrancklebutanl/

-22-

PHP:Le tutorielpour grands dbutanls presas par Sylvie V&ulhier (Accueil)

Ceux quiont suivi le devinent, qui dit tableau de tableaux dit.boucles Imbriques pour la lecture du tableau:

<?php //pour chaque lment de $agenda cre la variable $adresse o aeh( $agenda as $adresse){ //pour chaque lment de $adresse cre la variable $element oreach( $adresse a. $element){ //cris le $element sur la mme ligne avec un tiret et des espaces echo '- '.$element.' ';
//A chaque nouveau $adresse, saute une ligne acho'<br/>' ;

?>

Et voicinotre agenda quis'affiche de faon assez lisible... Bien,nous arrivons maintenant au coeur de notre problme,et nous revenons notre formulaire : Comment r6cuprar das variables $_POST, rsultats d'un formulaire da salsla, quand allas nombreuses ?

sont

IV-5- Boucle foreach et variables POST


PHP construit automatiquement un tableau associatif ds que l'on soumet un formulaire. Ce tableau se nomme $_POST,chaque lment a pour index le 'name'd'un lment du formulaire,et chaque valeur,la valeur entre par l'utilisateur dans chaque champ avant de cliquer sur le bouton 'submit' .

. 23Les sources prsentes sur cette paqes sont libres de droits,BIvous pouvez les utiliser votre oonV81'1ance.Par contre la page de prsentation
de

mme partielle,ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents,images,etc sana l'autorisation expresse de l'auteur.Sinon vous encouraz selon la loi jusqu'Ill 3 ans de prison et jusqu' 300 000 Ede dommages et fntrts.
hl!p:J/sytvie-vauthier.davelappaz.comlhltarialllphplgrancklebutanl/

sources constitue une oeuvre ntellectuelle protge par les droits d'auteurs.Copyright Cl 2009 VAUTHIER Sylvie.Aucune reproduction,

PHP:Le tutorielpour grands dbutanls presas par Sylvie V&ulhier (Accueil)

On peut donc grener tranquillement notre tableau de variables POST de cette faon :

<?php /*pour chaque lement du tableau $_POST, rcupre et affecte la valeur de l'index, puis rcupre et affecte la valeur associe cet index*/ foze&db( POST aa $index=>$valeur){ $ echo ''.$valeur.'<br/>' ; ?>

Pour vousen convaincre,reprenonsle fonnulairesur I'IMC,(correctionduTP3) et voyonsce que cette boucle produit:

<head><title>Votre IMC</title></head> <l:loy> <hl>Dterminez votre IMC et sachez quelle est votre corpulence d'un point de vue mdical</hl> <h2>Entrez les donnes suivantes </h2> <form name="formulaire" method="post" action="tableau.php" > Entrez votre prnom :<input type="text" narue="prenom" <Dr/> /> Entrez votre taille (sous la forme 1.70) : <input type="text" name="taille" <br/> /> Entrez votre poids (en kilos) :<input type="text" name="poids"/> <br/> <input type=0 submit" name="valider" value="OK" /> </form> <?php eaho 'Vos donnes entres: '.'<br/>' ; if( iaaet ($_POST['valider' )) ] { fozeach( $_POST as $index->$valeur)( eeho '-' .$index.' ; '.$valeur .'<l:lr/> ; ' ?> </body> </html>

Ce petit bout de code ne fait qu'afficher la valeur des variables que le client vient d'entrer plus la valeur (pennanente) de valider quiest 'ok'...

IV-6- TP4
Sur le fichier tp4.php,offrez via un formulaire la saisie du nom, du prnom, de l'age,de la ville et de l'activit. Quand l'utilisateur clique sur le bouton valider,il voit apparaTtre en dessous du mme fonnulaire le message suivant : "Vous venez de saisir :'puis la ligne chaque fols un tiret son nom,un tiret son prnom etc... Comme d'habitude sans copier... De mmoire seulement... Par ailleurs,on na vaut pas voir 'ok" dans la liste de ce que l'on vient de saisir...

Les sources prsentes sur cette paqes sont libres de droits,BIvous pouvez les utiliser votre oonV81'1ance.Par contre la page de prsentation de s sources constitue une oeuvre Intellectuelle protge par les droits d'auteurs.Copyright Cl 2009 VAUTHIER Sylvie.Aucune reproduction, mme partielle,ne peut tre faite de ce site et de l'ensemble de son contenu : textss, documenta,images,etc sana l'autorisation expresse de l'auteur.Sinon vous encouraz selon la loi jusqu'Ill 3 ans de prison et jusqu' 300 000 E de dommages et fntrts.
hl!p:J/sytvie-vauthier.davelappaz.comlhltarialllphplgrancklebutanl/

-24-

PHP:Le tutorielpour grands dbutanls presas par Sylvie V&ulhier (Accueil)

IV-7- Correction du TP4


Veuillez cliquer sur le symbole droite pour dcouvrir la solution quand vous aurez fini.

<head><title>Identit</title></head> <body> <hl>Identit</hl> <foi1ll name="formulaire" method=npost" action="tp4.php"> Entrez votre nom :<input type="text" name="nom"/> <br/> Entrez votre prnom :<input type="text" name="prenom" <br/> Entrez votre /> qe:<input type=ntext" name="aqe" <br/> /> Entrez votre ville :<input type="text" name= 0 ville" <br/> /> Entrez votre activit : <input type="text" name="activite" <br/> /> <input type 0 51lbmit" name "valider" value "OK" /> </form> <?php if( it ($_POST['valider' )) ] { eabo '<h3>Vous venez d\'entrer :</h3>' ; oreach( $_POST $index=>$vale1lr )( ($index 'valider' { !)

echo ''.$valeur.'<br/>' ;

?> </body> </html>

Les sources prsentes sur cette paqes sont libres de droits,BIvous pouvez les utiliser votre oonV81'1ance.Par contre la page de prsentation de s sources constitue une oeuvre Intellectuelle protge par les droits d'auteurs.Copyright Cl 2009 VAUTHIER Sylvie.Aucune reproduction, mme partielle,ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documenta,images,etc sana l'autorisation expresse de l'auteur.Sinon vous encouraz selon la loi jusqu'Ill 3 ans de prison et jusqu' 300 000 E de dommages et fntrts.
hl!p:J/sytvie-vauthier.davelappaz.comlhltarialllphplgrancklebutanl/

-25-

PHP:Le tutorielpour grands dbutanls presas par Sylvie V&ulhier (Accueil)

V - PHP ETAPE 5 V-1 - Les oprateurs


Rapidement les oprateurs essentiels :

LES OPERATEURS ARITHMETIQUES

*/ //la variable reoit 5 (simple gal $valeur=5; //plus et moins $noml:lre=(4+6)-2; //$nombre vaudra 8; //multiplier ou diviser $nomb.re=(4*6)/2; //$nombre vaudra 12;

oprateur d'affectation)

//Priorits si vous ne mettez pas de parenthses $valeur 4+6*2; //multiplier ou diviser est prioritaire. //Si vous risquez d'oublier, scurisez avec des parenthses $valeur=4+(6*2); //Sans parenthses, cela revient 16; //Si vous souhaitez une autre priorit, dplacez les parenthses $valeur=(4+6)*2; //Cela revient 20; //modulo ou ce qui reste aprs division entire $nombre=6%2; //$nombre renverra 0 (car 6 est divisible par 2 donc reste zro). $nombre=27%4, //$nombre renverra 3 (car 6x4=24 reste 3). //comparer //RAPPEL IMPORTANT 1f ($nombre= 4) //son contraire 1f( $nombre!=4) //Diffrent de //infrieur, suprieur 1f($nombre<4) 1f($nombre>4) //infrieur ou gal, suprieur ou gal 1f($nombre<=4) 1f($nombre>=4)
/*

penser au double gal

LES COMPARAISONS LOGIQUES */ //si l'ge est compris entre 15 et 25 ans : if (( $age>=l5)&& ($age<=25)) //Notez pour le 'et' logique (AND marche aussi) //Notez les parenthses imbriques pour chaque sous-condition //si $truc est 'papa'ou 'maman' //RAPPEL IMPORTANT : penser au double gal de comparaison 1f(( $truc=='papa' 1 1 ($truc= 'maman' ) ) ){

Les sources prsentes sur cette paqes sont libres de droits,BIvous pouvez les utiliser votre oonV81'1ance.Par contre la page de prsentation de s sources constitue une oeuvre Intellectuelle protge par les droits d'auteurs.Copyright Cl 2009 VAUTHIER Sylvie.Aucune reproduction, mme partielle,ne peut tre faite de ce site et de l'ensemble de son contenu : textss, documents,images,etc sana l'autorisation expresse de l'auteur.Sinon vous encouraz selon la loi jusqu'Ill 3 ans de prison et jusqu' 300 000 E de dommages et fntrts.
hl!p:J/sytvie-vauthier.davelappaz.comlhltarialllphplgrancklebutanl/

-26-

PHP:Le tutorielpour grands dbutanls presas par Sylvie V&ulhier (Accueil)

parents !'; //Notez 11 (2 fois la touche AltGr+6) pour le 'ou loqique //on l'appelle aussi le ou inclusif (OR marche aussi) //Notez les parenthses imbriques pour chaque sous-condition

?>

V-2- Les fonctions V-2-a- Les fonctions dans la page


Imaginons le problme suivant. Votre programme affiche les notes/20 d'un lve. Vous souhaitez mettre en rouge toutes les notes (strictement) infrieures 10. Vous souhaitez mettre en vert toutes les notes suprieures (ou gales) 15. Cela veut dire qu' chaque apparition d'une note, il faut la tester et luiappliquer la couleur adquate. Comme c'est une tAcha rp6tltlva,on va la mettra an forma dans una fonction. Voicicomment oprer : On place videmment la fonction que l'on va construire au dbut du code,avant da l'utiliser. Par exemple, dans le dbut du body (au sein de balises PHP bien sOr). Mais on na la cra qu'une fois,tandis qu'on la convoqua autant qu'on vaut un peu plus loin sur le mme fichier PHP. C'est pourquoion va luidonner un nom simple retenir (comme les variables,les noms de fonctions sont libres,il faut juste bannir les espaces et les accents.) Bien entendu, il faut aussiretenir une chose :c'est que sile nom de votre fonction est libre,une fois que vous l'avez choisi,vous ne pourrez le convoquer qu'en ne changeant rien (niune lettre,niune majuscule ou minuscule)... Mais bon, vous devez commencer comprendre que comme tout langage de programmation,PHP ne supporte aucune coquille.

La cadra da notre fonction sa prsentera ainsi:


function colore($nombre) { toutes les instructions se situeront l'intrieur de ces accolades; et se termineront par un ;

Dans la cration de la fonction,ilest obligatoire de commencer par crire function,ensuite vient la nom (libre). Enfin ici,notre fonction comporte un paramtre (une variable imaginaire, $nombre, dont on ne connat pas encore la valeur)... On fait comme si$nombre existait dj,et on fait le petit bout de code quieffectue ce qu'on veut obtenir :

<?php
functioo colore( $nombre){ i:f($nombre<10){ ecbo '<font color="redR>' $nombre.'</font>' . ;
}

elseif( $nombre>=15){ ecbo '<font color"greenn>' .$nombre.'</font>' ; //cas par dfaut(noir) e1sa{ acbo $nombre ;

?>

. 27Les sources prsentes sur cette paqes sont libres de droits,BIvous pouvez les utiliser votre oonV81'1ance.Par contre la page de prsentation de s sources constitue une oeuvre Intellectuelle protge par les droits d'auteurs.Copyright Cl 2009 VAUTHIER Sylvie.Aucune reproduction, mme partielle,ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documenta,images,etc sana l'autorisation expresse de l'auteur.Sinon vous encouraz selon la loi jusqu'Ill 3 ans de prison et jusqu' 300 000 E de dommages et fntrts.
hl!p:J/sytvie-vauthier.davelappaz.comlhltarialllphplgrancklebutanl/

PHP:Le tutorielpour grands dbutanls presas par Sylvie V&ulhier (Accueil)

Vous voulez tester jusqu'au bout cette nouvelle fonction ?

<?php //Construisons notre tableau de notes : $notes=array( 2,5,7,10,11,13,15,17 ,18); /*Scannons-le grce une boucle foreach du type echo 'Vos notes du trimestre :<br/>'; foreach($notes as $note)1 echo'- '.$note.'<br/>'; }*/ //Et maintenant, prcisons notre boucle foreach pour y convoquer notre fonction. eCho 'Vos notes du trimestre :<br/>' ; foreaeh( $notes aa $note){ echo '- '.colore( $note).'<br/>' ; ?>

En dfinitive,notre fichier notes.php complet donnera ceci :

<head><title>Notes du trimestre</title></head> <body> <?php //Cette fonction colore en rouge les notes<lO //et en vert les notes >=15 fUDction colore( $nombre){ 1f'( $nombre<10){ eCho'<font color-nred">' $nombre.'</font>' . ; alaaif( $nombre>=l5){ eabo'<font color="greenn>' $nombre.'</font>' . ;

11 $nombre; eabo

//cas par dfaut(affiche sans modifier couleur)

//Construisons notre tableau de notes : $notes =array( 2,5,7,10,11,13,15,17,18 ); //La boucle foreach scanne le tableau //en appliquant la fonction colore echo 'Vos notes du trimestre :<br/>' ; o($notes &8 $note){
echo '- ';

colore( $note); echo '<br/>' ; ?> </body> </html>

Vous serez peut-tre tonn du fait que cela fonctionne,bien que votre fonction disait colore($nombre) et que lorsque vous la convoquez,vous dites colore($note)... Mais a ne pose aucunproblme.Le nom mme de l'atbibut au sein de la fonction est celuique vous voulez. Quand vous la convoquez, Ilremplace da toute faon la variable 'thorique' da la fonction par la variable courante qua vous luipassez an attribut

Les sources prsentes sur cette paqes sont libres de droits,BIvous pouvez les utiliser votre oonV81'1ance.Par contre la page de prsentation de s sources constitue une oeuvre Intellectuelle protge par les droits d'auteurs.Copyright Cl 2009 VAUTHIER Sylvie.Aucune reproduction, mme partielle,ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents,imagea,etc sana l'autorisation expresse de l'auteur.Sinon vous encouraz selon la loi jusqu'Ill 3 ans de prison et jusqu' 300 000 E de dommages et fntrts.
hl!p:J/sytvie-vauthier.davelappaz.comlhltarialllphplgrancklebutanl/

-28

PHP:Le tutorielpour grands dbutanls presas par Sylvie V&ulhier (Accueil)

V-2-b- Plusieurs paramtres passs la fonction


Une remarque importante, en ce qui concerne les fonctions : elle peuvent itre dMinies avec plusieurs paramtres. Parexemple,jepeux dfinir une fonctionmoyenne annuelletellequ'ellesoitlamoyennedes trois trimestres scolaires :
<?php fUnction MoyenneAnnuelle( $triml, $trim2, $trim3){ $MA=($triml+$trim2+$trim3)/3; echo 'Votre moyenne annuelle: '.$MA; ?>

Dans ce cas,pour la convoquer, on pourra crire :


<?php MoyenneAnnuelle(B,10,12); //ceci aura pour rsultat Il Votre moyenne annuelle 10 ?>

V-2-c- Les fonctions dans un fichier part


Sivous dveloppez un programme un peu ambitieux,vous aurez un certain nombre de fonctions. Vous pouvez tout--fait les mettre part dans un fichier voisin que vous appelleriez fonctions.php par exemple, ou comme vous voulez en fait. Il vous suffira ensuite de le convoquer une seule fols au tout dbut de chacune de vos pages php, au sein de balises PHP bien entendu: Par la formule suivante
<?php inc1ude('fonctions.php' ; ) ?>

Cecivous permet ensuite de convoquer n'Importe quelle fonction dfinie dans votre page fonctlons.php. Par exemple, vous avez dvelopp tout un site et vous souhaitez sur chacune des pages signaler le dernier vnement mis jour. Vous pourriez procder ainsi: Dans fonctions.php,vous rdigez cette fonction:

<?php fUnction DerniereMaj() { acho'Dernire parution mise jour :<br/> PIF GADGET<brl> le 10/01/2009' ; ?>

Dans chacune des pages de votre site maintenant,vous vous contentez de mettre, l'endroit o vous souhaitez que

votre avis de mise jour (maj) apparaisse,la ligne suivante :


<?php DerniereMaj ; () ?>

Les sources prsentes sur cette paqes sont libres de droits,BIvous pouvez les utiliser votre oonV81'1ance.Par contre la page de prsentation de s sources constitue une oeuvre ntellectuelle protge par les droits d'auteurs.Copyright Cl 2009 VAUTHIER Sylvie.Aucune reproduction, mme partielle,ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documenta,images,etc sana l'autorisation expresse de l'auteur.Sinon vous encouraz selon la loi jusqu'Ill 3 ans de prison et jusqu' 300 000 E de dommages et fntrts.
hl!p:J/sytvie-vauthier.davelappaz.comlhltarialllphplgrancklebutanl/

-29

PHP:Le tutorielpour grands dbutanls presas par Sylvie V&ulhier (Accueil)

Bien entendu aussi,vous aurez song auparavant Ilmettrevotre "lnclude" de la page fonctions.php dans chaque page de votre site... Ceci vous permettra, chaque nouvel avis de maj, de changer ntralement et une seule fois dans fonctions.php

votre texte.
Et cela aura pour consquence de le changer sur chacune de vos pages. Par exemple :
<?php

functioD DerniereMaj() {
eaho'Dernier publication mise jour :<br/> PIF ET PIFOU<br/> le 13/01/2009' ; //etc... ?>

Vous remarquerez que la fonction DerniereMaj n'a pas de paramtres.C'est une simple fonction d'affichage. Une fonction sans paramtres conserve toutefois les parenthses vides, dans sa dfinition comme chaque convocation.

V-2-d - Fonction qui renvoie une valeur de retour


Une dernire chose sur les fonctions :Sil'on ne veut pas une fonction qui affiche,mais une fonction quipar exemple calcule et renvoie une valeur, on utilisera le mot cl retum. Par exemple,ralisons une fonction quinous retourne le verdict du nombre que l'on vient d'entrer :pair ou impair ?

<head><title><Pair ou impair ?</title></head> <body> <?php //fonction qui fait le diagnostic UDCt on parite( $nombre){ /lai le reste de la division est zro, c'est pair (( $nombre\2)==0){ //on initialise les deux valeurs de verdict $verdict='pair' ; el.111el $verdict='impair' ; //on renvoie le verdict, tout la fin .return $verdict; ?> <form method="POST" action="fonction.php" > Entrez votre nombre<input type="text" name="num"/> <input type-"submit" name-"valider" value-"OK" /> </form> <?php /lai user a cliqu OK if( iaaet ($_POST['valider' )) ] { //rcupre la valeur entre $nombre=$_POST['num' ; ] //place dans $toto la valeur de retour de ma fonction $toto=parite( $nombre); //affiche le verdict entier echo 'Ce nombre est '.$toto.'.' ; ?> </body> </html>

Quelques commentaires supplmentaires :retum stoppe la fonction.


-30

Les sources prsentes sur cette paqes sont libres de droits,BIvous pouvez les utiliser votre oonV81'1ance.Par contre la page de prsentation de s sources constitue une oeuvre ntellectuelle protge par les droits d'auteurs.Copyright Cl 2009 VAUTHIER Sylvie.Aucune reproduction, mme partielle,ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documenta,images,etc sana l'autorisation expresse de l'auteur.Sinon vous encouraz selon la loi jusqu'Ill 3 ans de prison et jusqu' 300 000 E de dommages et fntrts.
hl!p:J/sytvie-vauthier.davelappaz.comlhltarialllphplgrancklebutanl/

PHP:Le tutorielpour grands dbutanls presas par Sylvie V&ulhier (Accueil)

Il faut donc le placer en tout dernier,juste avant l'accolade finale quiferme la fonction. Pour la mme raison,retum ne peut renvoyer qu'une seule valeur,libre vous cependant de rendre cette valeur complexe comme un tableau. Une dernire chose,aumoment de la convocation d'une fonction quiretourne une valeur,bien penser "ranger''la valeurretourne dana une variable "rception",peu importesonnom (c'estbienpourquoijel'aiappeleici$toto)...

V-3- La boucle for


Une boucle for,c'est une boucle quidit pour chaque valeur de tant tant,recommence. Traditionnellement, $iest le nom de la variable quisert un peu de compteur pour une boucle for,mais rien n'interdit de lui donner un nom plus explicite. La syntaxe de cette boucle est la suivante :

<?php //Copiez-moi 50 fois la punition!!! //pour i gal zro, i infrieur 50, i plus plus for( =0;$1 ;$1++ $1 <50 ){ acho 'Je ne tricherai plus un devoir.Limite je meurs de honte l.<br/>' ; ?>

Plusieurs remarques : Puisque $1 commence 0 et non 1 (oui, pareil que pour les indices de tableaux), pensez bien mettre ensuite strictement infrieur la valeur de la limite suprieure de la boucle. Ici on peut traduire par:pour $i de 0 49,ce quifait bien..50 tours de boude. Bon en plus,si vous en avez marre de commencer zro,vous pouvez commencer 1ou ce que vous voulez pour les boucles (c'est pas comme les tableaux)... Mais c'est la syntaxe suivante : $1++ quidoit vous sembler un peu surprenante. Elle signifie $1=$1+1; Autrement dit, augmenta notre compteur da1 chaque tour da boucla,cela se nomme aussi l'lncr6mantatlon.

V-4- La commande switch


Voiciune commanda quiest une condition,an tout cas,quigre trs simplement,la principe des conditions multiples un peu lourd grer avec des if, elseif,else,if imbriqus,ordre des if,cas particulier quivient faire planter tout notre chaffaudage laborieux de conditions etc. Nous varrons plus tard pourquoicette commande awitch est quasiment vitale en PHP. Pour l'instant,contentons-nous d'en comprendre la structure. Swltch,c'est un Interrupteur. Prenons le cas d'un verdicf' du genre de notre TP sur I'IMC (voir correction du TP3).

. 31Les sources prsentes sur cette paqes sont libres de droits,BIvous pouvez les utiliser voire oonV81'1ance.Par contre la page de prsentation de s sources constitue une oeuvre Intellectuelle protge par les droits d'auteurs.Copyright Cl 2009 VAUTHIER Sylvie.Aucune reproduction, mme partielle,ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documenta,images,etc sana l'autorisation expresse de l'auteur.Sinon vous encouraz selon la loi jusqu'Ill 3 ans de prison et jusqu' 300 000 E de dommages et fntrts.
hl!p:J/sytvie-vauthier.davelappaz.comlhltarialllphplgrancklebutanl/

PHP:Le tutorielpour grands dbutanls presas par Sylvie V&ulhier (Accueil)

Dans ce cas,le swltch s'crtralt ainsi:

<?php switch( $corpulence ){ casa 'denutrition' : $verdict ='Vous tes en dnutrition.' ; //placer ici un lien vers un centre d'aide aux troubles du comportement alimentaire
b:n ak;

cas'maigre' : $verdict -'Vous tes maigre.' ; //placer ici quelques conseils d'hygine de vie //MANGEZ bougez
b1'81ak;

cas'normal': $verdict -'Vous avez une corpulence normale.' ; //placer ici quelques conseils "Continuez commme an
b1'81ak;

ca. ' surpoids' :

$verdict ='Vous tes en surpoids.' ; //placer ici quelques conseils d'hygine de vie //BOUGEZ mangez $verdict ='Vous tes en tat d\'obsit modre.' ; //placer ici quelques conseils d'hygine de vie //BOUGEZ BOUGEZ mangez $verdict ='Vous tes en tat d\'obsit svre.' ; //placer ici quelques conseils d'hygine de vie //BOUGEZ BOUGEZ BOUGEZ REVOYEZ TOUT VOTRE MODE DE VIE $verdict ='Vous tes en tat d\'obsit massive.' ; //placer ici un lien vers un centre d'aide aux troubles du comportement alimentaire

br81ak;

ca. 'obese modere' : ca. 'obese severe' :

br81ak;

br81ak;

ca. 'obese-massive' :

?>

Et voicil'explication : Dans le cas (case) o la variable $corpulence est gale 'denutrition':affecte telle 'formule' la variable verdict et procde telle srie d'instructions,dans le case 'maigre' affecte telle autre valeur $Verdict etc. etc. On salt que ces conditions s'excluent l'une l'autre grce il l'Instruction break;quisignifie :'quand bJ as finis, sors de ce switch'. D'o la raison pour laquelle le dernier casa 'obasa_masslva'na ncessita pas da break,il pourrait en prendre un, mais disons que a ne sert rien,on est en fin de switch (accolade finale).. Bien sr,avant ce switch,ilfaudrait s'assurer que $corpulence,via des conditions,sa voit bian affecter tout cet ventailda valeurs... Bien sOr, aprs ce switch, il faudrait placer la suite des instructions, suite commune quelle qua soit la valeur de $corpulence et/ou $verdict ... instn::.iction aprS le switCii, quia initialis $Vercli
<?php
echo '<h3>'$verdict.'</h3><br/>' ;

Cho '<p>Mais ne prenez pas ce constat, aussi brut soit-il, trop coeur.<br/> Une corpulence, s\'il en est besoin, peut changer grce aux conseils ci-dessus.</br></br> Ce n\'est qu\'une norme qui doit vous indiquer si votre hygine de vie est faire voluer ou non. <br/><br/> Pas le verdict du tribunal d\'inquisition !.</p>' ; ?>

Nous y reviendrons dans la conclusion da ca tutortel, mais le switch a ceci de trs agrable que quand vous dvelopperez des sites ou des applications un peu plus costaudes en PHP: Il rendra votre coda beaucoup plus lisible.

Les sources prsentes sur cette paqes sont libres de droits,BIvous pouvez les utiliser votre oonV81'1ance.Par contre la page de prsentation de s sources constitue une oeuvre Intellectuelle protge par les droits d'auteurs.Copyright Cl 2009 VAUTHIER Sylvie.Aucune reproduction, mme partielle,ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documenta,images,etc sana l'autorisation expresse de l'auteur.Sinon vous encouraz selon la loi jusqu'Ill 3 ans de prison et jusqu' 300 000 Ede dommages et fntrts.
hl!p:J/sytvie-vauthier.davelappaz.comlhltarialllphplgrancklebutanl/

-32-

PHP:Le tutorielpour grands dbutanls presas par Sylvie V&ulhier (Accueil)

Vous pourrez caser des lignes et des lignes d'instructions l'intrieur d'un case,au nom partant,lui mme l'intrieur d'un swltch($procadure) quifait que l'on ne sera pas perdu en relisant votre code...

V-5- TP5
Dans fonctions.php,vouscrerez une fonctionqui,quand onluipasse un nombre,affiche le verdict "est unnombre premier" ou "n'est pas un nombre premier"; Pour rappel, un nombre premier est un nombre quin'est divisible QUE par lui-mme et par 1 (et ce,de faon distincte,donc 1n'est pas un nombre premier). A ce propos,0 n'est pas un nombre premier non plus (car on ne peut pas le dMser par zro),mals vous le grerez comme une exception... Dans premlers.php,vous proposerez un formulaire pour que l'utilisateur entre un nombre,disons entre 1 et 10 000, puis traiterez le nombre entr en appelant la fonction en cas de clic sur validation. Vous afficherez alors le verdict sous la forme : gg n'est pas un nombre premier." ou bien sg est un nombre premier'' etc... Sivous bloquez vraiment,aprs avoir cherch,lisez le prambule de la correction avant devous replonger dans la rflexion... Cela devrait vous aider sans tout vous miilcher

V-6- Correction du TP5


Petit prambule avant la correction (abondamment commente) des daux fichiers : Un tlag (que l'on peut appeller $flag pour plus de lisibilit) est una variable logique quifonctionna un pau comma un drapeau qui est an berne ($flag=Oi) et se soulve l'vnement qu'on luia indiqu ($flag=1 ;). Ici,on souhaite que ds qu'ilrepre un multiple (un seul),hop, il initialise le flag 1,et il sort de la boucle. A ce propos, un autre tuyau :au sein d'une boucle,la commande break;permet de sortir sans finir les toura de boucle. Le programme cesse de tester les autres multiples,c'est devenu superflu pour l'objectif que nous poursuivons,et qui est de chercher quand un nombra cessa d'avoir une chance d'ltra premier... Veuillez cliquer sur le symbole droite pour dcouvrir la solution quand vous aurez fini.

<?php fUnction premiers( $nombre){ /*Cette variable fait office de flaq (voir explications plus haut) Ici flaq est "teint"*/ $flag=O; /*Cette boucle teste toutes les valeurs infrieures $nombre Pour voir ai ce sont dea multiples potentiels Donc ici, $i reprsente le multiple potentiel*/ for( $i=2;$i<$nombre;$i++l l //si $nombre modulo $i gal zro //revient dire :si $i est un diviseur de $nombre if( $nombre \$i --OI I //initialise le verdict $verdict='n\'est pas premier' ; 1/allUIIIe le flaq $flag=l; //Quitte la boucle immdiatement
;

/*Si aprs la boucle entire Le flag est toujours teint C'est un nombre premier !*/ if ($flag-0){ $verdict ='est premier' ;

. 33Les sources prsentes sur cette paqes sont libres de droits,BIvous pouvez les utiliser votre oonV81'1ance.Par contre la page de prsentation de s sources constitue une oeuvre Intellectuelle protge par les droits d'auteurs.Copyright Cl 2009 VAUTHIER Sylvie.Aucune reproduction, mme partielle,ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documenta,images,etc sana l'autorisation expresse de l'auteur.Sinon vous encouraz selon la loi jusqu'Ill 3 ans de prison et jusqu' 300 000 E de dommages et fntrts.
hl!p:J/sytvie-vauthier.daveloppaz.comlhltarialllphplgrancklebutanl/

PHP:Le tutorielpour grands dbutanls presas par Sylvie V&ulhier (Accueil)

fonctions.php
/*Grer l'exception zro qui est un peu un cas particulier*/ i( $nombre=0){ $verdict -'n\'est pas premier' ; //renvoie le verdict en sortant de la fonction $verdict ;

zatgzn

?>

<head><title>Nombres premiers</title></head> <body> <?php //intgre toutes les fonctions du fichier voisin iAClude('fonctions.php'; //prsente le formulaire ?> <form method-"POST" action-"premiers.php" > Entrez votre nombre (entre 1 et 10 000 SVP) <input type "text" name="num" /> <input type "submit" name "valider" value "OK" /> </form> <?php //si usar a cliqu OK if( isset ($_POST['valider' )) ] { //rcupre la valeur entre $nombre S_POST['num' ; ] //convoque la fonction premiers $verdict=premiers( nombre $ ); //affiche le verdict entier mis en forme. echo $nombre.' '.$verdict.'.' ; ?> </body> </html>

Les sources prsentes sur cette paqes sont libres de droits,BIvous pouvez les utiliser votre oonV81'1ance.Par contre la page de prsentation de s sources constitue une oeuvre Intellectuelle protge par les droits d'auteurs.Copyright Cl 2009 VAUTHIER Sylvie.Aucune reproduction, mme partielle,ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documenta,images,etc sana l'autorisation expresse de l'auteur.Sinon vous encouraz selon la loi jusqu'Ill 3 ans de prison et jusqu' 300 000 Ede dommages et fntrts.
hl!p:J/sytvie-vauthier.davelappaz.comlhltarialllphplgrancklebutanl/

-34-

PHP:Le tutorielpour grands dbutanls presas par Sylvie V&ulhier (Accueil)

VI- PHP ETAPE 6 Vl-1- Les bases de donnes: introduction Vl-1-a - A quoi a sert ?
Pour rappel,le code HTML ne sert qu' l'affichage. La codaPHP sart crtar un HTMLdynamique jusqu' un certainpoint,en tout cas,PHPpeut organiser chaque chargement de votre page web le HTML de faQOn diffrente. Cependant,PHP n'a pas la "pouvoir''da mmoriser des donnes antre daux chargements da page (en dehors de celles que vous transmettez chaque fois d'une page web l'autre,via un formulaire HTML 1).. Alors si vous voulez conserver sur la dure las donnes entres par las visiteurs da votre site via votre formulaire, de faon automatique et sans plus vous occuper de rien, il va falloir encore intgrer de bonnes notions des bases de donnes.

Vl-1-b- Comment a marche?


Cliquez sur l'icOne de WampServer,puis cliquez sur phpMyAdmln.

phpMyAdmin SQLiteManager

www directory
Apache ._

.. ..
Stop Ali Services Restart Ali Services

Accs phpMyAdmin

C'est le troisime et dernier lien que nous suivrons sur wampServer, aprs wwwdirectory (le code) et localhost (le test comme sion tait sur le web). C'est Ici.sur phpMyAdmln,qua vous allez grer tout ca quiconcerna les bases da donnes. Une basa da donnes, quipossde un nom,c'est l'ensemble des tables quirecensant vos donnes. Unatabla,quiaunnomgalement, c'est une structura quiorganise vos donnes da la faon clt6a anexemple ci-dassous. Nous allons commencer par une base quine comporte qu'une seule table,pour faire simple. Cliquez le bouton "Crer une base",nommez-la MaBase,puis cliquez "Crer". Crez une nouvelle table "Utilisateurs" avec 5 champs... Ils se dcouperont ainsi(ce quinous intresse surtout,c'est le type des champs)...
. 35Les sources prsentes sur cette paqes sont libres de droits,BIvous pouvez les utiliser voire oonV81'1ance.Par contre la page de prsentation de s sources constitue une oeuvre Intellectuelle protge par les droits d'auteurs.Copyright Cl 2009 VAUTHIER Sylvie.Aucune reproduction, mme partielle,ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents,images,etc sana l'autorisation expresse de l'auteur.Sinon vous encouraz selon la loi jusqu'Ill 3 ans de prison et jusqu' 300 000 E de dommages et fntrts.
hl!p:J/sytvie-vauthier.davelappaz.comlhltarialllphplgrancklebutanl/

PHP:Le tutorielpour grands dbutanls presas par Sylvie V&ulhier (Accueil)

Nos 5 champs et leur type respectif


ID,quiest un INT (integer :entier),cochez Al(auto-incrment pour que phpMyAdmin gre ce champ tout seul) pseudo quiest un VARCHAR (caractres dont le nombre varie),entrez 15 taille/longueur (nombre maximum de carcactres autoriss) sexe quiest un CHAR (caractres dont le nombre est fiXe),entrez 1 taille/longueur (nous mettrons simplement G ou F) aga quiest un INT, entrez 3 taille (le nombre de chiffres).Pour un Age,c'est sympa de penser aux centenaires... et enfin datelnscription (slectionnez date)...

Ca y est ? Votre table est cre avec sa structure ? Maintenant, on va la remplir " la main",enfin,pour les 5 premires personnes. A gauche dans votre arborescence,slectionnez votre table 'inscriptions'. Vous voyez la structure de votre table quis'affiche... sous forme de tableau. Cliquez 'Insrer' dans le menu du haut...Par dfaut,phpMyAdmin vous donne un fonnulaire d'insertion deux entres par deux entres... Laissez toujours le champ ID vide.On a dit qu'il sa remplirait automatiquement. Et remplissez ainsivos 5 insertions : Siles dates vous paraissent bizarres,c'est qu'elles sont l'anglaise (anne/mois/jour)...

Nos 5 premiers enregistrements


LiliF 18 2009-01-02 Toto G 13 2008-01-02 Loulou G 25 2008-12-30 Zzette F 20 2009-01-02 MimiF 15 2009-01-10

On dira que dans votre table Utilisateurs (qui compte donc 5 champs), il y a 5 enregistrements, 5 personnes enregistres autrement dit, avec toutes leurs donnes. La seule faon certaine de les distinguer,cest leur ID (Identification data). Pour le reste, deux personnes peuvent avoir le mme pseudo,le mme sexe,ou la mme date d'inscription... Pour convoquer un enregistrement, ou un morceau d'enregistrement,on passera donc touJours par l'ID.

Les sources prsentes sur cette paqes sont libres de droits,BIvous pouvez les utiliser voire oonV81'1ance.Par contre la page de prsentation de s sources constitue une oeuvre Intellectuelle protge par les droits d'auteurs.Copyright Cl 2009 VAUTHIER Sylvie.Aucune reproduction, mme partielle,ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents,images,etc sana l'autorisation expresse de l'auteur.Sinon vous encouraz selon la loi jusqu'Ill 3 ans de prison et jusqu' 300 000 E de dommages et fntrts.
hl!p:J/sytvie-vauthier.davelappaz.comlhltarialllphplgrancklebutanl/

-36-

PHP:Le tutorielpour grands dbutanls presas par Sylvie V&ulhier (Accueil)

Serve'-.-: loc:a1hu1 .ffi') Base de dCinPhs: m<l'bn!t(f Afflchcr


Bnr d'& donnes 1 rnobese (2)

t-

l!lJ T21ble: JII sate-urs Ul

di Snulttttre .11 SOL ,. Riachct,haf

ilnsrof

!l4l Exportef
.

XOp-ralons {IVIdet I)(Spp rimr r

lv l

Aflirhage dt!enregistrements 0 1IIU!:. IIFI

a (9 total. Tc.at1ement en 00013..sec) .. :..::..... :

DF'rol'ilage 1 Modrfter IlElfi)11quer SOL IlCf(!er source PHP


LUaT
11 )t

[ AftJdier

):m

e-megrslremen1() partrir daol"erne-gi1 rement n<> 0

en fi'l\!)lfo hqn ontel


Trier SUIl ndex: 11 + Op.hllR '

R (Ilr.pMfll let M uchaque g 0,up:a d'e Llh


-;1 Sexe F
G
Age

liCUlte

ID

'1<
.JE

Pr;eudo 1 li i
2

!Dntelnscdplion
21J)91.()1.(i2

16

Toto
Zliune
M1m1

1:3 :QJ6.0Hl2 25 21JE-12:1J 2QlJ.()1.()2 15 2CJli\.O 10

.. x ../ x

')<

3 Loulou
4

G
F

Ma premire table
Le langage qu'on va maintenant utiliser, pour faire des requtes ou des insertions ou des suppressions dans notre base,se nomme SQL. Il est assez intuitif et pour l'tude sommaire que nous allons en faire,il consistera en cinq-six mots d'anglais de base... Je veux rcuprer le jour d'inscription de Zzette ? La requte sera la suivante :

SELECT dateinscription FROM Utilisateurs WHERE ID-"4"

Je veux rcuprer toutes les infus sur les filles ?

SELECT * FROM Utilisateurs WHERE sexe-"F"

Je ne veux rcuprer que les pseudos des filles ?

SELECT pseudo FROM Utilisateurs WHERE sexe="F"

Voil pour l'essentiel des requtes de base en SQL, nous verrons au cours de la suite quelques syntaxes supplmentaires...

Vl-2 - Alimenter sa base via PHP


De mme que PHP vous permet de crer un langage HTML plus dynamique et personnalis, PHP vous permet maintenant de crer vos requtes SQL de faon automatiser l'alimentation de vos bases.
-37Les sources prsentes sur cette paqes sont libres de droits,BIvous pouvez les utiliser votre oonV81'1ance.Par contre la page de prsentation de s sources constitue une oeuvre ntellectuelle protge par les droits d'auteurs.Copyright Cl 2009 VAUTHIER Sylvie.Aucune reproduction, mme partielle,ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documenta,images,etc sana l'autorisation expresse de l'auteur.Sinon vous encouraz selon la loi jusqu'Ill 3 ans de prison et jusqu' 300 000 E de dommages et fntrts.
hl!p:J/sytvie-vauthier.davelappaz.comlhltarialllphplgrancklebutanl/

PHP:Le tutorielpour grands dbutanls presas par Sylvie V&ulhier (Accueil)

Voiciun exemple trs concret : Vous allez crer un formulaire quipermettra de continuer remplir automatiquement votre base de donnes MaBase,plus prcisment sur votre table Utilisateurs,table que pour l'instant vous avez commenc remplir la main,via l'interface PHPMyAdmin. En voiciles tapes :

Vl-2-a- Prsenter le fonnulaire


Sur un fichier form.php,entrez ce code :

<head><title>Formulaire de saisie utilisateur </title></head> <body> <hl>Inscrivez-vous !</hl> <h2>Entrez les donnes demandes :</h2> <form name="inacription" method=npost" action="form.php" > Entrez votre pseudo :<input type="text" name="pseudo" <br/> /> Garon ou fille ? <input type="radio" name="sexe" value="G"/>Garon<input type="radio" name="sexe" value="F"/>Fille<br/> Entrez votre aqe :<input type -"text" name "aqe"/><br/> <input type "submit" name "valider" value "OK" /> </form> </body> </html>

Vous remarquerez que nous ne demandons que 3 lments d'identification l'utilisateur, alors que la base en comporte 5 par enregistrement : C'est normal,la premier champ da notre basa est rempliautomatiquement par mysql et le dernier, la data d'inscription,nous allons le remplir aussiautomatiquement,via PHP catte fois,en entrant la date du jour ds que l'utilisateur clique 'OK'. Vous remarquerez que pour des donnes aussipeu varies que le sexe de la personne,nous avons prfr contrOer l la saisie en proposant l'utilisateur deux boutons radio. Pour limiter les erreurs dans la base SQL,bien songer proposer des llstu droulantes ou des cases cocher quand la champ s'y prtta... Qu'allons-nous faire ensuite quand l'utilisateur va cliquer "ok ?

Vl-2-b- Se connecter notre base via PHP


A chaque fois que nous voulons que PHP se connecte notre base, on luidonnera une srie d'instructions... Donc on va commencer par coller les paramtres de connexion dans une fonction pour ne pas trop rabcher dans notre code... On cre donc un fichierfonctions.php,dans lequel(entre autres) on insre la fonction suivante:

<?php functioD connectMaBase()1 $base - _coaaect ('localhost' 'root '' , , ' ); q _selact_db ('MaBase' $base ; , ) ?>

Vous n'avez rien modifier... Sachez simplement que " est votre mot de passe,laiss vierge icicomme ill'est par dfaut dans votre configuration de dpart.

Les sources prsentes sur cette paqes sont libres de droits,BIvous pouvez les utiliser voire oonV81'1ance.Par contre la page de prsentation
de

-38-

mme partielle,ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documenta,images,etc sana l'autorisation expresse de l'auteur.Sinon vous encouraz selon la loi jusqu'Ill 3 ans de prison et jusqu' 300 000 E de dommages et fntrts.
hl!p:J/sytvie-vauthier.davelappaz.comlhltarialllphplgrancklebutanl/

sources constitue une oeuvre ntellectuelle protge par les droits d'auteurs.Copyright Cl 2009 VAUTHIER Sylvie.Aucune reproduction,

PHP:Le tutorielpour grands dbutanls presas par Sylvie V&ulhier (Accueil)

Pour expliquer maintenant, cette fonction cre une variable $base quiprpare la commande de connectlon votre base avec le nom du serveur (icilocalhost),le nom de l'utilisateur (ici root quisignifie administrateur de votre propre base locale, en d'autres tannes,root, c'est le patron) et enfin le mot de passe. La ligne suivante lance la commande de slection de votre base (oC! l'on entre donc le nom de votre base),puis on reprend la variable quicontient toute la commande de connexion... Bien entendu, pour convoquer la fondion que vous venez de crer sur fondions.php,il vous faudra sur form.php faire un lnelude de ce fichier fonctlons.php,puis lancer la fonction au moment opportun par la ligne suivante :
<?php ?>

connectMaBase() ;

Vl-2-c- Pour travailler proprement (Gnralits) Retenez bian ceci :


Quand on rdige une commande d'insertion SQL via PHP,on prfre procder ainsi,qui parait un peu compliqu au dbut,mais simplifie toute la comprhension ensuite.

Insrer une donne SQL via PHP,l"ossatura


1 2 3 4 On On On On se connecte la base (en utilisant notre fondion de connexion toute prte). prpare la commande sqlen la stockant dans une variable PHP du type $sql(pour langage sql); la lance. ferme la connexion.

Vl-2-d - Insrer des donnes dans notre base via PHP


Bien entendu,le code suivant ira sur le fichier fonn.php dans notre condition => sil'utilisateur a cliqu OK

<?php //On rcupre les valeurs entres par l'utilisateur $pseudo=$_POST['pseudo' ]; $age=$_POST['age' ; ] $sexe -$_POST ['sexe' ; ] //On cre une variable date du jour grce la fonction date() de PHP $today = date("d.m.y"J ; //On se connecte

connectMaBase() ;
//On prpare la commande sql d'insertion $sq1 = 'INSERT INTO Utilisateurs VALUES("","'$pseudo.'",n'.$sexe.'","' $aqe.'",n'. $today.'") . '; /*on lance la commande (mysql query) et au cas o, on rdige un petit message d';rreur si la requte ne passe pas (or die) (Message qui intgrera les causes d'erreur sql)*/ ql_ ry ($sqlor di ('Erreur SQL !' .$sql.'<br />' .myql_rror()) ;

Il on ferme la connexion
ql_clo() ;

?>

C'est probablement cette partie quivous semble la plus complexe :


<?php //On prpare la commande sql d'insertion $sql - 'INSERT INTO Utilisateurs VALUES("","'$pseudo,'","' $sexe,'","' , , ,$aqe, '","' ,$today, '; '")

?>

. 39Les sources prsentes sur cette paqes sont libres de droits,BIvous pouvez les utiliser votre oonV81'1ance.Par contre la page de prsentation
de

mme partielle,ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documenta,images,etc sana l'autorisation expresse de l'auteur.Sinon vous encouraz selon la loi jusqu'Ill 3 ans de prison et jusqu' 300 000 E de dommages et fntrts.
hl!p:J/sytvie-vauthier.davelappaz.comlhltarialllphplgrancklebutanl/

sources constitue une oeuvre ntellectuelle protge par les droits d'auteurs.Copyright Cl 2009 VAUTHIER Sylvie.Aucune reproduction,

PHP:Le tutorielpour grands dbutanls presas par Sylvie V&ulhier (Accueil)

La premire valeur est laisse en blanc car c'est l'ID auto-incrment... SIvous l'oubliez,ce blanc,Ilvoua renverra un message d'erreur sqldisant que le nombre de donnes insres ne concident pas avec le nombre de champs...en anglais. Ensuite il faut grer au sein des guillemets simples (apostrophes) tout ce qui est PHP et au sein des guillemets doubles tout ce quiest sq. .. l On place les guillemeta au sein des apostrophes pour les afficher dana le aql,on place les variables 'nues dans PHP.

Vl-2-e- On rcapitule le code?


<?php fUnction connectMaBase() { $base - - _conuect ('localhost' 'root '' , , ' ); myaql_lct_db ('MaBase' $base ; , ) ?>

<?php includa("fonctions.php" ); ?>


<html>

<head><title>Formulaire de saisie utilisateur </title></head> <body> <hl>Inscrivez-vous !</hl> <h2>Entrez les donnes demandes :</h2> <form name-"inscription" method-"post" action-"form.php" > Entrez votre pseudo :<input type -"text" name-"pseudo" <br/> /> Garon ou fille ? <input type="radio" name="sexe" value="G"/>Garon<input type="radio" name="sexe" value="F"/>Fille<br/> Entrez votre age :<input type="text" name="aqe"/><br/> <input type="submit" name="valider" value="OK 0 /> </form> <?php ($_POST['valider' )) ] { //On rcupre les valeurs entres par l'utilisateur $pseudo=$_POST['pseudo' ; ] $age =$ POST['aqeJ; ' $sexe$_POST['sexe] '; //On construit la date d'aujourd'hui //strictement comme sql la construit $today = data("y-m-d" ); //On se connecte connectMaBase() ;

(t

//On prpare la commande sql d'insertion $sql 'INSERT INTO Utilisateurs VALUES("",ft' . $pseudo.'n, "'$sexe.'","' .$age.'","' $today.'ft)'; . /*on lance la commande (mysql query) et au cas o, on rdige un petit message d'erreur si la requte ne passe pas (or die) (Message qui intgrera les causes d'erreur sql)*/ ql_ ry ($sql)odi ('Erreur SQL !' .$sql.'<br />' .myaql_arro()) ;

Il on ferme la connexion myaql_clol ; <


?> </body> </html>

Je vous laisse le plaisir de tester et d'alimenter votre base en saisissant des donnes dans votre fonnulaire... Maglqua non ? Miaux ancora,lnformaglqua. Ne vous tonnez pas siquand vous cliquez sur OK,ilsemble ne rien se passer. Ne cliquez pas trois fois et allez voir votre table utilisateurs.
Les sources prsentes sur cette paqes sont libres de droits,BIvous pouvez les utiliser votre oonV81'1ance.Par contre la page de prsentation de s sources constitue une oeuvre Intellectuelle protge par les droits d'auteurs.Copyright Cl 2009 VAUTHIER Sylvie.Aucune reproduction, mme partielle,ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documenta,images,etc sana l'autorisation expresse de l'auteur.Sinon vous encouraz selon la loi jusqu'Ill 3 ans de prison et jusqu' 300 000 E de dommages et fntrts.
hl!p:J/sytvie-vauthier.davelappaz.comlhltarialllphplgrancklebutanl/

-40-

PHP:Le tutorielpour grands dbutanls presas par Sylvie V&ulhier (Accueil)

Ca a trs bien fonctionn.S'ilsemble ne riense passer,c'est que nous avons simplement gr dans notre code l'Insertion de donnes,sana penser A avertir l'utilisateur que son action a bien eu l'effet escompt. Nous verrons cela plus tareL dans le TP par exemple ?

Vl-3- TP6
SANS COPIER COLLER et en ne regardant que a et l des parties du cours : Vous proposerez un fonnulaire d'abonnement (abonnement.php) du type

Veuillez saisir vos donnes d'identit : Bouton radio :Monsieur Madame ou Mademoiselle Nom: Prnom :
Age :

Adresse : Code Postal :(Bloquer via HTML la saisie 5 chiffres) Ville : Numro de tlphone (Bloquer via HTML la saisie 10 chiffres) Veuillez cocher le magazine choisi (un seul choix possible donc bouton radio) J'ai J'ai J'ai J'ai la main verte. le pied marin. l'oeil vif. la rate qui se dilate.

Valider

Au clic sur valider de la part de l'utilisateur,vous ferez deux choses simultanes : 1) Amcher ceci
'Pour rappel,vous avez saisi :' toutes les donnes entres par l'utilisateur,prsentes proprement,du genre 'VOUS ETES :' 'VOUS AVEZ CHOISI:' 'Mercide vous tre abonn ce magazine !'

2) Insrer dans une table Abonnes que vous aurez cre auparavant via phpMyAdmin toutes les donnes

entres par l'utilisateur. PS :vous placerez dans le fichier fonctlons.php la fonction de connexion bien entendu. Bon courage !

Vl-4 - Correction du TP6


Veuillez cliquer sur le symbole droite pour dcouvrir la solution quand vous aurez fini.

<?php

fUnction connectMaBase() { $base - ql_cDDDBct ('localhost' 'root '' , , ' ); ql_elect_db ('MaBase' $base) ; ,
?>

Dans phpMyAdmin,voici quoi doit ressembler votre structure (de plus, il faut cocher Al(auto-incrmentation) pour

l'ID).

Les sources prsentes sur cette paqes sont libres de droits,BIvous pouvez les utiliser votre oonV81'1ance.Par contre la page de prsentation
de

-41-

mme partielle,ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documenta,images,etc sana l'autorisation expresse de l'auteur.Sinon vous encouraz selon la loi jusqu'Ill 3 ans de prison et jusqu' 300 000 E de dommages et fntrts.
hl!p:J/sytvie-vauthier.davelappaz.comlhltarialllphplgrancklebutanl/

sources constitue une oeuvre ntellectuelle protge par les droits d'auteurs.Copyright Cl 2009 VAUTHIER Sylvie.Aucune reproduction,

PHP:Le tutorielpour grands dbutanls presas par Sylvie V&ulhier (Accueil)

l l S:lil n

lo-Clllll'lriHI t

Ch.:lmp ID

...
v
VAACHPA
v

... ...

Ov Nllr11
PNinl)l'!"'

WIFlCt'\i'IEl

..
--1
v

AQ
/'drMte

INT

v
INT
VI>FlCt'\i'IEl

100

Cl;.

_,

...

CP
\111'1

t-'J ...
--1

rer
Abo

INT
CJ-V;.R

...
MOUrtli-fttd .it t j '

C.nmtt.ttr.t!I 'Ut!liIll Ill :l

.....,., (D .

La structure de votre table abonnes

Au passage,c'est un hasard siles valeurs de nos publications sont toujours de 41ettres (oeil,main etc.),mais autant
en profiter pour mettre un CHAR 4 plutot qu'un VARCHAR. Mais attention aux valeurs qu'on leur affecte sil'on intgre de nouveaux magazines 1 Dana abonnement.php antin : (Peut-tre vous tes vous cass la tte avec cette histoire de nouvelcran quand l'utilisateur clique... et ce damn formulaire qui restait en ligne, vos commentaires de rappelne faisant que s'ajouter au HTML...) Voiciune solution retenir :Dana vos if,commencer par mettre la condition d'affichage la plus "avance" en premier,contrairement ce que l'on a envie de faire spontanment : remontez le temps l'envers,sivous voulez... Veuillez cliquer sur le symbole droite pour dcouvrir la solution quand vous aurez fini.

<?php 1nalud8("fonctions.php" ); /*ECRAN QUI S AFFICHE SI L ON A CLIQUE OK*/ if (it ($_POST ['valider' )) ] { //On rcupre les valeurs entres par l'utilisateur $civ=$_POST['civilite' ; ] $nom=$_POST['nom' ]; $prenom=$_POST ['prenom' ]; $aqe=$_POST['age' ]; $adresse=$_POST['adresse] '; $CP=$_POST['CP' ; ] $ville=$_POST ['ville' ]; $tel -$_POST['tel' ]; $abo-$_POST['abo' ];

-42Les sources prsentes sur cette paqes sont libres de droits,BIvous pouvez les utiliser votre oonV81'1ance.Par contre la page de prsentation
de

mme partielle,ne peut tre faite de ce site et de l'ensemble de son contenu : textss, documenta,images,etc sana l'autorisation expresse de l'auteur.Sinon vous encouraz selon la loi jusqu'Ill 3 ans de prison et jusqu' 300 000 Ede dommages et fntrts.
hl!p:J/sytvie-vauthier.davetappaz.comlhltarialllphplgrancklebutanl/

sources constitue une oeuvre ntellectuelle protge par les droits d'auteurs.Copyright Cl 2009 VAUTHIER Sylvie.Aucune reproduction,

PHP:Le tutorielpour grands dbutanls presas par Sylvie V&ulhier (Accueil)

l'cran de rappel //grer le fminin $e='': iE (($civ='Mme' 1 1 (Sciv='Mlle' ) ) ){


$e-1er ;

//grer le nom complet du magazine if ($abo=='main' { ) $maq-'J\'ai la main verte.' ; alif ($abo=='pied' 1 l $mag-'J\'ai le pied marin.' ; alaif ($abo=='oeil' { l $maq='J\'ai 1\'oeil vif.' ;
8188{

$maq='J\'ai la rate qui se dilate.' ; acho'<h2>VOUS &Ecirc;TES :</h2>' ; echo $civ. '.$nom.' '.$prenom., ag&eacute;' $e.'de '.$age.'ans.<br/><br/> . <strong>Votre adresse :</strong><br/>' . $adresse.'<br/>' . $CP.''.$ville.'<br/><br/> <strong>Votre t&eacute;l&eacute;phone:</strong>' $tel.'<br/><br/>' . ; acho '<h2>VOUS AVEZ CHOISI DE VOUS ABONNER &Agrave;</h2>' ; acho'<h3>' $mag.'</h3><br/> . <h4>Merci de vous &ecirc;tre abonn&eacute;' $e.' &agrave; notre magazine !</h4>' . ; //On alimente la base de donnes //On se connecte connectMaBase() ; //On prpare la commande sql d'insertion $sql = 'INSERT INTO Abonnes VALUES('"',"' $civ. 1","' $nom.' ,
1

$prenom.'",'$age.'","' $adresse. 1
","

$CP .' ,"


'

/*on lance la commande (mysql_queryl et au cas o, on rdige un petit message d'erreur si la requ te ne passe pas (or die) (Message qui intgrera les causes d'erreur sql)*/ myql_qDe%y ($sql )or die ('Erreur SOL !'$sql.'<br />' .myql_error ; (l) Il on ferme la connexion myql_cloe() ; /*ECRAN OUI S AFFICHE SI L ON N A RIEN CLIQUE DONC A L ARRIVEE SUR LA PAGE*/ /*SEULE LA CONDITION ELSE EST DANS DES BALISES PHP PUIS LA PAGE HTML REPREND SON COURS*/

1{
?>
<html>

<head><title>S'abonner l'un de nos magazines</title></head> <body> <hl>I?OUR VOUS ABONNER :</hl> <form name="inscription" method="post" action="abonnem.ent.php" > <h2>Veuillez saisir vos donn&eacute; d'identit&eacute; :</h2> es <input type-"radionam.e-"civilitevalue-"M" />M. <input type="radio" nam.e="civilite" value="Mrne" />Mme <input type="radio" nam.e="civilite" value="Mlle"/>Mlle <br/> Nom :<input type="text" name="nom"/> <br/> l?r &eacute; nom :<input type="text" name="prenom" <br/> /> &Acirc; : <input type="text" nllll\e="age" ge /><br/> Adresse : <input type="text" name="adresse" <br/> /> Code Postal :<input type="text" name="CP" maxlength="5" <br/> /> Ville : <input type-"text" name-"ville" <br/> />

Les sources prsentes sur cette paqes sont libres de droits,BIvous pouvez les utiliser votre oonV81'1ance.Par contre la page de prsentation de s sources constitue une oeuvre Intellectuelle protge par les droits d'auteurs.Copyright Cl 2009 VAUTHIER Sylvie.Aucune reproduction, mme partielle,ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documenta,images,etc sana l'autorisation expresse de l'auteur.Sinon vous encouraz selon la loi jusqu'Ill 3 ans de prison et jusqu' 300 000 E de dommages et fntrts.
hl!p:J/sytvie-vauthier.davelappaz.comlhltarialllphplgrancklebutanl/

-43-

PHP:Le tutorielpour grands dbutanls presas par Sylvie V&ulhier (Accueil)

abonnement.php
Num&eacute;ro de t&eacute;l&eacute; phone personnel :<input type="text" name="tel" maxlength="lO" <br/> /> <h2>Veuillez cocher le magazine choisi :</h2> <input <input <input <input type="radio" type="radio" type="radio" type="radio" name="abo" value="main" />J'ai name="abo" value="pied" />J'ai name="abo" value="oeil" />J'ai name="abo" value="rate" />J'ai la main verte. <br/> le pied marin. <br/> l'oeil vif. <br/> la rata qui se dilate. <br/>

<input type="submit" name="valider" value="OK" /> </form> <?php //Bien ar il faut penser fermer l'accolade de notre condition d'affichage
)

?> </body> </html>

Les sources prsentes sur cette paqes sont libres de droits,BIvous pouvez les utiliser voire oonV81'1ance.Par contre la page de prsentation de s sources constitue une oeuvre Intellectuelle protge par les droits d'auteurs.Copyright Cl 2009 VAUTHIER Sylvie.Aucune reproduction, mme partielle,ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents,imagea,etc sana l'autorisation expresse de l'auteur.Sinon vous encouraz selon la loi jusqu'Ill 3 ans de prison et jusqu' 300 000 Ede dommages et fntrts.
hl!p:J/sytvie-vauthier.davelappaz.comlhltarialllphplgrancklebutanl/

-44-

PHP:Le tutorielpour grands dbutanls presas par Sylvie V&ulhier (Accueil)

VIl - PHP ETAPE 7

Vll-1 -Les bases de donnes: suite et fin


Nous savons maintenant remplir une base. Reste savoir l'exploiter et y rcuprer les donnes souhaites dans le cadra PHP. Pour la suite de ce paragraphe,reprenez votre base MaBase, et votre table utilisateurs dj riche d'au moins 5 enregistrements,voire plus sivous avez entr des donnes via votre formulaire... En passant, avant de continuer,vrifiez dans votre base qu'il n'y a aucun doublon sur votre table, et supprimez-les manuellement avant de continuer... Pour supprimer un enregistrement,cliquez d'abord sur rechercher dans la tabla,quivous affiche toutes les donnes de votre table. Pula cliquez sur l'enregistrement annuler,pula sur la croix rouge pour l'action delete". On a dj mentionn la syntaxe sqld'une simple requte : SELECT WHERE paeudo='"Zzette'" pour rcuprertoutes la ligne d'infos concernant notra amie Zzette par exemple. Sauf que ce sont plusieurs infos (l'ID,le pseudo,le sexe,l'age,et la date d'inscription de notre amie), et qu'en PHP, on va devoir stocker a dans un...tableau bien sr. Chaque enregistrement rcupr sur ma base devra donc ltra stock dans un tableau pour PHP. Du coup,pour rcuprer un enregistrement dans ce tableau,onva utiliser la foncUon PHP destine mysql_fatch_array($TrucRacuparaSurSql),pour tre sQr de ne rien rater : Ainsil'on rcupre un tableau associatif quia pour indice... le nom de chaque champ. C'est pas plus pratique comme a ?

mysql:

Vll-1-a- Pour travailler proprement (Gnralits) Voicicette fois l'ordre logique pour un code PHP propre quilance une requte sql
1
2 3 4 On se connecte la base (en utilisant notre fonction de connexion toute prte). On prpare la commande sqlen la stockant dans une variable PHP du type $sql(pour langage sql). On la lance,en rcuprant le rsultat dans une variable que nous appellerons $req (pour requete sqlet qui pourra tre un tableau sile rsultat dpasse un lment). Sic'est un tableau :On scanna $raq avec una boucla whlla (car on ne sait pas toujours le nombre de champs,nid'enregistrements) et grce la fonction mysql_fatch_array($req),chaque lment de ce tableau se convoquera ainsi:$datarchamp1. Maintenant qu'on a tout rcupr dans des variables "solides PHP, on libre la mmoire sqlmobilise par cette requte. On fenne la connexion sql.

5 6

Maintenant le code devrait vous para11re moins barbare...

. 45Les sources prsentes sur cette paqes sont libres de droits,BIvous pouvez les utiliser voire oonV81'1ance.Par contre la page de prsentation de s sources constitue une oeuvre Intellectuelle protge par les droits d'auteurs.Copyright Cl 2009 VAUTHIER Sylvie.Aucune reproduction, mme partielle,ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documenta,images,etc sana l'autorisation expresse de l'auteur.Sinon vous encouraz selon la lai jusqu'Ill 3 ans de prison et jusqu' 300 000 E de dommages et fntrts.
hl!p:J/sytvie-vauthier.davelappaz.comlhltarialllphplgrancklebutanl/

PHP:Le tutorielpour grands dbutanls presas par Sylvie V&ulhier (Accueil)

Vll-1-b- Le code pour rcuprer toutes les filles


Je souhaite construire une page infos.php qui affiche table utilisateurs.

toutes les infos sur toutes les filles dans ma base MaBase,

<?php 1nalude("fonctions.php" ); ?>


<html>

<head><title>TOUTES LES INFOS SUR LES INSCRITS DU SITE</title></head> <body> <?php //On se connecte connectMaBase() ;

Il On prpare la requte
$sql
=

'SELECT* FROM utilisateurs WBERE sexe="F"' ;

Il on lance la requte (mysql_query) et on impose un message d'erreur si la requte ne se passe pas (or die)
$req
=

m,aql_quary($sql)or dia('Erreur SQL !<br />' .$sql.'<br />' .mraql_error ; ())

//on organise $req en tableau associatif $data['champ'] //en scannant chaque enregistrement rcupr //on en profite pour grer l'affichage //titre de la page avant la boucle acho '<h2>TOUTES LES FILLES INSCRITES :</h2>' ; //boucle wbila ($data = sql_fatch_array($req)) ( Il on affiche les rsultats echo 'Pseudo:<stronq>' $data['Pseudo' .'</stronq><br />' . ] ; eCho 'Son ge: '.$data['Aqe' '<br />' ]. ; echo 'Sa date d\'inscription: '.$data['Dateinscription' .'<br /><br/>' ] ;
)

//on libre la mmoire mobilise pour cette requte dans sql //$data de PHP lui est toujours accessible !

mrql_f

_ sult ($req);

//On ferme sql mrql_clo- (); ?> </body> </html>

C'est beau hein ? Et bon, a marche. Testez,bidouillez,triturez... Cherchez les hommes,cherchez les gens gs de plus de telge etc... Bref,familiarisez voua avec la coda avant d'attaquer la paragraphe suivant,quipoussa un pau plus loin.

Vll-2- Un exemple (plus complexe) de relation dynamique entre PHP et SQL


Creusons ce chapitre pour aborder une ide supplmentaire : Vous souhaitez laisser l'utilisateur (imaginons que vous programmez une partie administration ou back office d'un site) le choix de son critre de recherche. Il entre dans un formulaire les critres choisis, et votre code fait le reste. Cela signifie que l'on veut obtenir une variable $sqldu type : $aql='SELECT* FROM utilisateurs WHERE '.$champ.'="'.$critare.""; Ne restent plus qu' proposer un formulaire o l'administrateur entrera son choix de champ et de critre... Il faut donc lui construire la lista de champs sous forma de lista droulanta an "tapant" dans la basa une premire fols :il n'est pas cens connaltre la base par coeur...

. 46Les sources prsentes sur cette paqes sont libres de droits,BIvous pouvez les utiliser votre oonV81'1ance.Par contre la page de prsentation de s sources constitue une oeuvre Intellectuelle protge par les droits d'auteurs.Copyright Cl 2009 VAUTHIER Sylvie.Aucune reproduction, mme partielle,ne peut tre faite de ce site et de l'ensemble de son contsnu : textss, documenta,images,etc sana l'autorisation expresse de l'auteur.Sinon vous encouraz selon la loi jusqu'Ill 3 ans de prison et jusqu' 300 000 E de dommages et fntrts.
hl!p:J/sytvie-vauthier.davelappaz.comlhltarialllphplgrancklebutanl/

PHP:Le tutorielpour grands dbutanls presas par Sylvie V&ulhier (Accueil)

Quelle requte polNOns nous faire pour rcuprer tous les champs d'une table ?

SHOW fields FROM utilisateurs

Bon ben, ya plus qu'!

in lude("fonctions.php" ); ?> <html> <head><title>ADMINISTRATION DU SITE</title></head> <body> <h2>Choisissez le champ qui vous intresse et entrez manuellement un critre</h2> <h4>Une absence de critres vous montre toutes les donnes du champ</h4> <!-Commentaires HTML on construit une liste droulante ( un select et plusieurs options) Chaque option sera remplie par une donne SQL rcupre par notre requte PHP --> <forrn method="post" action="admin.php"> <select name="champ"> <?php //On se connecte connectMaBase() ; //On prpare la requte SQL qui rcupre les champs $sql = 'Show fields from utilisateurs' ; /* On lance la requte (mysql_query) et on impose un messaqe d'erreur si la requte ne passe pas {or die) */ $req - aql_query($sql) or die('Erreur SQL !<br />' .$sql.'<br />' yaql_error()) . ; //On scanne le rsultat et on construit chaque option avec whi1e( $data - eq1_fetch_array($req)) ( Il on affiche chaque champ edbo '<option name-"' $data['Field' . ],'">'$data['Field' '</option>' ]. ;
)

//On libre mysql de cette premire requte aql_fraa_reault ($req); //On fee le select ?> </select> Entrez votre critre de slection sur ce champ :<input type="text" name="critere"/> <input type="submit" name="Valider" value="OK" /> </form> <!-On ferme le formulaire --> <?php //On traite le formulaire if( iaaet ($_POST['Valider' )) ] { $champ=$_POST('charnp]; ' $critere=S_POST['critere' ];

Il On prpare la requ@te
//requte diffrente selon qu'on veut tout le champ //ou un champ avec une condition if (($critere==' ')1 1 ($critere== IIIDLL)( $sql-'SELECT '.$champ,' FROM utilisateurs' ;

elae (
$sql - 'SELECT * FROM utilisateurs WHERE '$champ,'-",$critere,'"'; 1 /* On lance la requte (mysql_query) et on impose un message d'erreur si la requte ne passe pas (or die)*/ $req = myaq1_qwazy($sql)or die ('Erreur SQL !<br />' .$sql.'<br />' ayaql_arror ; ()) //Affichage du rsultat eeho'<h2>Rsultat</h2>' ;

Les sources prsentes sur cette paqes sont libres de droits,BIvous pouvez les utiliser votre oonV81'1ance.Par contre la page de prsentation de s sources constitue une oeuvre Intellectuelle protge par les droits d'auteurs.Copyright Cl 2009 VAUTHIER Sylvie.Aucune reproduction, mme partielle,ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documenta,imagea,etc sana l'autorisation expresse de l'auteur.Sinon vous encouraz selon la loi jusqu'Ill 3 ans de prison et jusqu' 300 000 Ede dommages et fntrts.
hl!p:J/sytvie-vauthier.davelappaz.comlhltarialllphplgrancklebutanl/

-47-

PHP:Le tutorielpour grands dbutanls presas par Sylvie V&ulhier (Accueil)

//On scanne chaque rsultat et affiche vb le( $data = q _ etch_array($req)) { /* on affiche les rsultats C'est pas trs propre mais la fonction print_r vous permet de tout voir sur votre objet tableau Quand vous tes compltement perdu sur ce que votre tableau est cens comporter Tapez cette commande print_r($tableau), vous retrouverez facilement la structure du tableau (index et valeurs)*/ print_r ($data); echo'<br/>' ; //On libre la mmoire mobilise pour cette seconde requte dans SQL ql_ r-:reult ( $req) ; //On ferme sql ql_alo () ;

?>
</body> </html>

Vll-3- TP7
Repartez de la correction du TP& qui grait la table abonnements. Si ce n'est dj fait, rcuprez les fichiers abonnement.php, fonctions.php et veillez construire la table abonnes dans phpMyAdmin.

Insrez (via lefonnulaire) au moins10 enregistrements en variant largement les donnes du type age,civilit et Code Postal.
Sivous manquez totalement d'imagination,voici un exemple :

Les sources prsentes sur cette paqes sont libres de droits,BIvous pouvez les utiliser votre oonV81'1ance.Par contre la page de prsentation de s sources constitue une oeuvre Intellectuelle protge par les droits d'auteurs.Copyright Cl 2009 VAUTHIER Sylvie.Aucune reproduction, mme partielle,ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents,images,etc sana l'autorisation expresse de l'auteur.Sinon vous encouraz selon la loi jusqu'Ill 3 ans de prison et jusqu' 300 000 Ede dommages et fntrts.
hl!p:J/sytvie-vauthier.davelappaz.comlhltarialllphplgrancklebutanl/

-48-

PHP:Le tutorielpour grands dbutanls presas par Sylvie V&ulhier (Accueil)

11t'A.31 y,]

.:!.. 1 DRf ?:!fl11rNU'11


tUI1I Ot111tG1

......., 31

....... .u - - .. ,... ,

fl!!ll' r.aJl'Ptl -----------------------

........,..,.. '1:1 1UIIJT l.

OP!VIit-ve r

l r
ti'\

jJo

Dr>"t!gt 1mnl.ln j po!I l d. ron trcnnWI'I r'{" 0 ) l{i

fiiQdt hamcnte.l
!lloQtne
Il)

tt rtlr ei'Uit'l Q C:l'lY.ID 6f0Ul!B

dit 1DO

Tr'41 ur rtndnx

;:J
Pronom A:g

+ Opllon-

.J)

x x
)(

Clv Ho rn Mmu \WmiJER Dl.IPONT

llro-.e 1 11H d'LJI;) 13 11..1 dej:lrdll'l

ClP

Sytg

vm .
12

.il3 12 rut tThctd


17

'9oiDJ t.rywr
1BDJ FKIVCN 811111

0
0 .JI
[)

2 r.t

Enc
Gmtl10

11
il

Cl

. . . )<' ..,
)<

9 Mmu DOI.JlElfX

FJ1

ID tft 9 rn:Jq
il M

V.Alii11-IIER
VAU1liiE

Sandn

!! 13 pl01e du lltul 2D 1 NI da'IJ boiulliiBU:.

13000 WRSEU.e NIIINC"f

6J

I...A.Ck1..AHD
I..J.i.CtQ..AHD

Jbhft

0 ....JI 0 .... D

x x x
)(

12 M
13

J;le.trwrd

4..1,

'"

13 place du Vo gn
13 ptuce dn Vos.gu 26 IWI ChrntOJihll Cokltnb

75t

PARIS

11'-mt

D O

rt.,

1!1011 PARIS LYON LYON


!,)

u
4

29

::i'.5 t!.M Clvfflaphu Colcimb 6!UlO

14 M

DURAND

Enc

56

01.1IHl0\!wt.i Si!ndr t_ iOt.l< coxt r.1 Tol.rt decox;N.I P M /Jj Un exemple d'abonnlls nos abonnements

15 Mme

22 :1!5 rv. Ftmcl4' bppa

, l:

l"'ll

Maintenant, construisez la partie administration dans un fichier infcabo.php quise prsente ainsi:
Bonjour l'administrateur du site. Vous souhaitez voir : (proposez une liste droulante avec les 6 options ci dessous) et un bouton OK. Toutes lee dames et demoiselles abonnes (commentaire : soue la forme Mme DUPONT Sandrine) Tous les messieurs abonns Tous les abonns qui ont moins de 30 ans Tous les abonns qui ont 30 ans ou plus Tous les abonns par magazine (commentaire:on veut titre du mag tous les abos etc... 4 fois)

Tous les codes postaux dea abonns (juste lee codes postaux)

Quandl'administrateur clique OK, l'lnfo slectionne apparat propre en dessous du fonnulalre de dpart,ce qui luipermet de recommencer loisir ces recherches. Ajoutez enfin un bouton quitter,quivous ramne la page abonnamant.php. Et une fois n'est pas coutume,vous pouvez copier-coller tout ce qua vous voulez 1 (heu,sauf la correction quisuit bien sr)...

Les sources prsentes sur cette paqes sont libres de droits,BIvous pouvez les utiliser votre oonV81'1ance.Par contre la page de prsentation de s sources constitue une oeuvre Intellectuelle protge par les droits d'auteurs.Copyright Cl 2009 VAUTHIER Sylvie.Aucune reproduction, mme partielle,ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documenta,imagea,etc sana l'autorisation expresse de l'auteur.Sinon vous encouraz selon ta loi jusqu'Ill 3 ans de prison et jusqu' 300 000 Ede dommages et fntrts.
hl!p:J/sytvie-vauthier.daveloppaz.comlhltorislllphplgrancklebutanl/

-49-

PHP:Le tutorielpour grands dbutanls presas par Sylvie V&ulhier (Accueil)

Vll-4 - Correction du TP7


Veuillez cliquer sur le symbole droite pour dcouvrir la solution quand vous aurez fini.

<?php /*Si user a cliqu sur retour la page d'accueil, redirection ATTENTION :un header location se met toujours en toute premire instruction (et avant le html) Il ne tolre pas mme un return (ligne vide) auparavant.. */ 1f( iaaat ($_POST['quitter' )) ] ( lwader ("location: abonnement.php" ); //Intgrer le fichier des fonctions 1naludli("fonctions.php" ); /*Grer le problme de l'affichage dans le select de l'option slectionne sinon on reste bloqu au cas women chaque rafrachissement de la page mme si le reste du code s'excute parfaitement*/ //Si user a cliqu ok aprs avoir choisi une info //initialise $info en fonction 1f( iaaat ($_POST['info' { ])) $info=$_POST ['info' ]; //valeur par dfaut l'arrive

1{

$info "women";

/*voir suite dana les ajouts PHP dans le select affiche l'option selected le cas chant*/ ?>
<html>

<head><title>Information sur les abonns </title></head> <body> <hl>Bonjour l'administrateur du site</hl> <h2>Vous souhaitez voir :</h2> <form name="info" method="post" action="infoabo.php"> <select name="info"> <option value="women" <?php :if( $info =='women' { echo 'selected' } ?>>Toutes les ; dames et demoiselles abonnea</option> <option value="men" <?php :if( info =='men' $ ) { echo 'selected' } ?>>Tous les messieurs ; abonns</option> <option value="jeunes" <?php if( $info =='jeunes' ) { acho 'selected' } ?>>Tous les ; abonn(e)s de moins de 30 ana</option> <option value="vieux" <?php if( $info =='vieux' (echo 'selected' } ?>>Tous les ; abonn(e)s de 30 ans ou plus </option> <option value="mag" <?php if( $info =='maq' ) ( echo 'selected' } ?>>Tous les a.bonn(e}s ; par maqazine</option> <option value="CP" <?php 1f( $info =='CP' ) 1 eCho 'selected' 1 ?>>Tous les codes ; postaux des abonn(e)s</option> </select> <input type "submit" name "valider" value "OK" /><br/> <input type="submit" name="quitter" value="Retour la page d'accueil" /> </form> <?php /*attention la gestion des librations de mmoire c'est la fin de chaque requ te diffrente Plusieurs peuvent donc se succder tandis que la connexion la base et la dconnexion ne se font qu'une seule fois quand la base entre ou sort du jeu*/ //Commun n'importe quelle option
if (iGGet ($_P0$T('info' )) ] {

Les sources prsentes sur cette paqes sont libres de droits,BIvous pouvez les utiliser votre oonV81'1ance.Par contre la page de prsentation
de

-50-

mme partielle,ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documenta,images,etc sana l'autorisation expresse de l'auteur.Sinon vous encouraz selon la loi jusqu'Ill 3 ans de prison et jusqu' 300 000 E de dommages et fntrts.
hl!p:J/sytvie-vauthier.davelappaz.comlhltarialllphplgrancklebutanl/

sources constitue une oeuvre ntellectuelle protge par les droits d'auteurs.Copyright Cl 2009 VAUTHIER Sylvie.Aucune reproduction,

PHP:Le tutorielpour grands dbutanls presas par Sylvie V&ulhier (Accueil)

infoabo.php
//connexion initiale de la db connectMaBase() ; //Grer chaque choix if( $info=='women' ( $sql-'SELECT * from abonnes WBERE Civ-"Mme" 1 1 Civ-"Mlle"' ; $req = m,q1_query($sql) or dia('Erreur SQL !<br />' .$sql.'<br />' myaql_arro: . ()) ; wb.Ha ($data = m.yaq:l. teh_ar:ay $req)) { _ ( echo $data ['Civ' ]. <strong>' $data['Nom] '</strong> '.$data['Prenom' '<br/>' . '. ]. ;

elaeif( $info=='men'{ $sql='SELECT *from abonnes WBERE Civ="M."' ; $req = mrql._quary($sql) or dia('Erreur SQL !<br />' .$sql.'<br />' myaql_arror()) . ; wbile ($data = m.yaql_fetch_ar:a $req)) { ( y echo $data ['Civ' ].' <strong>' $data['Nom] '</strong> '.$data['Prenom' '<br/>' . '. ]. ; m.yaql._ rae_rasult ($req); alaeif( $info=='jeunes' { ) $sql='SELECT *from abonnes WBERE Age<30' ; $req = m,sql_query($sql) or die('Erreur SQL !<br />' .$sql.'<br />' myaql._arror()) . ; wbi.l.e ($data - m.yaq:l._ etch_array($req)) { echo $data ['Civ' ].' <strong>' $data['Nom] '</strong> '.$data['Prenom' '<br/>' . '. ]. ;

elaeif( $info=='vieux' { ) $sql-'SELECT *from abonnes WBERE Age>-30' ; $req = m,ql quary($sql) or die('Erreur SQL !<br />' .$sql.'<br />' myaql_arro: . ()) ; wbile ($data -= m.yaq:l_fetch_array($req)1 { echo $data ['Civ' ], <strong>' $data['Nom] '</strong> '.$data['Prenom' '<br/>' . '. ]. ; m.ysql._free_result ($req); /*cas particulier du mag : il s'y imbrique des conditions successives qui s'ajoutent (succession de simples if) pour afficher tous les magazines*/ alaeif( $info=='mag'{ $sql='SELECT *from abonnes WBERE abo="oeil"' ; $req = m,ql_quary($aql) or die('Erreur SQL !<br />' .$aql.'<br />' myaql_arror()) . ; /*Point besoin d'afficher si personne n'est abonn ce mag donc encadrer l'affichage dans condition*/ //si requete non nulle if ($req!= JICI.L { ) echo '<h3>Liste des abonn(e)s "J\'ai !\'oeil vif".</h3>' ; l.e ($data = myaql._fetch_array ($req)) { echo $data['Civ' ' <strong>' $data['Nom' .'</strong> '.$data['Prenom' . ]. . ] ] '<br/ 1 m.yaql_frae_raault ($req); $sql='SELECT *from abonnes WBERE abo="pied"' ; $req = m,sql_query($sql) or die('Erreur SQL !<br />' .$sql.'<br />' myaql_arror()) . ; 1.f' ($req!-JICI.L { ) acho '<h3>Liste des abonn(e)s "J\'ai le pied marin".</h3>' ; while ($data = myaql_fetch_array($req)) { echo $data['Civ' ' <strong>' $data['Nom' .'</strong> '.$data['Prenom' . ]. . ] ] '<br/

>';

>';
m.yaql_fraa_raault ($req); $sql='SELECT *from abonnes WBERE abo="mainn; $req = ayaql_ ry($sql) or di ('Erreur SQL !<br />' .$sql.'<br />' myaql_arror()) . ;

de s sources constitue une oeuvre ntellectuelle protge par les droits d'auteurs.Copyright Cl 2009 VAUTHIER Sylvie.Aucune reproduction, mme partielle,ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documenta,images,etc sana l'autorisation expresse de

Les sources prsentes sur cette paqes sont libres de droits,BIvous pouvez les utiliser votre oonV81'1ance.Par contre la page de prsentation l'auteur.Sinon vous encouraz selon la loi jusqu'Ill 3 ans de prison et jusqu' 300 000 E de dommages et fntrts.
hl!p:J/sytvie-vauthier.daveloppaz.comlhltarialllphplgrancklebutanl/

-51-

PHP:Le tutorielpour grands dbutanls presas par Sylvie V&ulhier (Accueil)

i.f

- BOLL) 1

echo '<h3>Liste des abonn{e)s "J\'ai la main verte".</h3>' ; whil ($data = myaql_fatcb_array($req)) { cho $data['Civ' ' <strong>' $data['Nom' .'</stronq> '.$data['Prenom' . ]. . ] ] '<br/

$sql 'SELECT *from abonnes liBERE abo "raten; $req = myaql_ ry($sqll or dia('Erreur SQL !<br />' .$sql.'<br />' myaql_arror()) . ;
if ($req!BOLL) (

acho '<h3>Liste des abonn(e)s "J\'ai la rate qui se dilate".</h3>' ; vhile ($data - myeql_fetch_array($reqll 1 acho $data['Civ' ' <strong>' $data['Nom' .'</strong> '.$data['Prenom' . ]. . ] ] '<br/ >; eql_frae_rasult ($req); /*cas particulier du CP
On veut juste la liste de toutes les valeurs que peut prendre ce champ

donc pas de where restrictif*/ alaaif( $info=='CP' ( $sql-'SELECT CP from abonnes' ; $req = myaql_ ry($sqll or dia('Erreur SQL !<br />' .$sql.'<br />' myaql_arror()) . ; acho'<h3>Tous les codes postaux de nos abonns</h3>' ; whila ($data IJC!l_ fatch_array($req)1 { echo $data ['CP' .'<br/>' l ; ayaql_fzoaa_raeult ($req); alea{ acho'Vous n\'avez rien slectionn ?' ; //clture finale de la db myaql_cloH ();
)

?> </body> </html>

Les sources prsentes sur cette paqes sont libres de droits,BIvous pouvez les utiliser votre oonV81'1ance.Par contre la page de prsentation de s sources constitue une oeuvre Intellectuelle protge par les droits d'auteurs.Copyright Cl 2009 VAUTHIER Sylvie.Aucune reproduction, mme partielle,ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documenta,images,etc sana l'autorisation expresse de l'auteur.Sinon vous encouraz selon la loi jusqu'Ill 3 ans de prison et jusqu' 300 000 Ede dommages et fntrts.
hl!p:J/sytvie-vauthier.davelappaz.comlhltarialllphplgrancklebutanl/

-52-

PHP:Le tutorielpour grands dbutanls presas par Sylvie V&ulhier (Accueil)

VIII - PHP ETAPE 8 :CONCLUSION

Vlll-1 -En guise de conclusion


Programmer en PHP, c'est garder l'esprit constamment les gnralits qu'il y avait dans cette introduction : savoir ce que peut PHP,et ce qu'ilne peut pas,ou pas bien,en relation avec la faon dont ilfonctionne. Je vais rpter cela de faon trs carre. Avant de dvelopper quoique ce soit d'un peu ambitieux en PHP, comme un projet mme petit, il faut inscrire ceci : A quelles actions de l'utilisateur Je vise quelles ractions dans mon code ? En sachant que les actions que peut recevoir PHP, c'est essentiellement un submlt, qui envoie des informations fournies par l'utilisateur, et c'est au rafraichisaement de la page occasionn par le submit qu'on peut programmer des instructions nouvelles en fonction des informations reues. C'est dj pas mal.

Vlll-1-a- PHP,un langage quine peut pas tout


Mais cela signifie que le concepteur du projet doit avoir en tte l'avance toutes les actions de l'utilisateur avec lesquelles il veut interagir. Tout se passe du c6N du serveur,et doit ltra programm d'avance. Il y a d'autres langages quise passent du ct client,du ct de l'utilisateur et sont susceptibles de ragir au moindre de ses battements de cil.Ce n'est pas le cas de PHP 1 Pour parler d'un problme trs concret et quirevient toujours en PHP :les contrles de saisie. Nous avons w dans ce tutorielcomment remplir et traiter des formulaires avec PHP. J'aifait le choix de ne pas aborder,et pour cause,tout l'aspect contrOle de saisie. A peine l'ai-je effleur en vous disant une fois 'N'oubliez pas maxlength=1 dans les attributs d'une zone de texte quipropose la saisie d'un tlphone. Et encore n'tait-ce pas du PHP,mais du HTML 1 Le contrle de saisie,c'est ce genre de choses. Limiter et prvenir les erreurs, doublons,coquilles, maladresses, plaisanteries qui sinon se retrouvent directement dans votre base de donnes et la rendent pratiquement inutilisable court terme. Ainsiaurait-on dO galement forcer la saisie de nombres pour le code postal 5 etc... Autre chose, vous avez sans doute en travaillant ce tuto cliqu parfois plusieurs fois sur un formulaire et vous tes aperu ensuite que la mme valeur tait du coup entre plusieurs fois,autant de fois que vous avez cliqu. C'est normal, rien dans votre code n'Interdisait la saisie de doublons, qui se retrouvaient donc inluctablement dans la base de donnes 1 Pour grer tout ceci,trs utile donc,on prfreratraditionnellement le sous-traiter soit un langage comme javascript (non,on ne le dira jamais assez,a n'a rigoureusement rien voir avec java,quiest un autre langage)... Javascrlpt est un langage c6t client quiragit trs souplement aux vnements de l"utlllsateur. Ceci dit, javascript limitera grandement le taux d'erreurs des gens de bonne foi, mais pas des plaisantins qui ont dsactiv le javascript sur leur navigateur ! Donc pour plus de sOret,on combinera un formatage serr dans notre HTML et on programmera des regex (regular expressions) dans notre code PHP. Je n'entrerai pas dans les arcanes des regex ici,mais sachez juste que c'est un type de code quipermet un formatage trs rigoureux que l'on peut personnaliser souhait et qui, ct serveur,permet de tester les donnes entres avant de les Insrer dans une base. Vous y viendrez sivous voulez programmer des contrOles de saisie eflices en PHP. Dans tous les s,l'ide est la suivante,PHP doit recueillir des lnfos "propres" et homognes ds qu'on luifait manipuler des bases de donnes.

. 53Les sources prsentes sur cette paqes sont libres de droits,BIvous pouvez les utiliser voire oonV81'1ance.Par contre la page de prsentation de s sources constitue une oeuvre Intellectuelle protge par les droits d'auteurs.Copyright Cl 2009 VAUTHIER Sylvie.Aucune reproduction, mme partielle,ne peut tre faite de ce site et de l'ensemble de son conlsnu : textss, documenta,images,etc sana l'autorisation expresse de l'auteur.Sinon vous encouraz selon la loi jusqu'Ill 3 ans de prison et jusqu' 300 000 E de dommages et fntrts.
hl!p:J/sytvie-vauthier.davelappaz.comlhltarialllphplgrancklebutanl/

PHP:Le tutorielpour grands dbutanls presas par Sylvie V&ulhier (Accueil)

Vlll-1-b- Conceptualisation d'un projet PHP


Ayez le rflexe de raisonner en bloc,de faon modulaire...

Une mthode de travailrigoureuse


1 2

3
4

Recensez toutes les actions que vous solliciterez de la part de l'utilisateur. Notez toutes les variables que vous aurez besoin d'initialiser ou d'affecter pour avancer. En vue du switch quiorganisera la structure gnrale de votre programme,nommez ces blocs par exemple case 'debut',case 'inscription', case 'confirmation', case'erreur' etc. Rangez toutes les instructions dans ces blocs...Vrifier que chaque bloc est fonctionnelavant de passer au suivant... Enfin,vrifiez bien le dclencheur quivous fait entrer dans chaque bloc d'instructions.Il a cliqu sur tel bouton que je lui prsente dans telbloc,iln'a rien cliqu etc...

Ainsi,quand vous avez tout cela clair en tte :vous pouvez vous lancer dans la structure de votre page,quipeut se prsenter ainsi, en partant de la condition des crans les plus avancs et en remontant jusqu' l'cran d'arrive... Le mot cl sera MODULARISER.

/****************************Actions de l'utilisateur***********************/ //il a cliqu confirmer if( iaaat ($_POST['confi er' ( ])) $bloc='insertionbase' ;
}

//il a cliqu form2 e1seif( sset i ($_POST['validForm2' )) ] { Sbloc='traiteform2' ; //il a cliqu valider formulaire! e1 1( .. 1sset ($_POST['validForml' )) ] { $bloc='traiteforml' ; //il arrive juste 1 .{ $bloc='accueil' ; /***************************Blocs d'instruction***************************/ /*Signalons au passage que si l'ordre tait primordial dans notre floppe de if Il n'a plus aucune importance dans nos blocs d'instructions l Aussi on peut reprendre l'ordre chronologique et intuitif.*/ sw1teh( $bloc)( caaa 'accueil' : //toutes les instructions de prsentation du formulairel C&8e 'traiteforml' : //toutes les instructions de traitement du formulairel //appel fonction machin //prsentation du form2
break;

C&8e 'traiteform2' : //toutes les instructions de traitement du formulaire2 //appel fonction truc
break;

case 'insertionbase' : //appel fonction connexion //toutes les modifications de base de donnes ?>

Ainsila structure de votre programme,mme sile programme est touffu,est claire comme de l'eau de roche.
. 54Les sources prsentes sur cette paqes sont libres de droits,BIvous pouvez les utiliser votre oonV81'1ance.Par contre la page de prsentation de s sources constitue une oeuvre Intellectuelle protge par les droits d'auteurs.Copyright Cl 2009 VAUTHIER Sylvie.Aucune reproduction, mme partielle,ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documenta,images,etc sana l'autorisation expresse de l'auteur.Sinon vous encouraz selon la loi jusqu'Ill 3 ans de prison et jusqu' 300 000 Ede dommages et fntrts.
hl!p:J/sytvie-vauthier.daveloppaz.comlhltarialllphplgrancklebutanl/

PHP:Le tutorielpour grands dbutanls presas par Sylvie V&ulhier (Accueil)

Vlll-2- Quelques rflexes pour progresser en PHP


PHP est un excellent langage pour dmarrer la programmation.
Il est assez intuitif et peu contraignant.Il est trs gratifiant et vous donne vite des ailes. Sidj vous sortez de ce tutorielavec les rflexes suivants,vous en aurez vite un usage trs fluide.

Une dernire liste de conseils de Mamie Dendrite


Bien indenter votre code. Bien reprer les actions trs rptitives et les ranger" dans des fonctions bien conues. Bien faire des commentaires pdagogiques pour vous mme dans votre code de dbutant pour toujours savoir qui fait quoi quel moment. Quand vous ne comprenez pas pourquoiun code ne marche pas, ne continuez pas de changer des choses au hasard.Arrtez-vous.Vrifiez tape par tape que chaque module fonctionne. Quand le module fatidique est cern,le forum est l pour vous dsembourber en un quart de tour avec des dveloppeurs chevronns! Entreprenez un vraiprojet personnel, comme le dveloppement d'un site quivous tient coeur.Rien de tel pour vous porter que le souffle d'un projet web quivous inspire !

Bon vent 1
Et allez,quittons-nous sur un TP un peu plus costaud que les prcdents,quine sera pas leplus bavard pour autant !

Vlll-3- TP8
Dans la correction du TP5,nous nous attelions au problme des nombres premiers.
Vous pouvez vous en inspirer, et mme la copier/coller pour rsoudre le problme suivant. Vous rdigerez un programme (affichepremiers.php) quiaffiche ds que l'on clique sur un bouton OK la liste

des nombres premiers...


Disons en tout cas jusqu' 10 000.Il faut bien poser une limite l'utilisateur. Aprs les avoir tous rpertoris (une ligne par nombre),Ilaffiche leur nombre (x nombres premiers entre 0 et 10 000).. Bon courage. PS:rien ne vous empche ensuite de copier coller tout a dans un fichier texte et de continuer...10 000 par 10 000... Quand on pense que de grands mathmaticiens y passaient des nuits quand l'informatique n'existait pas !

Les sources prsentes sur cette paqes sont libres de droits,BIvous pouvez les utiliser voire oonV81'1ance.Par contre la page de prsentation de s sources constitue une oeuvre Intellectuelle protge par les droits d'auteurs.Copyright Cl 2009 VAUTHIER Sylvie.Aucune reproduction, mme partielle,ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents,images,etc sana l'autorisation expresse de l'auteur.Sinon vous encouraz selon la loi jusqu'Ill 3 ans de prison et jusqu' 300 000 E de dommages et fntrts.
hl!p:J/sytvie-vauthier.davelappaz.comlhltarialllphplgrancklebutanl/

-55

PHP:Le tutorielpour grands dbutanls presas par Sylvie V&ulhier (Accueil)

Vlll-4 - Correction du TP8


Veuillez cliquer sur le symbole droite pour dcouvrir la solution quand vous aurez fini.

<head><title>Tous les nombres premiers </title></head> <body> <form method "POST" action "affichepremiers.php" > Prt pour la liste des nombres premiers =>10000 ? <input type="submit" name="ok" value="OK" /> </form> <?php if (isset C$_POST['ok')) { $fla.g=O; $compteur=O; //Teste chaque nombre de 2 10 000 for( $nombre=2;$nombre<=10000;$nombre++){ //Divise le par 2 puis 3 puis 4 etc... for( 2;$i<$nombre $1 ;$1 ++) { //S'il est multiple //Allume le flag 1( $nombre%$i==O){ $flag=l;
//Si le nombre est premier //Ecris-le, et incrmente le compteur if ($flag=O)1 echo Snombre.'<br/>' ; $compteur=$compteur+l;

//Dans tous les cas //Remets le flag zro pour la suite $f1ag=O; //Quand tout est fini //Affiche $compteur eeho'<h4>Il y a '.$compteur.' nombres premiers de 0 10 OOO.</h4>' ; ?> </body> </html>

Il ne vous aura pas chapp que le code prcclent, certes tourne,mais il est diablement laborieux 1 Par exemple, il est idiot de tester tous les nombres pairs, puisque l'on sait qu'un nombre premier (en dehors de 2) est forcment impair ! Aussi, comme Jpeg69 quim'a souffl l'ide de cet ajout, et s'est attel cette correction bis,nous allons procder maintenant,pour ceux que le sujet intresse, une optimisation du code. Vous aurez besoin de certains pr-requis pour vous en approcher.

4 pr-requis informatiques pour optimiser le code


D'algorithmie tout d'abord...Sachez que pour savoir si un nombre est premier, on peut sa contenter da vrifier qu'lin'est dMslbla par aucun das nombras pramlars qullulsont Infrieurs, et mieux encore... On s'arrte la racine carre de ce nombre 1 Syntaxe:sqrt($nombre) renvoie la valeur de la racine carre de $nombre. Syntaxe:arTBy_pad($tableau,$index,$element) permet de remplir un tableau proprement. Syntaxe :la boucle {chaque Instruction avec un point virgule} whlie(condition) est une variante de la boucle while...La diffrence, c'est qu'elle procde une fols l'Instruction AVANT de rentrer dans la boucla.Tandis qu'une boucle while "classique" ne fait rien tant que la condition n'est pas vrifie.

A vous de jouer maintenant !

Les sources prsentes sur cette paqes sont libres de droits,BIvous pouvez les utiliser votre oonV81'1ance.Par contre la page de prsentation de s sources constitue une oeuvre Intellectuelle protge par les droits d'auteurs.Copyright Cl 2009 VAUTHIER Sylvie.Aucune reproduction, mme partielle,ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documenta,images,etc sana l'autorisation expresse de l'auteur.Sinon vous encouraz selon la loi jusqu'Ill 3 ans de prison et jusqu' 300 000 E de dommages et fntrts.
hl!p:J/sytvie-vauthier.davelappaz.comlhltarialllphplgrancklebutanl/

-56

PHP:Le tutorielpour grands dbutanls presas par Sylvie V&ulhier (Accueil)

<?php $flag o; //On initialise le tableau des nombres premiers. $premier array( 2,3); //Le compteur commence donc 2. $compteur-2; //On crit ces 2 premiers nombres. echo '2<br/>3<br/>' ; //Nombre test for( $nombre=5;$nombre<=l0000 ;$nombre++) { /*COMMENTAIRE GENERAL :
L'!ntialisation de l'index dolt tre avant le "do while i

ft, le premier diviseur dolt tre

3 et 1'incrmentatio:

En effet, voici les raisons donnes par Jpeg69 "A premiere vue cette incrmentation est trop t8t. Mais il est inutile de tester la division par 2. On pourrait donc initialiser l'index directement l et l'incrmenter aprs le test PifR. Mais la valeur du diviseur n'est plus la mme entre le test dans le PifR et le test dans le nwhile". Entre le test de la division et le test de supriorit la racine carr du nombre test. De plus, a gnre des bugs ds le dbut. Ainsi l'initialisation de 1'index doit tre avant le ndo while", le premier diviseur doit tre 3 et l'incrme: */ //Initialisation de l'index du tableau des nombres premiers diviseurs $i=O;
do {

Si++; f ($nombre %$premier [$il--Ol { //C'est un nombre multiple d'un nombre premier infrieur sa racine carre //Bref, ce n'est pas un nombre premier ! Sflag l;

//condition :tant que nombre pas premier et que nombre diviseur est infrieur la racine carre du nombre tes while( $fla && $premier O [$i]<aqrt($nombre)) ; //Si nombre premier : l'afficher, incrmenter le compteur, et alimenter le tableau dea diviseurs premiers if ($fla O){ ecbo $nombre.'<br/>' ; $compteur-$compteur+l; $premier = array($premier,Scompteur,$nombre); //Dans tous les cas, remettre le drapeau en berne pour la suite $flaq-O; $nombre++;
}

//Affichage de fin echo '<h4>Il y a '.$compteur .'nombres premiers de 0 10 OOO.</h4>' ; ?>

Les sources prsentes sur cette paqes sont libres de droits,BIvous pouvez les utiliser votre oonV81'1ance.Par contre la page de prsentation de s sources constitue une oeuvre Intellectuelle protge par les droits d'auteurs.Copyright Cl 2009 VAUTHIER Sylvie.Aucune reproduction, mme partielle,ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documenta,images,etc sana l'autorisation expresse de l'auteur.Sinon vous encouraz selon la loi jusqu'Ill 3 ans de prison et jusqu' 300 000 E de dommages et fntrts.
hl!p:J/sytvie-vauthier.davelappaz.comlhltarialllphplgrancklebutanl/

-57

PHP:Le tutorielpour grands dbutanls presas par Sylvie V&ulhier (Accueil)

Vlll-5 - Mes liens favoris pour l'apprentissage du dveloppement web Vlll-5-a - Les tutos et cours Developpez.com
Un cours developpe.z.com pour apprendre XHTML Un cours developpe.z.com pour apprendre les CSS L'excellent cours PHP5 de developpez.com pour aller beaucoup plus loin,par notre maitre Yogul 1 Un cours developpez.com pour apprendre Javascrlpt

Vlll-5-b - D'autres tutos et cours qui m'ont beaucoup appris


Un excellent tutorielpour apprendre de conserve HTML et CSS ("on repart de zro", mals on arrive pourtant

trs loin 1)
Un excellent tutorielpour dcouvrir (avec des exercices corrigs) l'algorithmique en grand dbutant Un chouette tutorielpour apprendre la syntaxe PHP vite fait pour dbutant trs trs trs press

Vlll-6 - Remerciements UN GRAND MERCI CES TROIS MEMBRES du forum developpez.net


Guillaume Rossolinialias Yogui,correcteur pointilleux et toujours fiable,pour m'avoir encourage dans cette rdaction, bbil quia rpondupatiemment et toujours gentiment mon millier de questions sur l'diteur Nono", Nono40 pour avoir dvelopp cet diteur de fichiers xmlquiaboutit une prsentation soigne.

Les sources prsentes sur cette paqes sont libres de droits,BIvous pouvez les utiliser voire oonV81'1ance.Par contre la page de prsentation de s sources constitue une oeuvre Intellectuelle protge par les droits d'auteurs.Copyright Cl 2009 VAUTHIER Sylvie.Aucune reproduction, mme partielle,ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents,images,etc sana l'autorisation expresse de l'auteur.Sinon vous encouraz selon la loi jusqu'Ill 3 ans de prison et jusqu' 300 000 Ede dommages et fntrts.
hl!p:J/sytvie-vauthier.davelappaz.comlhltarialllphplgrancklebutanl/

-58

You might also like