Professional Documents
Culture Documents
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
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/
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
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
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
a. C'est
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-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 :
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,
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...
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-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/
//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/
<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/
phpMyAdmin SQLiteManager
www directory
Apache ._
..
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-
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.
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/
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) {
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.
<?php
$age=l8;
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-
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:
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:
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-
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.
<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/>' ;
-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/
<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,
Ah, tout
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' ; ] ?>
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-
e1-.t.( aqe<13){ $
Sverdict='Vous tes un enfant!' ;
}
e1-.t.( aqe<18 $ ){ 1{
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
<?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-
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...
<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
'
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,
<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/>
'.$i.mc.'<br/>' ;
-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/
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 :
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]; ?>
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
/* TOUS LES TABLEA'UX TOUTES LES DATES TOUS LES PAYS
*/
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 ?
<?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,
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); , ?>
<?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' ]: ?>
/*
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' ];
?>
<?php //construction du tableau semaine $semaine=array( 'lundi' ,'mardi''mercredi' , , //parcours du tableau fo aah( $semaine $jour){ echo '.$jour.'<br/>' ':
/*
'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-
Copiez, collez maintenant le gros morceau de code qui suit, dont nous avons vu l'essentiel tout l'heure, la
<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-
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
. 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,
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-
<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/>' ;
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-
*/ //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)
/*
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-
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
?>
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 //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/>' ; ?>
<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
//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 '- ';
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
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
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
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.
<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>
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/
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)...
<?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.
. 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 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;
$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;
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-
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
<?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/
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-
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.
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/
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)...
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-
t-
ilnsrof
!l4l Exportef
.
lv l
[ AftJdier
):m
liCUlte
ID
'1<
.JE
Pr;eudo 1 li i
2
!Dntelnscdplion
21J)91.()1.(i2
16
Toto
Zliune
M1m1
.. 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 :
Voil pour l'essentiel des requtes de base en SQL, nous verrons au cours de la suite quelques syntaxes supplmentaires...
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 :
<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 ?
<?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,
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() ;
<?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() ;
?>
?>
. 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,
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.
<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()) ;
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-
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 !
<?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,
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 '
.....,., (D .
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,
//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 ÊTES :</h2>' ; echo $civ. '.$nom.' '.$prenom., agé' $e.'de '.$age.'ans.<br/><br/> . <strong>Votre adresse :</strong><br/>' . $adresse.'<br/>' . $CP.''.$ville.'<br/><br/> <strong>Votre téléphone:</strong>' $tel.'<br/><br/>' . ; acho '<h2>VOUS AVEZ CHOISI DE VOUS ABONNER À</h2>' ; acho'<h3>' $mag.'</h3><br/> . <h4>Merci de vous être abonné' $e.' à 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
","
/*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é d'identité :</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 é nom :<input type="text" name="prenom" <br/> /> Â : <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-
abonnement.php
Numéro de télé 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
)
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-
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
. 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/
toutes les infos sur toutes les filles dans ma base MaBase,
<head><title>TOUTES LES INFOS SUR LES INSCRITS DU SITE</title></head> <body> <?php //On se connecte connectMaBase() ;
Il On prpare la requte
$sql
=
Il on lance la requte (mysql_query) et on impose un message d'erreur si la requte ne se passe pas (or die)
$req
=
//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);
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.
. 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/
Quelle requte polNOns nous faire pour rcuprer tous les champs d'une table ?
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-
//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-
11t'A.31 y,]
......., 31
....... .u - - .. ,... ,
OP!VIit-ve r
l r
ti'\
jJo
fiiQdt hamcnte.l
!lloQtne
Il)
dit 1DO
Tr'41 ur rtndnx
;:J
Pronom A:g
+ Opllon-
.J)
x x
)(
ClP
Sytg
vm .
12
'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
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.,
u
4
29
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
, 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 /*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,
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-
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 ();
)
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-
. 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/
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/
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
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
<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.
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 $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
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++;
}
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
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
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
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