CC o o n n c c e e p p t t i i o o n n d d e e p p u u g g e e s s W W e e b b D D y y n n u u m m i i q q u u e e s s P P H H P P [ [ M M y y s s q q l l i ii i i ii i : :: : : :: : s ss s s ss s : :: : : :: : i ii i i ii i : :: : : :: : u uu u u uu u : :: : : :: : o oo o o oo o r rr r r rr r r rr r r rr r c cc c c cc c s ss s s ss s : :: : : :: : ~ ~~ ~ ~ ~~ ~ : :: : : :: : i ii i i ii i c cc c c cc c : :: : : :: : t tt t t tt t s ss s s ss s c cc c c cc c r rr r r rr r r rr r r rr r s ss s s ss s s ss s s ss s i ii i i ii i c cc c c cc c : :: : : :: : : :: : : :: : r rr r r rr r : :: : : :: : : :: : : :: : r rr r r rr r o oo o o oo o : :: : : :: : s ss s s ss s . .. . . .. . · ·· · · ·· · ' '' ' ' '' ' | || | | || | · ·· · · ·· · · ·· · · ·· · : :: : : :: : - -- - - -- - République Algérienne Démocratique et Populaire Mi ni st ère de l a Format i on et de l ’ensei gnement Professi onnel s Fevrier 2005 IFP de Birkhadem, : Rue des Trois Frères Djillali Birkhadem - Wilaya d’Alger : 021 54.21.44/45/46 Fax : 021 54.22.00 Site web : www.ifp-alger.edu.dz e-mail :
[email protected] Conception de Pages Web Dynamiques Avec PHP/MYSQL 2 SOMMAIRE I. er Chapitre.............................................................................................................................................. 5 I.1. Présentation du HTML ................................................................................................................. 5 I.1.1 Le HTML est un langage à balises............................................................................................ 5 I.1.2 Comment utiliser les balises HTML ? ...................................................................................... 5 I.1.3 La page HTML minimum......................................................................................................... 5 I.2. Les balises de structure ................................................................................................................. 6 I.2.1 Les attributs............................................................................................................................... 6 I.2.2 Les Paragraphes ........................................................................................................................ 6 I.2.3 Les listes.................................................................................................................................... 6 I.3. Utilisation de tableaux .................................................................................................................. 7 I.3.1 Les attributs............................................................................................................................... 7 I.4. Les liens hypertextes et ancrage.................................................................................................... 8 I.4.1 Présentation des ancrages.......................................................................................................... 8 I.4.2 Les signets................................................................................................................................. 8 I.5. Comment afficher des images sur une page web? ........................................................................ 9 I.6. Les formulaires en HTML ............................................................................................................ 9 I.6.1 Attributs de la balise FORM et types d'entrées....................................................................... 10 II. ème Chapitre ......................................................................................................................................... 12 II.1. Introduction................................................................................................................................. 12 II.1.1 De quoi s'agit-il ? ................................................................................................................ 12 II.1.2 Le premier script ................................................................................................................. 12 II.1.3 JavaScript et HTML............................................................................................................ 12 II.2. Premier exemple avec JavaScript ............................................................................................... 12 II.2.1 Mettre le code JavaScript dans un fichier ........................................................................... 13 II.3. Différents types d'expressions..................................................................................................... 13 II.4. Les variables ............................................................................................................................... 13 II.4.1 Les types de variables ......................................................................................................... 13 II.4.2 Opérations sur les variables ................................................................................................ 13 II.5. La fonction eval .......................................................................................................................... 14 II.6. La fonction prompt...................................................................................................................... 14 II.7. Définir de nouvelles fonctions .................................................................................................... 15 II.7.1 Structure générale ............................................................................................................... 15 II.8. Les formulaires élémentaires ...................................................................................................... 16 II.8.1 Interpréter un formulaire..................................................................................................... 16 II.9. Les conditions ............................................................................................................................. 18 II.9.1 Utilisation de if.................................................................................................................... 18 II.9.2 Utilisation de switch............................................................................................................ 19 II.10. Les boucles.............................................................................................................................. 19 II.10.1 Boucle for............................................................................................................................ 19 II.10.2 Boucle while ....................................................................................................................... 20 II.11. Les tableaux ............................................................................................................................ 20 II.11.1 Création............................................................................................................................... 20 II.11.2 Utilisation............................................................................................................................ 20 II.11.3 Quelques propriétés et méthodes des objets tableaux......................................................... 21 III. eme CHAPITRE.................................................................................................................................... 23 III.1. Origine de PHP ....................................................................................................................... 23 III.2. Description.............................................................................................................................. 23 III.3. Installation............................................................................................................................... 23 III.4. Mise en pratique de PHP......................................................................................................... 24 III.5. La notion de variable............................................................................................................... 25 Conception de Pages Web Dynamiques Avec PHP/MYSQL 3 III.5.1 Définir des variables ........................................................................................................... 26 III.5.2 Afficher la date du jour et l'heure en cours ......................................................................... 26 III.5.3 variable affectée ou non...................................................................................................... 27 III.5.4 Définir des constantes ......................................................................................................... 27 III.5.5 Une variable Existe ou pas.................................................................................................. 28 III.5.6 Type de variable.................................................................................................................. 28 III.6. Variable variable..................................................................................................................... 29 III.7. Les formulaires ....................................................................................................................... 29 III.8. Les expressions: ...................................................................................................................... 30 III.9. Création de tableaux................................................................................................................ 31 III.9.1 Parcourir un tableau ............................................................................................................ 32 III.9.2 Fonctions de tri.................................................................................................................... 33 III.10. Les fonctions Mathématiques ................................................................................................. 33 III.11. Les fonctions........................................................................................................................... 34 III.11.1 Définir des fonctions :..................................................................................................... 34 III.12. Les instructions ....................................................................................................................... 34 III.12.1 If, elseif et else ................................................................................................................ 34 III.12.2 switch : le "choix parmi"................................................................................................. 35 III.12.3 boucles while et do-while ............................................................................................... 36 III.12.4 boucle for ........................................................................................................................ 37 III.12.5 array "associatif" ............................................................................................................. 37 IV. eme Chapitre ................................................................................................................................... 39 IV.1. Création de la base de données ............................................................................................... 39 IV.2. Connexion à Mysql ................................................................................................................. 39 IV.3. Exécution d'une requête SQL.................................................................................................. 39 IV.4. Enregistrement dans une table Mysql ..................................................................................... 39 IV.5. Extraction de données ............................................................................................................. 40 IV.6. Syntaxe Mysql......................................................................................................................... 41 IV.6.1 Exécution de requêtes ......................................................................................................... 41 IV.6.2 Création de table ................................................................................................................. 41 IV.6.3 Modification d'une table ..................................................................................................... 42 I I. . Conception de Pages Web Dynamiques Avec PHP/MYSQL 4 I In nt tr ro od du uc ct ti io on n Un site dynamique est une entreprise coûteuse en terme de temps. Les mises à jour régulières sont parfois difficiles à réaliser. Or un site qui n'évolue pas est parfois condamné à disparaître, ou du moins voir sa fréquentation diminuer. L'internaute aime le changement, il ne supporte pas un site statique qui n'évolue guère. Les langages dynamiques permettent de résoudre ces problèmes. Ils facilitent les opérations de mise à jour, permettent plus d'activités sur les pages. Le but de ces pages est de vous initier à l'un de ces langages PHP, ainsi que le Mysql pour la gestion de la base de données. Pour pouvoir utiliser le PHP convenablement il faut au préalable maîtriser le langage HTML et également le langage javascipt. Conception de Pages Web Dynamiques Avec PHP/MYSQL 5 I II I. . e er r C Ch ha ap pi it tr re e Le langage HTML I II I. .1 1. . P Pr ré és se en nt ta at ti io on n d du u H HT TM ML L Le HTML ("HyperText Markup Language") est un système qui formalise l'écriture d'un document avec des balises de formatage indiquant la façon dont doit être présenté le document et les liens qu'il établit avec d'autres documents. Il permet, entre autre, la lecture de documents sur Internet à partir de machines différentes grâce au protocole HTTP, permettant d'accéder via le réseau à des documents repérés par une adresse unique, appelée URL. I II I. .1 1. .1 1 L Le e H HT TM ML L e es st t u un n l la an ng ga ag ge e à à b ba al li is se es s Le HTML n'est pas un langage de programmation, c'est un simple fichier texte contenant des balises permettant de mettre en forme le texte, les images ... Une balise est une commande (un nom) encadrée par le caractère inférieur (<) et le caractère supérieur (>). I II I. .1 1. .2 2 C Co om mm me en nt t u ut ti il li is se er r l le es s b ba al li is se es s H HT TM ML L ? ? Les balises HTML peuvent être uniques; la balise <br> représente par exemple un retour à la ligne. Les balises HTMl peuvent également fonctionner par paire afin d'agir sur le texte qu'ils encadrent (la balise de fin est alors précédé d'un /) : <marqueur> Votre texte formatté </marqueur> Ainsi les balises <b> et </b> permettent de mettre en gras le texte qu'elles encadrent : <b> Ce texte est en gras </b> Les balises ne sont pas sensibles à la casse, c'est-à-dire qu'on peut les écrire indifféremment en minuscules ou en majuscules. I II I. .1 1. .3 3 L La a p pa ag ge e H HT TM ML L m mi in ni im mu um m Une page HTML est un simple fichier texte commençant par la balise <HTML> et finissant par la balise </HTML>. Elle contient également un en-tête décrivant le titre de la page, puis un corps dans lequel se trouve le contenu de la page. L'en-tête est délimité par les balises <HEAD> et </HEAD> Le corps est délimité par les balises <BODY> et </BODY>. Ainsi la page HTML minimum peut être représentée comme suit : <HTML> <HEAD> <TITLE> Le titre </TITLE> </HEAD> <BODY> Contenu de la page </BODY> </HTML> Conception de Pages Web Dynamiques Avec PHP/MYSQL 6 I II I. .2 2. . L Le es s b ba al li is se es s d de e s st tr ru uc ct tu ur re e I II I. .2 2. .1 1 L Le es s a at tt tr ri ib bu ut ts s Les attributs suivants sont placés dans les balises de structure pour permettre une disposition plus précise des éléments HTML : Attribut Valeur Effet Visuel ALIGN LEFT RIGHT CENTER JUSTIFY LEFT RIGHT CENTER JUSTIFY ID Attribue un nom au contenu de la balise (pour faire des liens) CLASS Assigne une classe au contenu (pour les feuilles de style) Les attributs s'utilisent de la manière suivante: <BALISES ATTRIBUT1=XXXXX ATTRIBUT2=XXXX> Texte </BALISE> Par exemple: <H1 ALIGN=LEFT> Texte aligné à gauche </H1> I II I. .2 2. .2 2 L Le es s P Pa ar ra ag gr ra ap ph he es s HTML considère les paragraphes comme des blocs de texte. La mise en page par blocs de texte est réalisée par l'intermédiaire de la paire de balises <p> et </p>. Cette balise accepte n'importe lequel des attributs vus précédemment. Balise Attribut Effet Visuel <br> retour à la ligne <p> et </p> paragraphe I II I. .2 2. .3 3 L Le es s l li is st te es s Une liste est un paragraphe structuré contenant une suite d'articles. Il en existe trois types: Ordonnée Non ordonnée De définition Voici leur syntaxe: Conteneur Type de liste Effet Visuel <ol> <li> article 1 </li> <li> article 2 </li> </ol> Ordonnée article 1 article 2 article 3 <ul> <li> article 1 </li> <li> article 2 </li> </ul> Non ordonnée article 1 article 2 article 3 <dl> <dt>Terme</dt> <dd>Définition</dd> De définition article 1 définition 1 article 2 Conception de Pages Web Dynamiques Avec PHP/MYSQL 7 </dl> définition 2 I II I. .3 3. . U Ut ti il li is sa at ti io on n d de e t ta ab bl le ea au ux x On a souvent besoin de présenter des informations mieux structurées qu'avec des listes. Les tableaux permettent de les afficher en lignes et en colonnes. Les tableaux sont définis comme étant des suites de lignes. Le tableau est encadré par les balises <TABLE> et </TABLE>. Le titre du tableau est encadrée par <CAPTION> </CAPTION> Chaque ligne est encadrée par <TR> </TR> (Table Row, traduisez par ligne du tableau). Les cellules d'en-tête sont encadrées par <TH> </TH> (pour Table Header : En-tête de tableau) Les cellules de valeur sont encadrées par <TD> </TD> (Table Data: Donnée de tableau) Par exemple le tableau: <TABLE BORDER="1"> <CAPTION> Voici le titre du tableau </CAPTION> <TR> <TH> Titre A1 </TH> <TH> Titre A2 </TH> <TH> Titre A3 </TH> <TH> Titre A4 </TH> </TR> <TR> <TH> Titre B1 </TH> <TD> Valeur B2 </TD> <TD> Valeur B3 </TD> <TD> Valeur B4 </TD> </TR> </TABLE> donne le résultat suivant: Voici le titre du tableau Titre A1 Titre A2 Titre A3 Titre A4 Titre B1 Valeur B2 Valeur B3 Valeur B4 I II I. .3 3. .1 1 L Le es s a at tt tr ri ib bu ut ts s Balises auxquelles il s'applique Valeur Effet Visuel THEAD TBODY TH TR TD CENTER LEFT RIGHT JUSTIFY centré gauche droite justifié ALIGN CAPTION TOP BOTTOM au-dessus en-dessous VALIGN (alignement vertical) THEAD TBODY TH TR TOP MIDDLE BOTTOM en haut au milieu en bas Conception de Pages Web Dynamiques Avec PHP/MYSQL 8 TD BORDER=n TABLE taille de la bordure CELLPADDING=n TABLE espacement de n pixels entre le contenu des cellules et son encadrement CELLSPACING=n TABLE Epaisseur de la grille intérieure FLOAT TABLE RIGHT LEFT Spécifie la position du texte qui suivra </TABLE> COLS=n TABLE Spécifie le nombre de colonnes FRAME (contrôle les éléments individuels d'encadrement du tableau) TABLE NONE TOP BOTTOM TOPBOT SIDES ALL aucun au-dessus en bas tout en haut sur les cotés tous COLSPAN THEAD TBODY TH TR TD Fait déborder les cellules sur les colonnes adjacentes ROWSPAN THEAD TBODY TH TR TD Fait déborder les cellules sur les lignes adjacentes I II I. .4 4. . L Le es s l li ie en ns s h hy yp pe er rt te ex xt te es s e et t a an nc cr ra ag ge e I II I. .4 4. .1 1 P Pr ré és se en nt ta at ti io on n d de es s a an nc cr ra ag ge es s Les ancrages (liens hypertextes) sont des éléments d'une page HTML (soulignés lorsqu'il s'agit de texte) qui emmènent dans un autre endroit lorsqu'on clique dessus. C'est ce qui permet de lier des pages Web entre elles. Les liens hypertextes permettent de naviguer: • vers un autre endroit du document • vers un fichier HTML situé à un emplacement différent sur la machine qui héberge la page • vers une autre machine L'attribut principal des ancrages est href. Il s'écrit sous la forme: <a href="Adresse ou URL"> .. </a> I II I. .4 4. .2 2 L Le es s s si ig gn ne et ts s On peut créer un signet dans une page c'est-à-dire marquer un endroit précis d'une page pour s'y rendre par hypertexte. Cela se fait grâce à l'attribut NAME ou ID (pour les browsers plus récents) Par exemple: <p id="signet"> ... </p> On l'appellera grâce au lien suivant: <a href="#signet"> ... </a> On peut ainsi se déplacer à un endroit précis sur une autre page: <a href="url/nom_du_fichier.html#signet"> ... </a> Conception de Pages Web Dynamiques Avec PHP/MYSQL 9 I II I. .5 5. . C Co om mm me en nt t a af ff fi ic ch he er r d de es s i im ma ag ge es s s su ur r u un ne e p pa ag ge e w we eb b? ? Quelques images sur votre site Web le rendront plus attractif. Cependant il ne faut pas sombrer dans l'excès car les images impliquent un temps de chargement assez long. On utilise la balise <IMG> pour inclure une image, il ne crée pas de retour à la ligne. Ses trois principaux attributs sont: • SRC: Indique l'emplacement de l'image (il est obligatoire) • ALIGN: Spécifie l'alignement de l'image par rapport au texte adjacent. Il peut prendre les valeurs: TOP, MIDDLE, et BOTTOM (au-dessus, au milieu et en-dessous) • ALT:Permet d'afficher un texte lorsque l'image ne s'affiche pas Ainsi pour insérer une image, il faudra saisir une balise du type suivant : <IMG SRC="url/image.gif|url/image.jpg" ALT="Texte remplaçant l'image"> Attribut Valeur Résultat SRC Adresse de l'image BORDER=n Nombre de pixels de la bordure. Sa couleur se définit dans l'attribut LINK ou TEXT de la balise <BODY>. Par défaut l'attribut Border vaut 1 ce qui crée un petit cadre autour de l'image. Pour ne pas avoir ce désagrément pensez à le définir comme étant égal à 0. VSPACE Nombre de pixels d'ajustement entre l'image et le texte au-dessus WIDTH Taille horizontale (en pixels ou en %). HEIGHT Taille verticale (en pixels ou en %). I II I. .6 6. . L Le es s f fo or rm mu ul la ai ir re es s e en n H HT TM ML L Les formulaires interactifs permettent aux auteurs de pages Web de dialoguer avec leurs lecteurs. Le lecteur saisit des informations en remplissant des champs ou en cliquant sur des boutons, puis appuie sur un bouton de soumission (submit). La balise FORM Les formulaires sont délimités par la balise <FORM> ... </FORM>, une balise qui permet de regrouper plusieurs éléments de formulaire (boutons,champs de saisie,...) et qui possède les attributs obligatoires suivants: • METHOD indique sous quelle forme seront envoyées les réponses "POST" est la valeur qui correspond à un envoi de données stockées dans le corps de la requête, tandis que "GET" correspond à un envoi des données codées dans l'URL, et séparées de l'adresse du script par un point d'interrogation (pour plus de renseignement sur les méthodes POST et GET, consultez l'article sur le protocole HTTP) • ACTION indique l'adresse d'envoi (script CGI ou adresse email (mailto:adresse.email@machine)). Voici quelques exemples de balises FORM: <FORM METHOD=POST ACTION="
[email protected]"> <FORM METHOD=GET ACTION="http://yahoo.fr"> A l'intérieur de la balise FORM... Conception de Pages Web Dynamiques Avec PHP/MYSQL 10 La balise FORM constitue en quelque sorte un conteneur permettant de regrouper des éléments qui vont permettre à l'utilisateur de choisir ou de saisir des données, ensemble de données qui seront envoyées à l'URL indiqué dans l'attribut ACTION de la balise FORM par la méthode indiquée par l'attribut METHOD. Il est possible d'insérer n'importe quel élément HTML de base dans une balise FORM (textes,boutons,tableaux,liens,...) mais il est surtout intéressant d'insérer des éléments interactifs. Ces éléments interactifs sont: • La balise INPUT: un ensemble de boutons et de champs de saisie • La balise TEXTAREA: une zone de saisie • La balise SELECT: une liste à choix multiples I II I. .6 6. .1 1 A At tt tr ri ib bu ut ts s d de e l la a b ba al li is se e F FO OR RM M e et t t ty yp pe es s d d' 'e en nt tr ré ée es s Balise Attribut Valeur Résultat Effet Visuel METHOD POST GET ACTION envoie à l'adresse indiquée <FORM> ... </FORM> ENCTYPE spécifie le type de codage utilisé submit effectue l'ACTION dans le balise <FORM> Haut du formulaire Envoyer Bas du formulaire text simple ligne de texte dont la longueur est donnée par l'attribut size Haut du formulaire Bas du formulaire reset efface le contenu du formulaire Haut du formulaire Rétablir Bas du formulaire radio bouton radio Haut du formulaire Bas du formulaire TYPE checkbox case à cocher Haut du formulaire Bas du formulaire NAME Nom <INPUT> SIZE Taille du texte NAME ROWS <TEXTAREA> ... </TEXTAREA> COLS Zone de texte Haut du formulaire Bas du formulaire <SELECT> <OPTION> ... </OPTION> NAME Haut du formulaire Choix 1 Bas du formulaire Conception de Pages Web Dynamiques Avec PHP/MYSQL 11 </SELECT> MULTIPLE Plusieurs choix possibles Haut du formulaire Choix 1 Bas du formulaire SELECTED Option par défaut <OPTION> ... </OPTION> VALUE Valeur forcée Haut du formulaire Choix 1 Choix 2 Choix 3 Bas du formulaire Conception de Pages Web Dynamiques Avec PHP/MYSQL 12 I II II I. . è èm me e C Ch ha ap pi it tr re e Le Langage JAVASCRIPT I II II I. .1 1. .I In nt tr ro od du uc ct ti io on n I II II I. .1 1. .1 1 D De e q qu uo oi i s s' 'a ag gi it t- -i il l ? ? Les ordinateurs ne font qu'exécuter des suites d'instructions qui ont été écrites par des programmeurs. Il suffit de leur demander d'exécuter autant de fois que nécessaire des tâches simples pour qu'ils le fassent sans broncher. Le problème du programmeur est donc d'une part de savoir comment s'adresser poliment à son ordinateur pour être entendu, et d'autre part de traduire ses attentes en une succession de tâches simples. Ceci se fait en utilisant un langage de programmation; celui que nous allons explorer est JavaScript. Dans ce chapitre vous trouverez les notions principales sur le javascript. Pour plus de détail consultez le site www.commentçamarche.com. I II II I. .1 1. .2 2 L Le e p pr re em mi ie er r s sc cr ri ip pt t Apprendre à dire bonjour pour voir comment JavaScript s'insère dans un document HTML. Traditionnellement on commence à étudier un langage de programmation en lui faisant afficher le message "Bonjour !". C'est ce que nous allons faire ici, pour découvrir les liens entre les langages JavaScript et HTML. I II II I. .1 1. .3 3 J Ja av va aS Sc cr ri ip pt t e et t H HT TM ML L Le langage HTML est un langage de description de pages Web. Il permet mettre des textes en forme, d'insérer des images, de créer des liens hypertextes, etc... Cependant, lorsqu'un document HTML est écrit, il affiche toujours les mêmes choses de la même façon. Le langage JavaScript est une extension du langage HTML qui permet de calculer ce qui doit être affiché en fonction des circonstances. Par exemple, si nous désirons créer un document HTML qui affiche la date, nous devons modifier le fichier HTML utilisé chaque jour. Grâce à JavaScript nous pourrons au contraire indiquer une seule fois comment calculer la date et donc l'afficher correctement. En ce sens, JavaScript permet de générer dynamiquement du code HTML. I II II I. .2 2. .P Pr re em mi ie er r e ex xe em mp pl le e a av ve ec c J Ja av va aS Sc cr ri ip pt t Pour obtenir la même chose avec JavaScript, nous gardons la même structure de fichier, il nous suffit de demander à JavaScript d'afficher le code HTML de la ligne contenant "Bonjour tout le monde !". Cela se fait à l'aide de l'instruction document.write suivie de parenthèses contenant le code HTML entre guillemets. Cependant nous devons commencer par indiquer au navigateur que nous allons utiliser une instruction JavaScript. Cela se fait en utilisant la balise HTML <SCRIPT LANGUAGE="JavaScript"></SCRIPT>. <HTML> <HEAD><TITLE>Bonjour en JavaScript</TITLE></HEAD> <BODY> <SCRIPT LANGUAGE="JavaScript"> document.write("<B>Bonjour tout le monde !</B>"); </SCRIPT> </BODY> </HTML> Conception de Pages Web Dynamiques Avec PHP/MYSQL 13 I II II I. .2 2. .1 1 M Me et tt tr re e l le e c co od de e J Ja av va aS Sc cr ri ip pt t d da an ns s u un n f fi ic ch hi ie er r Il est possible d'écrire le code JavaScript dans un fichier externe d'extension .js. Pour l'exemple précédent, il suffit de créer un fichier nommé bonjour.js contenant la ligne : Dans le fichier html, l'appel à JavaScript se fera simplement avec la ligne : Cette possibilité se révèle utile lorsqu'on a des portions de code qui se répètent souvent. I II II I. .3 3. .D Di if ff fé ér re en nt ts s t ty yp pe es s d d' 'e ex xp pr re es ss si io on ns s Nous avons utilisé l'instruction document.write pour afficher une expression écrite entre guillemets. Celles-ci indiquent que ce qu'elles entourent est du code HTML que le navigateur va interpréter. Il est aussi possible d'utiliser des expressions sans guillemets. Dans ce cas JavaScript va essayer de les interpréter directement avant de les transmettre au navigateur. Les expressions mathématiques permettent de comprendre ce processus. L'instruction document.write("12+5*3"); provoque l'affichage du texte 12+5*3. Par contre, l'instruction document.write(12+5*3); provoque l'affichage du texte 27. Observons le script suivant. document.write("<BIG><B>B</B></BIG>onjour tout le monde !"); document.write("<BR>Un petit calcul : "); document.write("12+5*3 = "); document.write(12+5*3); document.write("<BR>Un peu de logique : "); document.write("5*4=19 ?? "); document.write(5*4==19); </SCRIPT> On obtient l'affichage suivant : Bonjour tout le monde ! Un petit calcul : 12+5*3 = 27 Un peu de logique : 5*4=19 ?? false I II II I. .4 4. .L Le es s v va ar ri ia ab bl le es s I II II I. .4 4. .1 1 L Le es s t ty yp pe es s d de e v va ar ri ia ab bl le es s On peut classer les variables selon le type de leur contenu : • chaîne de caractères • valeur numérique • valeur booléenne • objet Pour utiliser une variable, il est conseillé de la déclarer et de lui donner un contenu initial. Cela se fait en utilisant le mot var et le signe =. Par exemple : var v1="Flen"; La variable nommée v1 contient la chaîne de caractères "Flen". var v2=18; La variable nommée v2 contient la valeur numérique 18. var v3=true; La variable nommée v3 contient la valeur booléenne true. I II II I. .4 4. .2 2 O Op pé ér ra at ti io on ns s s su ur r l le es s v va ar ri ia ab bl le es s Les variables numériques peuvent être utilisées dans des expressions mathématiques faisant intervenir les quatre opérations élémentaires. Les variables contenant des chaînes de caractères peuvent être ajoutées, cette opération se nomme la concaténation, elle consiste à construire une nouvelle chaîne de caractères en en assemblant deux. Ainsi, si v1="bonjour " et v2="Flen", alors v1+v2 est la chaîne de caractères contenant "bonjour Flen". Les variables booléennes peuvent être combinées à l'aide des opérations logiques non, et, ou respectivement notées !, &&, ||. Conception de Pages Web Dynamiques Avec PHP/MYSQL 14 Observons le comportement de l'opérateur + lorsqu'il est en présence d'expressions de types différents en exécutant le script suivant. <SCRIPT LANGUAGE="JavaScript"> var v1="12"; var v2=5; document.write("La variable v1 contient : ",v1,"<BR>"); document.write("La variable v2 contient : ",v2,"<BR>"); document.write("Avec v1+v2 on obtient :",v1+v2,"<BR>"); document.write("Avec v2+v1 on obtient : ",v2+v1,"<BR>"); </SCRIPT> On obtient l'affichage suivant: La variable v1 contient : 12 (chaîne de caractères) La variable v2 contient : 5 (nombre) Avec v1+v2 on obtient :125 Avec v2+v1 on obtient : 512 I II II I. .5 5. .L La a f fo on nc ct ti io on n e ev va al l Il arrive souvent que l'on doive interpréter une chaîne de caractères (par exemple une saisie de l'utilisateur) comme étant une valeur numérique. JavaScript permet de réaliser cette opération avec la fonction eval. Observons l'effet du script suivant. <SCRIPT LANGUAGE="JavaScript"> var v1="12"; var v2=5; document.write("La variable v1 contient : ",v1,"<BR>"); document.write("La variable v2 contient : ",v2,"<BR>"); document.write("Avec v1+v2 on obtient :",v1+v2,"<BR>"); document.write("Avec eval(v1)+v2 on obtient : ",eval(v1)+v2,"<BR>"); </SCRIPT> On obtient l'affichage suivant: La variable v1 contient : 12 La variable v2 contient : 5 Avec v1+v2 on obtient :125 Avec eval(v1)+v2 on obtient : 17 I II II I. .6 6. .L La a f fo on nc ct ti io on n p pr ro om mp pt t Il arrive souvent que le contenu d'une variable doive être choisi par l'utilisateur du programme, et non par le programmeur. La fonction prompt() fournit une façon de réaliser cette opération avec JavaScript. Elle attend en paramètre deux chaînes de caractères: la première servira de message d'invite et la seconde de réponse proposée par défaut. Observons le script suivant. <SCRIPT LANGUAGE="JavaScript"> var nom; nom=prompt("Quel est ton nom ?",""); document.write("<BIG><B>B</B></BIG>onjour "+nom+" !<BR>"); </SCRIPT> Exemple: afficher le périmetre nsi qu'air d'un carré en introduisant son côté var cote; cote=prompt("Côté du carré : ",""); var perim=4*cote; var aire=cote*cote; document.write("<BR>Côté du carré : ",cote); document.write("<BR>Périmètre : ",perim); document.write("<BR>Aire : ",aire); Conception de Pages Web Dynamiques Avec PHP/MYSQL 15 I II II I. .7 7. .D Dé éf fi in ni ir r d de e n no ou uv ve el ll le es s f fo on nc ct ti io on ns s JavaScript permet de créer simplement de nouvelles fonctions qui permettent de répéter plusieurs fois les mêmes suites d'instructions. Il est parfois utile de regrouper un certain nombre d'instructions dans un bloc réutilisable plusieurs fois. Cela se fait en définissant des fonctions qui pourront être utilisées comme les fonctions prédéfinies de JavaScript. I II II I. .7 7. .1 1 S St tr ru uc ct tu ur re e g gé én né ér ra al le e Une fonction est une suite d'instructions à laquelle on a donné un nom. Elle peut éventuellement renvoyer un résultat et utiliser des paramètres. Pour la définir, c'est à dire indiquer la suite d'instructions à exécuter lorsqu'on l'appelle, on utilise le mot-clé function. On définit une fonction de la façon suivante : • La suite d'instructions à exécuter se trouve entre deux accolades. • La liste de paramètres est facultatives, mais on doit écrire les parenthèses même s'il n'y a pas de paramètres. • La ligne "return résultat;" n'est utilisée que si la fonction renvoie un résultat. Définir une fonction ne provoque pas son exécution immédiate. Cela donne simplement la possibilité de l'appeler ultérieurement comme toute fonction JavaScript déjà définie, document.write(), eval() ou prompt(). Il peut être intéressant de définir des fonctions personnelles dans un fichier externe .js qui pourra être utilisé comme une bibliothèque avec plusieurs documents HTML. Exemple: Le nombre secret <HTML> <HEAD> <TITLE>Nombre secret</TITLE> </HEAD> <BODY> <SCRIPT LANGUAGE="JavaScript"> //nombre entre 0 et 99 var secret=Math.round(Math.random()*100); //nombre d'essais var nbEssais=0; //fonction de contrôle de la réponse function control() { nbEssais++; var n=document.formu.prop.value; if (isNaN(n)) alert("Entrer un nombre !"); else { var nb=eval(n); var S="Essai "+nbEssais+" : "; if (nb==secret) S+="Bonne réponse !!!"; else if (nb < secret) S+="Trop petit."; else S+="Trop grand."; document.formu.reponse.value=S; } } </SCRIPT> Conception de Pages Web Dynamiques Avec PHP/MYSQL 16 <H1>Le nombre secret</H1> <HR> <P>L'ordinateur a choisi un nombre entier inférieur à 100. A vous de le retrouver le plus rapidement possible en proposant des nombres et en tenant compte des réponses fournies.</P> <FORM NAME="formu"> <DIV ALIGN="center"> <B>Nombre proposé : </B> <INPUT NAME="prop" TYPE="text" SIZE="5"> <INPUT TYPE="button" VALUE="Contrôle" ONCLICK="control()"> <BR> <INPUT NAME="reponse" TYPE="text" SIZE="30" READONLY> </DIV> </FORM> <HR> <A HREF="nbsecret.html">Autre partie</A> </BODY> </HTML> I II II I. .8 8. .L Le es s f fo or rm mu ul la ai ir re es s é él lé ém me en nt ta ai ir re es s Nous avons vu que la fonction prompt permet à l'utilisateur d'entrer des données. Une autre méthode consiste à utiliser un formulaire HTML contenant des lignes de saisie, une zone de réponse et un bouton de déclenchement des calculs. Ceci nous amènera à définir des fonctions associées à l'évènement ONCLICK du bouton. I II II I. .8 8. .1 1 I In nt te er rp pr ré ét te er r u un n f fo or rm mu ul la ai ir re e Le langage HTML permet de construire des formulaires; JavaScript permet d'exploiter et de modifier leur contenu. Nous allons étudier cette possibilité en construisant un document permettant de convertir des Euros en Francs. a. Formulaire HTML Commençons par construire le formulaire HTML de façon classique. On obtient la page suivante : <HEAD><TITLE>Euro-Franc</TITLE></HEAD> <BODY> <H1>Conversion Euro-Franc</H1><HR> <FORM><TABLE><TR><TD> Valeur en Euros :</TD><TD> <INPUT TYPE="text" SIZE="10"></TD></TR><TR><TD> Valeur en Francs :</TD><TD> <INPUT TYPE="text" SIZE="10"></TD></TR><TR> <TD COLSPAN="2"><DIV ALIGN="center"> <INPUT TYPE="button" VALUE="Convertir"></TD></TR> </TABLE></FORM> </BODY> </HTML> Le formulaire s'affiche bien, mais cliquer sur le bouton "Convertir" ne provoque aucune réaction. b. Traitement avec JavaScript JavaScript va nous permettre de récupérer le contenu de la zone de saisie euro, d'effectuer la conversion en francs et d'afficher le résultat dans la zone de saisie franc lors de chaque clic sur le bouton "Convertir". Conception de Pages Web Dynamiques Avec PHP/MYSQL 17 c. Nommer les composants Pour pouvoir faire référence au formulaire et à ses composants, il est possible de les nommer en utilisant l'attribut NAME des balises correspondantes. Le formulaire sera nommé "formu" en écrivant : <FORM NAME="formu"> La zone de saisie du montant en euros sera nommée "euro" en écrivant : <INPUT NAME="euro" TYPE="text" SIZE="10"> La zone de saisie du montant en francs sera nommée "franc" en écrivant : <INPUT NAME="franc" TYPE="text" SIZE="10"> d. Accès aux composants L'accès au contenu des composants se fait à travers une cascade d'objets associés. Il y a d'abord l'objet document. 1. L'objet document possède un champ-objet nommé formu qui représente le formulaire. 2. L'objet formu possède à son tour un champ-objet nommé euro qui représente la zone de saisie du montant en euros. 3. L'objet euro possède enfin un champ nommé value qui représente son contenu. Ainsi, pour obtenir le contenu de la zone de saisie du montant en euros, on écrira : document.formu.euro.value De même, pour faire référence au contenu de la zone de saisie du montant en francs, on écrira : document.formu.franc.value e. Ecriture de la fonction de conversion Ecrivons maintenant la fonction conversion() qui sera chargée de lire le montant en euros, de le convertir en francs et d'afficher la réponse dans la zone de saisie du montant en francs. Elle peut prendre la forme suivante : function conversion() { //lire la valeur euro var eu=eval(document.formu.euro.value); //conversion et arrondi var fr=eu*6.55957; fr=Math.round(fr*100)/100; //affichage du résultat document.formu.franc.value=String(fr); } Nous avons utilisé la fonction Math.round pour obtenir l'arrondi entier d'un nombre à virgule. La formule "fr=Math.round(fr*100)/100;" permet d'obtenir un arrondi au centième près. f. Association clic bouton / appel fonction Il nous reste à indiquer que chaque clic sur le bouton "Convertir" doit provoquer l'exécution de la fonction conversion(). Cela s'obtient en utilisant l'attribut ONCLICK du bouton. On écrira donc : Conception de Pages Web Dynamiques Avec PHP/MYSQL 18 <INPUT TYPE="button" VALUE="Convertir" ONCLICK="conversion()"> g. Résultat final Il nous suffit de regrouper tous les éléments précédents pour obtenir le résultat escompté. Le fichier HTML a le contenu suivant : <HTML> <HEAD><TITLE>Euro-Franc</TITLE></HEAD> <BODY> <SCRIPT LANGUAGE="JavaScript"> function conversion() { //lire la valeur euro var eu=eval(document.formu.euro.value); //conversion et arrondi var fr=eu*6.55957; fr=Math.round(fr*100)/100; //affichage du résultat document.formu.franc.value=String(fr); } </SCRIPT> <H1>Conversion Euro-Franc</H1><HR> <FORM NAME="formu"><TABLE><TR><TD> Valeur en Euros :</TD><TD> <INPUT NAME="euro" TYPE="text" SIZE="10"></TD></TR><TR><TD> Valeur en Francs :</TD><TD> <INPUT NAME="franc" TYPE="text" SIZE="10"></TD></TR><TR> <TD COLSPAN="2"><DIV ALIGN="center"> <INPUT TYPE="button" VALUE="Convertir" ONCLICK="conversion()"> </TD></TR></TABLE></FORM> </BODY> </HTML> I II II I. .9 9. .L Le es s c co on nd di it ti io on ns s I II II I. .9 9. .1 1 U Ut ti il li is sa at ti io on n d de e i if f La syntaxe de l'instruction if prend la forme suivante : if (expression booléenne) { instruction 1; instruction 2; ... } else { instruction 1; instruction 2; ... } Lorsque l'expression booléenne prend la valeur true, c'est le premier groupe d'instructions qui est exécuté. Dans le cas contraire, (false), c'est le deuxième groupe d'instructions, situé après le mot-clé else, qui est exécuté. L'expression booléenne doit toujours être écrite entre des parenthèses. Les deux groupes d'instructions sont écrits entre des accolades; celles-ci peuvent être supprimées pour les groupes ne contenant qu'une seule instruction. Le mot-clé else et le groupe d'instructions associé sont facultatifs; s'ils ne sont pas utilisés, aucune instruction n'est exécutée lorsque l'expression booléenne prend la valeur false. Conception de Pages Web Dynamiques Avec PHP/MYSQL 19 I II II I. .9 9. .2 2 U Ut ti il li is sa at ti io on n d de e s sw wi it tc ch h L'instruction switch permet de faire exécuter certaines instructions selon la valeur prise par une variable. Elle prend la forme suivante : switch (variable) { case val1 : instructions case val2 : instructions case val3 : instructions ...... default : instructions } Dès que la variable testée prend l'une des valeurs proposées, les instructions correspondant à cette valeur et aux valeurs suivantes sont exécutées. Si aucune valeur n'est reconnue, ce sont les instructions correspondant à default qui sont exécutées. La variable testée doit être écrite entre parenthèses. L'ensemble des instructions correspondant aux différentes valeurs possibles doit être écrit entre des accolades. Pour que seules les instructions correspondant à une valeur soient exécutées, on utilise le mot-clé BREAK qui permet de sortir directement de la structure switch. I II II I. .1 10 0. . L Le es s b bo ou uc cl le es s I II II I. .1 10 0. .1 1 B Bo ou uc cl le e f fo or r L'instruction for prend la forme générale suivante : for (initialisation; condition; transition) { instruction1; instruction2; .... } Les instructions situées entre accolades forment la boucle qui sera exécutée. Les accolades ne sont nécessaires que lorsqu'il y a plusieurs instructions. La première partie, située entre parenthèses, contient 3 parties : • initialisation: instruction exécutée avant le premier passage dans la boucle. • condition: expression booléenne qui commande les passages dans la boucle qui se font tant qu'elle vaut true. • transition: instruction qui est exécutée avant chaque nouveau passage dans la boucle. On utilise en général les boucles for lorsque le nombre de passage dans la boucle est connu dès le départ. C'est un compteur (souvent une variable nommée i) qui sert à déterminer le nombre de passages. Ainsi, pour répéter n fois une suite d'instructions, on utilisera le modèle suivant : for (var i=0; i<n; i++) { instruction1; instruction2; .... } Le compteur i part de 0. Grâce à l'instruction i++ il est incrémenté (augmenté d'une unité) avant chaque nouveau passage. La boucle n'est plus exécutée lorsqu'il prend la valeur n. Comme on est parti de 0, le nombre de passage dans la boucle est bien égal à n. Conception de Pages Web Dynamiques Avec PHP/MYSQL 20 I II II I. .1 10 0. .2 2 B Bo ou uc cl le e w wh hi il le e L'instruction while prend la forme générale suivante : while (condition) { instruction1; instruction2; ..... } La condition, toujours écrite entre parenthèses, est une expression booléenne. Tant que cette expression est égale à true la boucle formée par les instructions écrites entre accolades est répétée. Attention : les instructions formant la boucle doivent modifier la valeur de la condition pour que l'exécution puisse s'arrêter. L'instruction while peut aussi prendre la forme : do { instruction1; instruction2; ..... } while (condition) Comme dans la forme précédente, la boucle formée par les instructions entre accolades est répétée tant que l'expression booléenne représentant la condition est égale à true. I II II I. .1 11 1. . L Le es s t ta ab bl le ea au ux x Lorsqu'un programme nécessite la création de nombreuses variables, on les regroupe dans des tableaux. Chaque variable correspond alors à un indice et il est facile de parcourir le tableau en utilisant une boucle. Vous pouvez créer vos propres tableaux ou utiliser ceux que JavaScript définit pour stocker certaines informations. I II II I. .1 11 1. .1 1 C Cr ré éa at ti io on n Les tableaux JavaScript sont des objets de type Array. La création d'un tableau se fait donc en utilisant le mot-clé new. On peut donc créer un tableau T en écrivant : var T=new Array(); Le tableau T sera alors vide. Si le nombre d'éléments du tableau est connu, on écrira, par exemple : var T=new Array(5); Le tableau T pourra alors contenir 5 éléments. Il est enfin possible de créer un tableau en indiquant directement son contenu. Par exemple, pour créer le tableau nommé jours qui contiendra les noms des jours de la semaine, on pourra écrire : var jours=["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"]; I II II I. .1 11 1. .2 2 U Ut ti il li is sa at ti io on n Pour avoir accès, en lecture ou en écriture, à un élément d'un tableau on utilise le nom du tableau et l'indice de l'élément qui est un entier indiquant sa position. Ainsi, avec le tableau jours créé précédemment, on pourra écrire : jours[i] Conception de Pages Web Dynamiques Avec PHP/MYSQL 21 pour obtenir le nom du jour d'indice i. L'indice est toujours placé entre deux crochets. Attention, les indices commencent à 0; le premier élément du tableau a donc l'indice 0, le deuxième a l'indice 1, etc... On utilise la même notation (avec les crochets) pour lire le contenu d'un tableau et pour donner une valeur à un élément. Par exemple, pour créer un tableau de 5 nombres, on pourra écrire : var T=new Array(5); T[0]=12; T[1]=15; T[2]=7; T[3]=14; T[4]=10; I II II I. .1 11 1. .3 3 Q Qu ue el lq qu ue es s p pr ro op pr ri ié ét té és s e et t m mé ét th ho od de es s d de es s o ob bj je et ts s t ta ab bl le ea au ux x Les tableaux étant des objets ils disposent de propriétés et de méthodes dont l'utilisation peut se révéler intéressante. a. Propriété length La propriété length d'un tableau indique le nombre d'éléments qu'il contient. Par exemple, pour connaître le nombre d'éléments d'un tableau T, on écrira : var n=T.length; b. Méthode join() La méthode join() permet de regrouper tous les éléments d'un tableau dans une seule chaîne de caractères. Par défaut le séparateur est une virgule, on peut en choisir un autre en l'indiquant comme paramètre. Par exemple, si le tableau T contient les nombres 1, 3 et 5 : l'appel de T.join() fournira la chaîne de caractères "1,3,5". l'appel de T.join(" et ") fournira la chaîne de caractères "1 et 3 et 5". c. Méthode split() des chaînes de caractères Les objets chaînes de caractères possèdent une méthode split() qui réalise l'opération contraire de join(). Elle découpe une chaîne de caractères et renvoie le résultat dans un tableau. Le séparateur utilisé doit être fourni en argument. Par exemple, si la chaîne de caractères S contient "1,3,5", S.split(",") renvoie un tableau de 3 éléments qui sont "1", "3" et "5". d. Méthode reverse() La méthode reverse() des tableaux fournit un nouveau tableau contenant les mêmes éléments mais dans l'ordre inverse. Par exemple, si le tableau T contient 1, 3 et 5, le tableau T.reverse() contient 5, 3 et 1. e. Méthode sort() La méthode sort() des tableaux permet de les trier en utilisant l'ordre lexicographique (ordre du dictionnaire). Par exemple, si le tableau T contient les chaînes de caractères "encore", "avec" et "dans", l'appel de T.sort() modifiera l'ordre des éléments en "avec", "dans" et "encore". La méthode sort peut utiliser en argument un nom de fonction de comparaison. Celle-ci doit comparer deux variables a et b et renvoyer 1 si a est après b, -1 si a est avant b et 0 si a et b ont même rang. Exemple d'application Conception de Pages Web Dynamiques Avec PHP/MYSQL 22 L'exemple suivant construit un tableau à partir d'une liste de mots, compte le nombre de mots, inverse l'ordre des mots et place les mots dans l'ordre alphabétique. <HTML> <head><title>Méthodes des tableaux</title></head> <body> <h1>Méthodes des tableaux</h1></HR> <SCRIPT LANGUAGE="JavaScript"> var S="poire orange abricot pomme fraise raisin"; var T=S.split(" "); document.writeln("<P>Liste de mots : ",S,"</P>"); var n=T.length; document.writeln("<P>Il y a ",n," mots dans la liste.</P>"); document.writeln("<P>Ordre inverse : ", T.reverse().join(" ")); T.sort(); document.writeln("<P>Ordre alphabétique : ",T.join(" ")); </SCRIPT> </body></HTML> Conception de Pages Web Dynamiques Avec PHP/MYSQL 23 I IV V. . e em me e C CH HA AP PI IT TR RE E Le Langage PHP I IV V. .1 1. . O Or ri ig gi in ne e d de e P PH HP P De simple idées aboutissent à de magnifiques créations. PHP est né avec le site de RASMUS Lerdof en 1994: une page personnelle, avec son CV qui permettait à l'origine de conserver une trace des visiteurs. A l'époque PHP supportait déjà des requêtes SQL et, comme cela arrive souvent sur le Web, des internautes ont rapidement voulue leur propre copie de programmes. Rasmus a donc décidé de mettre en ligne sa première version 1.0 de PHP (Personal Home Page). La version 2.0 permet au développeur d'intégrer des instructions de programmation puissantes directement dans du code HTML. En janvier 1999, plus de 100.000 sites ont adopté le langage PHP. Une communauté de développeurs s'est crée autour du langage. De nouvelles fonctions ont ainsi pu voir le jour et de nombreux bugs ont été rapidement résolus. La version 3.0 sortit le 6 juin 1998. La version PHP4 est sorti en Avril 2000 quant à la version PHP5 vit le jour en 2003. I IV V. .2 2. . D De es sc cr ri ip pt ti io on n La souplesse et la performance de PHP n'est plus à prouver. De nombreux sites dans le monde, et parmi eux de très nombreuses applications professionnelles ont choisi PHP. Lorsqu'on réalise de sites Internet dynamiques, on est vite amené à utiliser une base de données pour stocker des informations. Il existe de multiple de bases de données utilisables avec PHP, Mais le MYSQL est très largement diffusé sur Internet. MYSQL est un système de gestion de base de données (SGBD). Cela signifie que c'est un ensemble d'applications permettant de manipuler les données (ajout, suppression, modification, et lecture), mais aussi d'en contrôler l'accès. Il est donc tout naturel que les sites interactifs fassent appel au serveur de base de données gratuit MySQL. I IV V. .3 3. . I In ns st ta al ll la at ti io on n Pour pouvoir utiliser PHP, il y a tout un tas de fichiers à installer... serveur Apache, PHP, MySQL, PhpMyAdmin... heureusement, quelqu'un a pensé à simplifier ça ! Installer EasyPhP 1. Allez sur le site www.easyphp.org, téléchargez le logiciel gratuit EasyPHP... Exécutez-le après avoir éventuellement désactivé le PWS , une nouvelle icône apparaît à côté de l'heure en bas de l'écran indiquant que Easyphp est actif (par défaut Apache, PHP et MySQL aussi); 2. Créez sur votre PC un dossier essais dans le dossier racine ...\EasyPHP\www\ ; C'est dans ce dossier que vous mettrez les fichier *.PHP. 3. Recopiez dans un éditeur la source suivante puis enregistrez sous le nom essai_1.php attention à l'extension ! dans le dossier essais ; Conception de Pages Web Dynamiques Avec PHP/MYSQL 24 <HTML><HEAD><TITLE>Essai 1</TITLE> </HEAD><BODY> Nous sommes le <? echo date("d/m/Y"); ?> </BODY></HTML> 4. Exécutez en tapant l'URL http://localhost/essais/essai_1.php dans le navigateur... demandez la connexion si nécessaire (elle sera interne donc gratuite) et la date courante doit apparaître ; Autre possibilité : click droit sur l'icône, puis Web local qui liste vos dossiers du www... Remarques 1. Pour pouvoir produire un fichier php il faut avoir paramétré Windows afin qu'il affiche toutes les extensions sinon un .txt risque d'être ajouté ! (Menu du dossier : Outils > Options des dossiers... > Affichage) 2. "L'exemple n'affiche pas la date !" : Jusque là, vous cliquiez sur l'icône de votre page html pour lancer le navigateur et l'afficher... Ce n'est plus le cas avec vos pages asp ou php, il faut se connecter au serveur interne en tapant dans la barre d'adresses de votre navigateur une URL complète: http://localhost/essais/essai_1.php. 3. Le navigateur peut parfois afficher le dialogue de connexion, comme pour aller sur le Web, et il faut alors choisir "Se connecter" mais ce sera une connexion interne, donc gratuite ! Si la date ne s'affiche pas, c'est que vous n'êtes pas connecté au serveur interne, inutile donc d'aller plus loin, relisez cette fiche et REESSAYEZ!!! Astuce : Internet Explorer affiche Intranet local en bas de fenêtre, si vous êtes correctement connecté ! 4. Les deux serveurs PWS (ou IIS) et Apache ne fonctionnent pas ensemble à moins qu'ils ne soient sur des ports différents... donc: - soit vous pensez à désactiver l'un avant d'activer l'autre (click droit sur leurs icônes respectives) ; - soit vous mettez Apache sur le port 81 en modifiant le fichier ...\EasyPHP\apache\conf\httpd.conf et vous utilisez alors http://localhost:81/ au début de vos URL locales pour le PHP. 5. Pour faire démarrer PHPMY Admin: dans IE taper http://127.0.0.1/mysql/ I IV V. .4 4. . M Mi is se e e en n p pr ra at ti iq qu ue e d de e P PH HP P La notation en PHP n'est pas très difficile. Le code PHP est simplement inséré au sein d'un document HTML tout à fait classique. L'important est que vous signaliez qu'il s'agit de code Php avec des balises comme ci-dessous: <?php <?php …Instructions PHP ou …Instructions PHP ?> ?> Premiers scripts : Afficher du texte: A partir du moment où vous placez du code PHP dans un fichier *.htm ou *.html, vous devrez renommer ce fichier en *.php. Pour que le serveur analyse et exécute les requête PHP. Si vous ne faites pas cette Conception de Pages Web Dynamiques Avec PHP/MYSQL 25 manipulation, le code risque d'apparaître en toute lettre dans le navigateur sans être exécuter par le serveur. <html> <head> </head> <body> <p> <?php echo "Bienvenue à l'IFP""; <? </p> </body> </html> Essayez: <?php echo "hello word ! <br> bonjour monde !" ?> C'est la fonction echo que nous utiliserons pour afficher du texte à l'écran. Ici, on voit bien que la phrase n'est pas du tout formatée, voici donc comment l'on peut inclure les balises HTML dans le PHP (ci- dessous). Notez qu'une instruction PHP se termine par un point virgule(;). <?php echo"<font face=\"arial\" size="2\" color=\"#003300\"> Bienvenue à l'IFP!</font>"; <? Nous avons ajouté la balise Font comme en HTML pour formater le texte, la grosse différence, étant l'ajout des antislash avant chaque caractère spécial. Exemple: " devient \", il s'agit tout simplement de dire à PHP qu'il ne s'agit pas d'un élément de la syntaxe du script mais bien d'une apostrophe ou guillemet qu'il faut pas afficher. <br> est une balise HTML qui permet le saut de ligne. <html> <head> </head> <body> <p> <?php /* commentaire de 2 lignes */ echo "hello word !", "<br>" ; echo "bonjour" ; // commentaire de fin de ligne echo " monde !" # commentaire de fin de ligne ?> </p> </body> </html> I IV V. .5 5. . L La a n no ot ti io on n d de e v va ar ri ia ab bl le e Une variable permet de définir une valeur qui peut être modifiée tout au long de l'exécution du script, alors qu'une constante possède une valeur fixe qui n'est définie qu'une seule fois. Les variables peuvent contenir plusieurs types de données : entier, double et chaîne. $variable = 5; // entier $variable = 5.0 // double $variable = "5"; // chaîne Conception de Pages Web Dynamiques Avec PHP/MYSQL 26 I IV V. .5 5. .1 1 D Dé éf fi in ni ir r d de es s v va ar ri ia ab bl le es s Pour définir des variables, il suffit de lui assigner une valeur. Pour cela, il faut utiliser la syntaxe suivante : $nom_de_la_variable = "valeur"; // chaîne valeur $nom_de_la_variable = 10; // entier valeur Attention toutefois, $Variable ne correspond pas a $variable, ce sont deux variables différentes. Pour récupérer une variable, on l'appelle tout simplement par son nom : echo $variable; echo "Texte avant $variable Texte après"; echo "Texte avant " . $variable . " Texte après"; On peut faire des opérations sur les variables . $a = 10; $b = 15; $c = $a + $b; echo $c; ou encore: $a=20; $b=$a/2; echo $b; I IV V. .5 5. .2 2 A Af ff fi ic ch he er r l la a d da at te e d du u j jo ou ur r e et t l l' 'h he eu ur re e e en n c co ou ur rs s La fonction date() permet d'obtenir l'heure local du serveur mais attention l'heure local est fonction de la situation géographique du serveur n lui-même. En effet, un serveur situé au Canada vous donnera l'heure du Canada. Nous utilisons pour cela la fonction date(): <? $date = date("d-m-y"); $heure = date("H:i"); echo "Nous sommes le $date() et il est $heure"; ?> Dans le code ci-dessus nous générons la variable $date en lui donnant la valeur de ce que retourne la fonction date("d-m-y"): le jour, le mois et l'année. Les paramètres contenues entre les parenthèses d-m-y peuvent être placés dans l'ordre que vous désirez. Astuce pratique: Vous voudrez peut être remplacer le":" par un "h" pour que le format Français soit vraiment respecté (ex: 13h15), dans ce cas il suffit de procéder ainsi : date("H\hi"), remarquez l'antislash devant le deuxième "h", en effet, il faut spécifier à PHP que cette lettre est un caractère à afficher et non à nouveau l'heure en cours, on y place un backslash comme devant tous les caractères spéciaux qui ne doivent pas être interprétés comme du code. Pas de déclaration de variable: <html> <head> Conception de Pages Web Dynamiques Avec PHP/MYSQL 27 </head> <body> <p> <?php $a = 3; echo "\$a = $a<br>" ; $a = 3.3; echo "\$a = $a<br>" ; $a = "3a"; echo "\$a = $a<br>" ; echo "\$b = $b<br>" ; ?> </p> </body> </html> • EXECUTION $a = 3 $a = 3.3 $a = 3a les variables en PHP n'ont pas besoin d'être déclarées, o on peut commencer à les utiliser sans en avoir averti l'interpréteur au préalable ! o si la variable existait précédemment, son contenu est utilisé, o sinon l'interpréteur lui affectera la valeur en lui assignant NULL par défaut o Il n'est pas nécessaire en PHP de typer les variables, c'est-à-dire de définir leur type, il suffit de leur assigner une valeur pour en définir le type. I IV V. .5 5. .3 3 v va ar ri ia ab bl le e a af ff fe ec ct té ée e o ou u n no on n <?php echo "variable non declaree isset : " ; echo isset($b); echo "<br>" ; $b = NULL; echo "variable NULL isset : " ; echo isset($b); echo "<br>" ; $b = 13; echo "variable a valeur $b isset : " ; echo isset($b); echo "<br>" ; unset($b); echo "apres unset(\$b) isset : " ; echo isset($b); echo "<br>" ; ?> • EXECUTION variable non déclarée isset : variable NULL isset : variable a valeur 13 isset : 1 après unset($b) isset : • isset(variable): détermine si une variable est affectée/définie, renvoie TRUE , sinon FALSE • unset(variable) : détruit une variable unset() à l'intérieur d'une fonction n'a pas la même portée de destruction suivant le type de variable I IV V. .5 5. .4 4 D Dé éf fi in ni ir r d de es s c co on ns st ta an nt te es s Pour définir des constantes, on utilise la fonction define(). La plupart du temps, le nom d'une constante est en majuscule. Par la suite, si vous souhaitez récupérer la valeur d'une constante, il suffit de l'appeler par Conception de Pages Web Dynamiques Avec PHP/MYSQL 28 son nom : <?php define("PI", 3.1416); define("BR", "<br>"); echo PI; echo BR; $a = 2 * PI ; echo $a; echo BR; ?> • EXECUTION 3.1416 6.2832 Une constante est une valeur fixe nommée : • l'identificateur suit la syntaxe PHP des identificateurs sans le $ !! • la valeur est integer, boolean, flot ou string • sa portée est globale I IV V. .5 5. .5 5 U Un ne e v va ar ri ia ab bl le e E Ex xi is st te e o ou u p pa as s Pour vérifier si une variable existe, on utilise la fonction empty() qui renvoie true si elle existe et false sinon. $variable = "a"; if(empty($variable)) echo "existe"; else echo "n'existe pas"; Pour vérifier si une constante existe, il faut utiliser dans ce cas la fonction defined() qui renvoie true en cas de réussite et false sinon. define("CONSTANTE","a"); if(defined("CONSTANTE")) echo "Existe"; else echo "N'existe pas"; I IV V. .5 5. .6 6 T Ty yp pe e d de e v va ar ri ia ab bl le e La fonction gettype() permet de changer le type de données d'une variable. On peut assigner les types suivants: • Class • integer • object • string • array • double • unknown type if(gettype($variable) == "integer") La fonction settype() permet de définir explicitement le type d'une variable. Conception de Pages Web Dynamiques Avec PHP/MYSQL 29 $variable = 2.5; settype($variable, "integer"); La variable $variable renverra maintenant 2 et non 2.5. I IV V. .6 6. . V Va ar ri ia ab bl le e v va ar ri ia ab bl le e Une variable variable permet de prendre la valeur d'une variable 1 pour donner le nom a la variable 2. $variable1 = "nom_de_la_variable2"; $$variable1 = "valeur_variable2"; echo $$variable1; I IV V. .7 7. . L Le es s f fo or rm mu ul la ai ir re es s <html> <head> <title>formulaire à soumettre</title> </head> <body> <h2 align=center> formulaire à soumettre</h2> <p> Renseigner le chien :<br> <form method="post" action="submit1.php"> Nom : <input type="text" name="nom"><br> Maitre : <input type="text" name="maitre"><br> Aboiement : <input type="text" name="aboiement"><br> Nombre de puces : <input type="text" name="nombrePuces"><br> <input type="submit" name="submit" value="Soumettre"> </form> </p> </body> </html> • Les formulaires constituent un moyen de récupérer de l'information provenant de l'utilisateur la balise form délimite/définit le formulaire • l'attribut method permet de choisir la méthode d'envoi HTTP entre POST et, à déconseiller, GET (envoi de paramètres visibles) • l'attribut action précise l'URL demandée par la requête HTTP un formulaire se compose d'éléments : • la balise input définit des champs d'information simples elle possède un attribut name pour désigner l'élément et éventuellement un attribut value de valeur initialeelle se sub-divise selon son attribut type • text un petit champ pour que l'utilisateur saisisse un nombre ou une phrase • button pour cliquer dessus • checkbox des cases à cocher (information on/off) • radio des "radio-boutons" (information on/off mais un seul peut être coché à la fois !) • hidden est un champ caché pour transmettre des informations vers le serveur, sans que l'utilisateur ne le sache : c'est très utile pour gérer un caddie ... • password un champ texte mais masquant le texte tapé • submit est l'action indispensable lorsque le formulaire est utilisé pour envoyer de l'information Conception de Pages Web Dynamiques Avec PHP/MYSQL 30 depuis l'utilisateur vers le serveur : il "envoie" les données récupérées de l'utilisateur dans le formulaire vers le serveur • reset pour remettre le formulaire dans son état initial - select pour les listes - textarea pour un texte multi-lignes. * Voici quelques exemples d'objets de formulaire : Nom Resultat Code Zone de texte valeur initiale <input type='text' name='nom' size='20' value='valeur initiale'> Zone de texte déroulante Valeur initiale <textarea rows='1' name='nom' cols='16'>Valeur initiale</textarea> Case a cocher <input type='checkbox' name='nom' value='ON' checked> Menu déroulant valeur1 <select size='1' name='nom'> <option value='valeur1'>valeur1</option> <option value='valeur2'>valeur2</option> <option value='valeur3'>valeur3</option> </select> Case d'option <input type='radio' value='nom' checked name='nom_groupe'> Bouton titre <input type='submit' value='titre' name='nom'> I IV V. .8 8. . L Le es s e ex xp pr re es ss si io on ns s: : Quelques opérateurs peu ou mal connus <?php $i = 2; $j = 6; echo "int i = $i, j = $j<br>" ; echo 'expression $i++*$j+1 : ' ; echo $i++*$j+1; echo "<br>" ; echo "i = $i, j = $j<br>" ; $j += $i ; echo 'affectation $j += $i : <br>' ; echo "j = $j<br>" ; echo 'expression ($j > $i ? $j - $i : $i - $j) ' ; echo $j > $i ? $j - $i : $i - $j; echo "<br>" ; ?> • EXECUTION int i = 2, j = 6 expression $i++*$j+1 : 13 i = 3, j = 6 affectation $j += $i : j = 9 expression ($j > $i ? $j - $i : $i - $j) 6 • ++ et -- opérateurs de pré ou post incrémentation et décrémentation : o dans l'expression ci-dessus, $i++ la valeur 2 de $i est utilisée dans l'expression avant de l'incrémenter de 1, c'est une post-incrémentation • $var op= expression est équivalente à $var = $var op expression ,où op est +, -, /, *, !, ., &, .... • exp_bool ? expression1 : expression1 utilise l'opérateur conditionnel ternaire Conception de Pages Web Dynamiques Avec PHP/MYSQL 31 signifie si exp_bool vaut true, alors expression1 sinon expression2 I IV V. .9 9. . C Cr ré éa at ti io on n d de e t ta ab bl le ea au ux x Un tableau est un conteneur renfermant plusieurs valeurs. Chaque élément d'un tableau possède une valeur propre ainsi qu'une clé qui permet de faire référence à cet élément. Variable $provider[0] $provider[1] $provider[2] Valeur wanadoo club-internet aol Il existe plusieurs manières pour créer des tableaux : a. Avec des indices entiers 1. Affecter des valeurs aux variables : $provider[] = "wanadoo"; $provider[] = "club-internet"; $provider[] = "aol"; En ne mettant rien entre crochet, l'élément est tout simplement ajouté a la suite. 2. Affecter des valeurs et des indices explicites : $provider[0] = "wanadoo"; $provider[1] = "club-internet"; $provider[2] = "aol"; L'indice peut être n'importe quel entier, ainsi, cela aurait pu être 20, 80 et 90. 3. Affecter des valeurs avec array() : $provider = array("wanadoo", "club-internet", "aol"); Ainsi $provider[3] va renvoyer aol. 4. Affecter des valeurs et des indices avec array() : $provider = array(1=> "wanadoo", "club-internet", "aol"); Ainsi $provider[3] va renvoyer aol. Tout simplement, en placant l'opérateur =>, vous changez l'indice, c'est a dire que les autres éléments vont prendre les valeurs suivantes, ici ce sera 1, 2 et 3 au lieu de 0, 1 et 2. Il est possible de placer l'opérateur devant n'importe quelle valeur du tableau. b. Avec des indices chaines Comme nous avons déja pu le constater ci-dessus, il est possible d'utiliser des entiers comme indices. Toutefois, il est aussi possible d'utiliser des chaînes de caractères, ce qui peut être plus clair : $provider["rapide"] = "wanadoo"; $provider["moyen"] = "club-internet"; $provider["lent"] = "aol"; La variable $provider[moyen] va renvoyer club-internet. Il est aussi possible d'utiliser la fonction array() pour créer des tableaux utilisant des indices chaine : $provider = array("rapide" => "wanadoo", "moyen" => "club-internet", "lent" => "aol"); La variable $provider[moyen] va aussi renvoyer club-internet. Conception de Pages Web Dynamiques Avec PHP/MYSQL 32 I IV V. .9 9. .1 1 P Pa ar rc co ou ur ri ir r u un n t ta ab bl le ea au u a. Parcourir un tableau utilisant des entiers comme indices : La manière la plus rapide pour extraire l'ensemble des valeurs d'un tableau, quel que soit le nombre de valeurs, est d'utiliser une boucle for() : $provider = array("wanadoo", "club-internet", "aol"); for($nb =0; $provider[$nb] != false; $nb++) { echo $provider[$nb]."<br>"; } Bien évidemment, si le tableau ne commence pas par l'indice 0, il faut seulement initialiser la variable $nb avec l'indice de départ du tableau afin que l'ensemble des valeurs soit affichées. (ce qui donnera : for($nb = 10; $provider[$nb] != false; $nb++) // pour l'indice 10) Cependant, il existe une autre façon pour extraire les valeurs d'un tableau, il faut utiliser la boucle for() mais aussi la fonction count(). $provider = array("wanadoo", "club-internet", "aol"); $elements_table = count($provider); for($nb =0; $nb <= $elements_table; $nb++) { echo $provider[$nb]."<br>"; } Lorsque vous avez plusieurs indices qui ne se suivent pas, vous ne pouvez pas utiliser de boucle for(), il faut donc utiliser une boucle while() : $provider = array(60 => "wanadoo", 90=> "club-internet", "aol"); $key = key($provider); $val = current($provider); reset($provider); while(list ($key, $val) = each ($provider)) { echo "L'indice $key correspond a $val<br>"; } b. Parcourir un tableau utilisant des chaînes comme indices : Lorsque l'indice est une chaine, il est nécessaire d'utiliser une boucle while pour afficher l'ensemble des valeurs et des indices du tableau : $provider = array("rapide" => "wanadoo", "moyen" => "club-internet", "lent" => "aol"); $key = key($provider); $val = current($provider); reset($provider); while(list ($key, $val) = each ($provider)) { echo "L'indice chaine <b>$key</b> correspond a <b>$val</b><br>"; } Conception de Pages Web Dynamiques Avec PHP/MYSQL 33 I IV V. .9 9. .2 2 F Fo on nc ct ti io on ns s d de e t tr ri i Il existe plusieurs fonctions permettant de trier les valeurs d'un tableau. $lettres = array("b","c","a","d"); sort($lettres); $key = key($lettres); $val = current($lettres); while(list ($key, $val) = each($lettres)) { echo "L'indice $key correspond à $val<br>\n"; } Ceci va ranger les valeurs du tableau dans l'ordre alphabétique en conservant les indices. $lettres = array("a" =>"b", "b" => "c","c" => "a","d" => "d"); asort($lettres); $key = key($lettres); $val = current($lettres); while(list ($key, $val) = each($lettres)) { echo "L'indice $key correspond à $val<br>\n"; } Ceci va ranger les valeurs, en conservant les indices. I IV V. .1 10 0. . L Le es s f fo on nc ct ti io on ns s M Ma at th hé ém ma at ti iq qu ue es s • Plusieurs nombres à ajouter : $valeur1 = "10"; $valeur2 = "11"; $valeur3 = "12"; $result = $valeur1 + $valeur2 + $valeur3; print($result); • Multiplier : $valeur1 = "10"; $valeur2 = "11"; $valeur3 = "12"; $result = $valeur1 * $valeur2 * $valeur3; print($result); • Diviser : $valeur1 = "10"; $valeur2 = "11"; $valeur3 = "12"; $result = $valeur1 / $valeur2 / $valeur3; print($result); • Soustraire : $valeur1 = "10"; $valeur2 = "11"; $valeur3 = "12"; $result = $valeur1 - $valeur2 - $valeur3; print($result); Conception de Pages Web Dynamiques Avec PHP/MYSQL 34 I IV V. .1 11 1. . L Le es s f fo on nc ct ti io on ns s I IV V. .1 11 1. .1 1 D Dé éf fi in ni ir r d de es s f fo on nc ct ti io on ns s : : o Fonctions simples : function bonjour() { echo "Bonjour !"; } bonjour(); o Fonctions complexes : function type($police, $taille) { echo "<font face='$police' size='$taille'>Texte Mis en forme</font>"; } type("Arial", "2"); I IV V. .1 12 2. . L Le es s i in ns st tr ru uc ct ti io on ns s I IV V. .1 12 2. .1 1 I If f, , e el ls se ei if f e et t e el ls se e • if, elseif et else sont utilisés pour vérifier quelque chose (si...autrement...sinon). $arg1 = "Flen"; $arg2 = "Flen"; $arg3 = "Flen"; if($arg1 == $arg2) // Pas de ; a la fin { echo "Valeur de arg1 égale a arg2"; } elseif($arg1 == $arg3) { echo "Valeur de arg1 égale a arg3"; } else { echo "Arg1 n'est ni égal a arg2, ni a arg3"; } • Opérateurs de comparaison : < (est inférieur a) > (supérieur a) <= (est inférieur ou égal) >= (est supérieur ou égal) == (est egal a) != (n'est pas égal a) AND && (et) OR || (ou) ! (sauf) Conception de Pages Web Dynamiques Avec PHP/MYSQL 35 I IV V. .1 12 2. .2 2 s sw wi it tc ch h : : l le e " "c ch ho oi ix x p pa ar rm mi i" " Exemple: <?php import_request_variables("P","recu_"); define("premier",3); switch (($recu_niemeJour + premier -1)% 7) { case 0 : $res = "lundi"; break; case 1 : $res = "mardi"; break; case 2 : $res = "mercredi"; break; ..... case 6 : $res = "dimanche"; break; default : $res = "erreur"; break; } print("le $recu_niemeJour-ième de l'année 2004 est un $res"); ?> } EXECUTION pour 23 : le 23-ième de l'année 2004 est un vendredi • switch : o switch (expression) { case valeur1 : instructions break; case valeur2 : instructions break; ... case valeur7 : case valeur8 : instructions break; default : instructions break; } o l'expression est de type int, float, string o Elle est évaluée puis le programme exécute alors les instructions à partir de la valeur correspondante jusqu'à rencontrer le mot break o si aucune valeur correspondante est proposée, alors le programme commence en default. o remarquons que plusieurs valeurs peuvent être regroupées comme ci-dessus. • break Conception de Pages Web Dynamiques Avec PHP/MYSQL 36 permet de sortir d'une instruction switch, while, for, foreach I IV V. .1 12 2. .3 3 b bo ou uc cl le es s w wh hi il le e e et t d do o- -w wh hi il le e <?php import_request_variables("P","recu_"); $i = 0; do { print("\$i = $i<br>"); $i += 1; while ($i < $recu_nombre); $i = 0; print("puis<br>"); while ($i < $recu_nombre) { print("\$i = $i<br>"); $i++; } ?> • EXECUTION pour 4 : $i = 0 $i = 1 $i = 2 $i = 3 puis $i = 0 $i = 1 $i = 2 $i = 3 do instructionCorpsDeBoucle while (test) ; avec test = expr. booléenne o exécution de l'instruction, o évaluation du test, si sa valeur est true, alors exécution de l'instruction, o évaluation du test, si sa valeur est true, alors exécution de l'instruction, o .... o arrêt de la boucle quand la valeur du test devient false. while (test) instructionCorpsDeBoucle o évaluation du test, si sa valeur est true, alors exécution de l'instruction, o évaluation du test, si sa valeur est true, alors exécution de l'instruction, o .... Conception de Pages Web Dynamiques Avec PHP/MYSQL 37 o arrêt de la boucle quand la valeur du test devient false. • Dans les 2 formes, l'instruction dite corps de la boucle est une instruction simple, un bloc ou une instruction alternative ou une boucle, ... I IV V. .1 12 2. .4 4 b bo ou uc cl le e f fo or r <?php import_request_variables("P","recu_"); for ($nombre=1; $nombre<=$recu_entierMax; $nombre++) { $divisible = FALSE; for ($diviseur=floor($nombre/2); !$divisible && ($diviseur>1); $diviseur--) $divisible = ($nombre % $diviseur == 0); if (! $divisible) print("$nombre est premier<br>"); } ?> ?> • EXECUTION pour 14 : 1 est premier 2 est premier 3 est premier 5 est premier 7 est premier 11 est premier 13 est premier Syntaxe for (initialisation ; test ; nouvelle_itération ) instruction_corps_de_boucle o l'instruction d'initialisation peut être vide o test = expr. bouléenne o nouvelle_itération = instruction qui prépare l'itération suivante (peut être vide) o la boucle for fonctionne comme initialisation; while (test) { instruction_corps_de_boucle nouvelle_itération } • continue passe directement à l'itération suivante de la boucle I IV V. .1 12 2. .5 5 a ar rr ra ay y " "a as ss so oc ci ia at ti if f" " Conception de Pages Web Dynamiques Avec PHP/MYSQL 38 <?php $jourSemaine = array("lundi" => "travail", "mardi" => "travail", "mercredi" => "travail", "jeudi" => "travail", "vendredi" => "travail", "samedi" => "week-end", "dimanche" => "week-end"); printf("le samedi est un jour de " .$jourSemaine["samedi"]."<br>"); foreach ($jourSemaine as $jour => $sorte) print("$jour : $sorte <br>"); $compte = 0; foreach ($jourSemaine as $sorte) if ($sorte == "travail") $compte++; printf(" il y a $compte jours de travail sur ".count($jourSemaine)); ?> • EXECUTION le samedi est un jour de week-end lundi : travail mardi : travail mercredi : travail jeudi : travail vendredi : travail samedi Un array "PHP" est un ensemble ordonné d'éléments accessible par un index (ordered map) : o c'est une association de paire (clé, valeur) : la clé permet d'accéder à l'élément o la clé est soit un entier soit une chaîne o la valeur peut être de n'importe quel type o en PHP4, l'array peut être utilisé comme : - tableau classique, - liste, - pile, file, ensemble, - table accessible par clé, dictionnaire. • array(cle0 => valeur0, cle1 => valeur1, ...) crée un tableau avec les éléments indiquées dans l'ordre les éléments du tableau sont respectivement les paires (clé, valeur) spécifiées le premier élément a la clé cle0 et la valeur0 le second élément a la clé cle1 et la valeur1 ..... • les éléments se manipulent ainsi : $tab[clé] où clé est un entier ou un string • foreach o PHP4 ! o foreach(array_expression as $key => $value) réalise une boucle où les variables $key et $value prennent successivement les clés et valeurs des éléments du tableau. o foreach(array_expression as $value) réalise une boucle où la variable $value prend successivement les valeurs des éléments du tableau Conception de Pages Web Dynamiques Avec PHP/MYSQL 39 V V. . e em me e C Ch ha ap pi it tr re e MYSQL V V. .1 1. . C Cr ré éa at ti io on n d de e l la a b ba as se e d de e d do on nn né ée es s Pour exploiter une base de données, la première chose à faire est évidemment de créer cette base. Il existe pour cela un outil très pratique: PHPMYADMIN. Dans une base de données Mysql les informations sont stockées dans des tables. Créons une table avec trois champs: Nom, prenom et email. Ils sont tous de type Varchar de longueur 50. V V. .2 2. . C Co on nn ne ex xi io on n à à M My ys sq ql l Pour se connecter à Mysql par l'intermédiaire de PHP, il faut utiliser la fonction mysql_connect(). Syntaxe de la fonction : int mysql_connect(string [hostname [:port]], string [username] , string [password] ); Exemple : $host = "127.0.0.1"; $user = "root"; $bdd = "essai"; mysql_connect($host, $user,$password) or die("erreur de connexion au serveur"); mysql_select_db($bdd) or die("erreur de connexion a la base de donnees"); V V. .3 3. . E Ex xé éc cu ut ti io on n d d' 'u un ne e r re eq qu uê êt te e S SQ QL L Avant tout, il faut se connecter. Pour exécuter une requête SQL, il faut utiliser la fonction mysql_db_query(). Syntaxe de la fonction : int mysql_db_query(string database, string query, int [link_identifier] ); Exemple : Insertion de données dans la table list. I) $mysql_connexion = mysql_connect("localhost", "root", "motdepasse"); $requete = "INSERT INTO list (nom, prenom, email) VALUES ('Benahmed', 'farid', '
[email protected])"; $requete2 = mysql_db_query("bdd", $requete); V V. .4 4. . E En nr re eg gi is st tr re em me en nt t d da an ns s u un ne e t ta ab bl le e M My ys sq ql l Considérons une table valeurs qui se trouve dans une base essai. - Structure de cette table valeurs : CREATE TABLE valeurs ( num int(11) DEFAULT '0' NOT NULL auto_increment, nom blob NOT NULL, Conception de Pages Web Dynamiques Avec PHP/MYSQL 40 prenom blob NOT NULL, PRIMARY KEY (num)); Le script PHP : <?php // Vérification des champs nom et prenom (si il ne sont pas vides ?, ces champs ayant été saisis dans un formulaire) if($nom != "" && $prenom != "") { // Connexion a Mysql (changer l'host, le login et le mot de passe SVP) $mysql_link = mysql_connect("localhost","root",""); // Vérification de la validité de la connexion MYSQL if($mysql_link) { // Requete d'insertion MYSQL $requete = "INSERT INTO valeurs (nom,prenom) VALUES ('flen','flenou')"; // Execution de cette requete dans la base essai $execution = mysql_db_query("essai", $requete); echo "<font face='Verdana' size='2'>Les valeurs ont bien été enregistrées dans la table <b>valeurs</b></font>"; } // La connexion Mysql est indisponible else echo "<HTML><HEAD><TITLE>Erreurs</TITLE></HEAD><BODY><font face='Verdana' size='2'>Vous avez du faire une erreur : Ce problème se pose soit : <br>- Parce que vous n'avez pas créer la base, ni la table MYSQL;<br>- Parce que vous n'avez pas changé le Mot de passe d'accès a MYSQL dans ce programme (Par défaut, c'est Host : 'localhost', login : 'root', MDP : '[vide]';<br>- Soit vous n'avez pas lancé MYSQL.</font></body></html>"; // Les champs ne sont pas tous remplis } else echo "<HTML><HEAD><TITLE>Erreurs</TITLE></HEAD><BODY><font face='Verdana' size='2'>ATTENTION : Le champs nom ou prénom n'a pas été remplis correctement, veuillez vérifier</font></body></html>"; ?> La table Mysql contiendra ensuite : num nom prenom 1 le_nom le_prenom V V. .5 5. . E Ex xt tr ra ac ct ti io on n d de e d do on nn né ée es s Comme toujours, il faut d'abord se connecter à mysql . Pour extraire des données, nous allons utiliser la fonction mysql_fetch_array() ainsi qu'une simple boucle while{}. Pour extraire la totalité d'une table dans un tableau : $mysql_link = mysql_connect("localhost", "root", ""); $requete = "SELECT * FROM table_article"; $result = mysql_db_query("base", $requete); echo "<table>"; while ($voir = mysql_fetch_array($result)) Conception de Pages Web Dynamiques Avec PHP/MYSQL 41 { echo "<tr> <td><font face='Verdana' size='2'>Nom : ".$voir[nom_colone]."</font></td> <td><font face='Verdana' size='2'>Prenom : ".$voir[nom_colone2]."</font></td> </tr>"; echo "</table>"; Pour extraire une partie d'une table dans un tableau : (ici, la ligne ou la colone nom = Mohamed) $mysql_link = mysql_connect("localhost", "root", ""); $requete = "SELECT * FROM table_article WHERE nom='Mohamed'"; $result = mysql_db_query("bdd", $requete); echo "<table>"; while ($voir = mysql_fetch_array($result)) { echo "<tr> <td><font face='Verdana' size='2'>Nom : ".$voir[nom_colone]."</font></td> <td><font face='Verdana' size='2'>Prenom : ".$voir[nom_colone2]."</font></td> </tr>"; } echo "</table>"; Suppression de données dans la table essai: On peut effacer des données dans une table grâce à la fonction delete from $mysql_link = mysql_connect("localhost", "root", ""); mysql_db_query("bdd", "delete from essai Where nom='flen'"); V V. .6 6. . S Sy yn nt ta ax xe e M My ys sq ql l V V. .6 6. .1 1 E Ex xé éc cu ut ti io on n d de e r re eq qu uê êt te es s Pour créer une table mysql, vous pouvez utiliser par exemple PhpMyAdmin (Le plus connu) ou bien directement exécuter la requete avec mysql_db_query() de php. Avec PhpMyadmin, c'est très simple : A gauche, cliquez sur le lien intitulé par le nom de votre base de données, sur free c'est votre login, puis dans le formulaire (Voir ci-contre), faites un copier coller de votre fichier contenant le code SQL ou bien tapez directement la requête que vous souhaitez exécuter. Cliquez tout simplement sur le Bouton Exécuter pour terminer. V V. .6 6. .2 2 C Cr ré éa at ti io on n d de e t ta ab bl le e Afin de créer une table Mysql, vous devez utiliser la fonction CREATE TABLE. Voici la syntaxe simple de l'utilisation de cette fonction. La table ci-dessous contiendra toutes les colonnes en bleu. Conception de Pages Web Dynamiques Avec PHP/MYSQL 42 CREATE TABLE essai (num INT not null AUTO_INCREMENT, nom VARCHAR (100) not null , prenom VARCHAR (100) not null , adresse VARCHAR (255) not null , codepostal INT (5) not null , ville VARCHAR (100) not null , pays VARCHAR (100) not null , PRIMARY KEY (num)); Sachez que vous pouvez aussi utiliser PhpMyAdmin pour créer vos tables, ce qui vous évitera de taper la requête. (Voir ci-contre) V V. .6 6. .3 3 M Mo od di if fi ic ca at ti io on n d d' 'u un ne e t ta ab bl le e Vous évitez de créer un nouvelle fois la table que vous souhaitez modifier, il esiste la fonction ALTER TABLE qui permet d'ajouter ou de supprimer des champs d'une table. a. Ajouter une colonne : ALTER TABLE essai ADD email VARCHAR(100) not null b. Supprimer une colonne ALTER TABLE essai DROP email c. Suppression de données Pour supprimer des lignes contenues dans une table, il faut utiliser la fonction DELETE FROM. Syntaxe : DELETE FROM nom_table WHERE champs = 'valeur' En fait, le WHERE permet de choisir quelle ligne va être supprimée. Par exemple si le champs 'num' est AUTO_INCREMENT, vous pourrez l'utiliser pour vos requêtes. Exemple pour notre table essai : DELETE FROM essai WHERE num = '2' Conception de Pages Web Dynamiques Avec PHP/MYSQL 43 Conception de Pages Web Dynamiques Avec PHP/MYSQL 2 SOMMAIRE I. Chapitre.............................................................................................................................................. 5 I.1. Présentation du HTML ................................................................................................................. 5 I.1.1 Le HTML est un langage à balises............................................................................................ 5 I.1.2 Comment utiliser les balises HTML ? ...................................................................................... 5 I.1.3 La page HTML minimum ......................................................................................................... 5 I.2. Les balises de structure ................................................................................................................. 6 I.2.1 Les attributs............................................................................................................................... 6 I.2.2 Les Paragraphes ........................................................................................................................ 6 I.2.3 Les listes.................................................................................................................................... 6 I.3. Utilisation de tableaux .................................................................................................................. 7 I.3.1 Les attributs............................................................................................................................... 7 I.4. Les liens hypertextes et ancrage.................................................................................................... 8 I.4.1 Présentation des ancrages.......................................................................................................... 8 I.4.2 Les signets................................................................................................................................. 8 I.5. Comment afficher des images sur une page web? ........................................................................ 9 I.6. Les formulaires en HTML ............................................................................................................ 9 I.6.1 Attributs de la balise FORM et types d' entrées....................................................................... 10 II. ème Chapitre ......................................................................................................................................... 12 II.1. Introduction................................................................................................................................. 12 II.1.1 De quoi s' agit-il ? ................................................................................................................ 12 II.1.2 Le premier script ................................................................................................................. 12 II.1.3 JavaScript et HTML............................................................................................................ 12 II.2. Premier exemple avec JavaScript ............................................................................................... 12 II.2.1 Mettre le code JavaScript dans un fichier ........................................................................... 13 II.3. Différents types d' expressions..................................................................................................... 13 II.4. Les variables ............................................................................................................................... 13 II.4.1 Les types de variables ......................................................................................................... 13 II.4.2 Opérations sur les variables ................................................................................................ 13 II.5. La fonction eval .......................................................................................................................... 14 II.6. La fonction prompt...................................................................................................................... 14 II.7. Définir de nouvelles fonctions .................................................................................................... 15 II.7.1 Structure générale ............................................................................................................... 15 II.8. Les formulaires élémentaires ...................................................................................................... 16 II.8.1 Interpréter un formulaire..................................................................................................... 16 II.9. Les conditions ............................................................................................................................. 18 II.9.1 Utilisation de if.................................................................................................................... 18 II.9.2 Utilisation de switch............................................................................................................ 19 II.10. Les boucles.............................................................................................................................. 19 II.10.1 Boucle for............................................................................................................................ 19 II.10.2 Boucle while ....................................................................................................................... 20 II.11. Les tableaux ............................................................................................................................ 20 II.11.1 Création............................................................................................................................... 20 II.11.2 Utilisation............................................................................................................................ 20 II.11.3 Quelques propriétés et méthodes des objets tableaux......................................................... 21 III. eme CHAPITRE .................................................................................................................................... 23 III.1. Origine de PHP ....................................................................................................................... 23 III.2. Description .............................................................................................................................. 23 III.3. Installation............................................................................................................................... 23 III.4. Mise en pratique de PHP......................................................................................................... 24 III.5. La notion de variable............................................................................................................... 25 er Conception de Pages Web Dynamiques Avec PHP/MYSQL III.5.1 Définir des variables ........................................................................................................... 26 III.5.2 Afficher la date du jour et l' heure en cours ......................................................................... 26 III.5.3 variable affectée ou non ...................................................................................................... 27 III.5.4 Définir des constantes ......................................................................................................... 27 III.5.5 Une variable Existe ou pas.................................................................................................. 28 III.5.6 Type de variable.................................................................................................................. 28 III.6. Variable variable ..................................................................................................................... 29 III.7. Les formulaires ....................................................................................................................... 29 III.8. Les expressions: ...................................................................................................................... 30 III.9. Création de tableaux................................................................................................................ 31 III.9.1 Parcourir un tableau ............................................................................................................ 32 III.9.2 Fonctions de tri.................................................................................................................... 33 III.10. Les fonctions Mathématiques ................................................................................................. 33 III.11. Les fonctions ........................................................................................................................... 34 III.11.1 Définir des fonctions :..................................................................................................... 34 III.12. Les instructions ....................................................................................................................... 34 III.12.1 If, elseif et else ................................................................................................................ 34 III.12.2 switch : le "choix parmi"................................................................................................. 35 III.12.3 boucles while et do-while ............................................................................................... 36 III.12.4 boucle for ........................................................................................................................ 37 III.12.5 array "associatif" ............................................................................................................. 37 IV. eme Chapitre ................................................................................................................................... 39 IV.1. Création de la base de données ............................................................................................... 39 IV.2. Connexion à Mysql ................................................................................................................. 39 IV.3. Exécution d' requête SQL.................................................................................................. 39 une IV.4. Enregistrement dans une table Mysql ..................................................................................... 39 IV.5. Extraction de données ............................................................................................................. 40 IV.6. Syntaxe Mysql......................................................................................................................... 41 IV.6.1 Exécution de requêtes ......................................................................................................... 41 IV.6.2 Création de table ................................................................................................................. 41 IV.6.3 Modification d' table ..................................................................................................... 42 une 3 I. Conception de Pages Web Dynamiques Avec PHP/MYSQL Introduction 4 Un site dynamique est une entreprise coûteuse en terme de temps. Les mises à jour régulières sont parfois difficiles à réaliser. Or un site qui n' évolue pas est parfois condamné à disparaître, ou du moins voir sa fréquentation diminuer. L' internaute aime le changement, il ne supporte pas un site statique qui n' évolue guère. Les langages dynamiques permettent de résoudre ces problèmes. Ils facilitent les opérations de mise à jour, permettent plus d' activités sur les pages. Le but de ces pages est de vous initier à l' de ces langages PHP, ainsi que le Mysql pour la gestion de la base de données. Pour pouvoir un utiliser le PHP convenablement il faut au préalable maîtriser le langage HTML et également le langage javascipt. . Une balise est une commande (un nom) encadrée par le caractère inférieur (<) et le caractère supérieur (>).3 La page HTML minimum </HTML> . II.Conception de Pages Web Dynamiques Avec PHP/MYSQL 5 Le langage HTML Le HTML ("HyperText Markup Language") est un système qui formalise l' écriture d' document avec un des balises de formatage indiquant la façon dont doit être présenté le document et les liens qu' établit il avec d' autres documents.1.2 Comment utiliser les balises HTML ? Une page HTML est un simple fichier texte commençant par la balise <HTML> et finissant par la balise </HTML>.1. les images . entre autre..1. Ainsi la page HTML minimum peut être représentée comme suit : <HTML> <HEAD> <TITLE> Le titre </TITLE> </HEAD> <BODY> Contenu de la page </BODY> II. c' est-à-dire qu' peut les écrire indifféremment en on minuscules ou en majuscules. puis un corps dans lequel se trouve le contenu de la page. la balise <br> représente par exemple un retour à la ligne.1 Le HTML est un langage à balises Les balises HTML peuvent être uniques. L' en-tête est délimité par les balises <HEAD> et </HEAD> Le corps est délimité par les balises <BODY> et </BODY>. er Chapitre II. Il permet. appelée URL. Présentation du HTML Le HTML n' pas un langage de programmation.1. la lecture de documents sur Internet à partir de machines différentes grâce au protocole HTTP. c' un simple fichier texte contenant des balises est est permettant de mettre en forme le texte. Les balises HTMl peuvent également fonctionner par paire afin d' sur le texte qu' encadrent (la agir ils balise de fin est alors précédé d' /) : un <marqueur> Votre texte formatté </marqueur> Ainsi les balises <b> et </b> permettent de mettre en gras le texte qu' elles encadrent : <b> Ce texte est en gras </b> Les balises ne sont pas sensibles à la casse. II. permettant d' accéder via le réseau à des documents repérés par une adresse unique. II. Elle contient également un en-tête décrivant le titre de la page. 2 Les Paragraphes Une liste est un paragraphe structuré contenant une suite d' articles. Les balises de structure Les attributs suivants sont placés dans les balises de structure pour permettre une disposition plus précise des éléments HTML : Attribut Valeur Effet Visuel LEFT RIGHT CENTER JUSTIFY LEFT RIGHT CENTER JUSTIFY Attribue un nom au contenu de la balise (pour faire des liens) Assigne une classe au contenu (pour les feuilles de style) II. La mise en page par blocs de texte est réalisée par l' intermédiaire de la paire de balises <p> et </p>.2.2. Cette balise accepte n' importe lequel des attributs vus précédemment.3 Les listes Ordonnée article 1 Non ordonnée article 2 article 3 article 1 De définition définition 1 article 2 .Conception de Pages Web Dynamiques Avec PHP/MYSQL 6 II.2. Il en existe trois types: Ordonnée Non ordonnée De définition Voici leur syntaxe: Conteneur Type de liste Effet Visuel <ol> <li> article 1 </li> <li> article 2 </li> </ol> <ul> <li> article 1 </li> <li> article 2 </li> </ul> <dl> <dt>Terme</dt> <dd>Définition</dd> article 1 article 2 article 3 II.1 Les attributs ALIGN ID CLASS Les attributs s' utilisent de la manière suivante: <BALISES ATTRIBUT1=XXXXX ATTRIBUT2=XXXX> Texte </BALISE> Par exemple: <H1 ALIGN=LEFT> Texte aligné à gauche </H1> HTML considère les paragraphes comme des blocs de texte.2. Balise <br> <p> et </p> Attribut Effet Visuel retour à la ligne paragraphe II. 3. Utilisation de tableaux On a souvent besoin de présenter des informations mieux structurées qu' avec des listes. Les tableaux permettent de les afficher en lignes et en colonnes. Le tableau est encadré par les balises <TABLE> et </TABLE>. Les cellules d' en-tête sont encadrées par <TH> </TH> (pour Table Header : En-tête de tableau) Les cellules de valeur sont encadrées par <TD> </TD> (Table Data: Donnée de tableau) Par exemple le tableau: <TABLE BORDER="1"> <CAPTION> Voici le titre du tableau </CAPTION> <TR> <TH> Titre A1 </TH> <TH> Titre A2 </TH> <TH> Titre A3 </TH> <TH> Titre A4 </TH> </TR> <TR> <TH> Titre B1 </TH> <TD> Valeur B2 </TD> <TD> Valeur B3 </TD> <TD> Valeur B4 </TD> </TR> </TABLE> donne le résultat suivant: Voici le titre du tableau Titre A1 Titre A2 Titre A3 Titre A4 Titre B1 Valeur B2 Valeur B3 Valeur B4 II.3.Conception de Pages Web Dynamiques Avec PHP/MYSQL </dl> définition 2 7 II. Le titre du tableau est encadrée par <CAPTION> </CAPTION> Chaque ligne est encadrée par <TR> </TR> (Table Row. Les tableaux sont définis comme étant des suites de lignes. traduisez par ligne du tableau).1 Les attributs Balises auxquelles il s'applique THEAD TBODY TH TR TD CAPTION Valeur CENTER LEFT RIGHT JUSTIFY Effet Visuel centré gauche droite justifié ALIGN TOP au-dessus BOTTOM en-dessous TOP en haut MIDDLE au milieu BOTTOM en bas VALIGN (alignement vertical) THEAD TBODY TH TR . 4.html#signet"> .1 Présentation des ancrages vers un autre endroit du document vers un fichier HTML situé à un emplacement différent sur la machine qui héberge la page vers une autre machine L' attribut principal des ancrages est href. Cela se fait grâce à l' attribut NAME ou ID (pour les browsers plus récents) Par exemple: <p id="signet"> ... </a> On peut ainsi se déplacer à un endroit précis sur une autre page: <a href="url/nom_du_fichier. </a> II...2 Les signets .Conception de Pages Web Dynamiques Avec PHP/MYSQL 8 BORDER=n CELLPADDING=n CELLSPACING=n FLOAT COLS=n TD TABLE TABLE TABLE TABLE TABLE RIGHT LEFT taille de la bordure espacement de n pixels entre le contenu des cellules et son encadrement Epaisseur de la grille intérieure Spécifie la position du texte qui suivra </TABLE> FRAME (contrôle les éléments individuels d' encadrement TABLE du tableau) THEAD TBODY TH TR TD THEAD TBODY TH TR TD Spécifie le nombre de colonnes NONE aucun TOP au-dessus BOTTOM en bas TOPBOT tout en haut SIDES sur les cotés ALL tous Fait déborder les cellules sur les colonnes adjacentes COLSPAN ROWSPAN Fait déborder les cellules sur les lignes adjacentes II. </a> On peut créer un signet dans une page c' est-à-dire marquer un endroit précis d' page pour s' rendre une y par hypertexte... C' ce qui permet de lier des pages Web on est entre elles.4. Il s' sous la forme: écrit <a href="Adresse ou URL"> .. Les liens hypertextes permettent de naviguer: • • • II. Les liens hypertextes et ancrage Les ancrages (liens hypertextes) sont des éléments d' page HTML (soulignés lorsqu' s' de texte) une il agit qui emmènent dans un autre endroit lorsqu' clique dessus.4. </p> On l' appellera grâce au lien suivant: <a href="#signet"> . et BOTTOM (au-dessus. Les formulaires interactifs permettent aux auteurs de pages Web de dialoguer avec leurs lecteurs. Cependant il ne faut pas sombrer dans l' excès car les images impliquent un temps de chargement assez long.Conception de Pages Web Dynamiques Avec PHP/MYSQL 9 Quelques images sur votre site Web le rendront plus attractif. Sa couleur se définit dans l' attribut BORDER=n LINK ou TEXT de la balise <BODY>. On utilise la balise <IMG> pour inclure une image. Voici quelques exemples de balises FORM: <FORM METHOD=POST ACTION="
[email protected]. Pour ne pas avoir ce désagrément pensez à le définir comme étant égal à 0... Il peut prendre les valeurs: TOP. au milieu et en-dessous) ALT:Permet d' afficher un texte lorsque l' image ne s' affiche pas Ainsi pour insérer une image.. tandis que "GET" correspond à un envoi des données codées dans l' URL. HEIGHT Taille verticale (en pixels ou en %). </FORM>. il faudra saisir une balise du type suivant : <IMG SRC="url/image. puis appuie sur un bouton de soumission (submit). il ne crée pas de retour à la ligne.fr"> A l' intérieur de la balise FORM. et séparées de l' adresse du script par un point d' interrogation (pour plus de renseignement sur les méthodes POST et GET. Nombre de pixels d' ajustement VSPACE entre l' image et le texte au-dessus WIDTH Taille horizontale (en pixels ou en %). Par défaut l' attribut Border vaut 1 ce qui crée un petit cadre autour de l' image.5.. La balise FORM Les formulaires sont délimités par la balise <FORM> .) et qui possède les attributs obligatoires suivants: • II.gif|url/image.email@machine)).. Comment afficher des images sur une page web? SRC: Indique l' emplacement de l' image (il est obligatoire) ALIGN: Spécifie l' alignement de l' image par rapport au texte adjacent. Les formulaires en HTML • METHOD indique sous quelle forme seront envoyées les réponses "POST" est la valeur qui correspond à un envoi de données stockées dans le corps de la requête. consultez l' article sur le protocole HTTP) ACTION indique l' adresse d' envoi (script CGI ou adresse email (mailto:adresse. une balise qui permet de regrouper plusieurs éléments de formulaire (boutons.. MIDDLE. Ses trois principaux attributs sont: • • • II. Le lecteur saisit des informations en remplissant des champs ou en cliquant sur des boutons.jpg" ALT="Texte remplaçant l'image"> Attribut SRC Valeur Résultat Adresse de l' image Nombre de pixels de la bordure.champs de saisie..com"> <FORM METHOD=GET ACTION="http://yahoo. . liens. ensemble de données qui seront envoyées à l' URL indiqué dans l' attribut ACTION de la balise FORM par la méthode indiquée par l' attribut METHOD..) mais il est surtout intéressant d' insérer des éléments interactifs.1 Attributs de la balise FORM et types d'ntrées e Attribut Valeur POST METHOD GET ACTION ENCTYPE submit Résultat Effet Visuel <FORM> .boutons...Conception de Pages Web Dynamiques Avec PHP/MYSQL 10 La balise FORM constitue en quelque sorte un conteneur permettant de regrouper des éléments qui vont permettre à l' utilisateur de choisir ou de saisir des données..6. Ces éléments interactifs sont: • • • La balise INPUT: un ensemble de boutons et de champs de saisie La balise TEXTAREA: une zone de saisie La balise SELECT: une liste à choix multiples Balise II. NAME SIZE NAME ROWS COLS <SELECT> <OPTION> ..... </FORM> envoie à l' adresse indiquée spécifie le type de codage utilisé effectue l' ACTION dans le balise <FORM> simple ligne de texte dont la longueur est donnée par l' attribut size efface le contenu du formulaire bouton radio Bas du formulaire Haut du formulaire checkbox case à cocher Bas du formulaire Nom Taille du texte Haut du formulaire Zone de texte Haut du formulaire Envoyer Bas du formulaire Haut du formulaire Bas du formulaire Haut du formulaire Rétablir text TYPE <INPUT> reset Bas du formulaire Haut du formulaire radio <TEXTAREA> </TEXTAREA> .. Il est possible d' insérer n' importe quel élément HTML de base dans une balise FORM (textes.tableaux. </OPTION> Bas du formulaire Haut du formulaire NAME Choix 1 Bas du formulaire . .. </OPTION> VALUE Bas du formulaire .Conception de Pages Web Dynamiques Avec PHP/MYSQL 11 </SELECT> MULTIPLE SELECTED Option par défaut Valeur forcée Plusieurs possibles choix Haut du formulaire Choix 1 Bas du formulaire Haut du formulaire Choix 1 Choix 2 Choix 3 <OPTION> . d' insérer des images. et d' autre part de traduire ses attentes en une succession de tâches simples.write suivie de parenthèses contenant le code HTML entre guillemets. Pour plus de détail consultez le site www. III. nous devons modifier le fichier HTML utilisé chaque jour.commentçamarche.com.Introduction III. Ceci se fait en utilisant un langage de programmation. celui que nous allons explorer est JavaScript.1. etc. Cela se fait à l' de l' aide instruction document. de créer des liens hypertextes.Premier exemple avec JavaScript ..write("<B>Bonjour tout le monde !</B>"). nous gardons la même structure de fichier.1.2 Le premier script Le langage HTML est un langage de description de pages Web. ème Chapitre Les ordinateurs ne font qu' exécuter des suites d' instructions qui ont été écrites par des programmeurs.1 De quoi s'git-il ? a III. Traditionnellement on commence à étudier un langage de programmation en lui faisant afficher le message "Bonjour !". Il permet mettre des textes en forme. Cependant nous devons commencer par indiquer au navigateur que nous allons utiliser une instruction JavaScript.. Apprendre à dire bonjour pour voir comment JavaScript s' insère dans un document HTML. JavaScript permet de générer dynamiquement du code HTML.1. si nous désirons créer un document HTML qui affiche la date. pour découvrir les liens entre les langages est JavaScript et HTML. Le problème du programmeur est donc d' part de savoir comment ils une s' adresser poliment à son ordinateur pour être entendu. Cela se fait en utilisant la balise HTML <SCRIPT LANGUAGE="JavaScript"></SCRIPT>. Il suffit de leur demander d' exécuter autant de fois que nécessaire des tâches simples pour qu' le fassent sans broncher. lorsqu' document HTML un est écrit. Par exemple. En ce sens. Grâce à JavaScript nous pourrons au contraire indiquer une seule fois comment calculer la date et donc l' afficher correctement.2. III. Cependant.3 JavaScript et HTML Pour obtenir la même chose avec JavaScript.Conception de Pages Web Dynamiques Avec PHP/MYSQL 12 Le Langage JAVASCRIPT III. Le langage JavaScript est une extension du langage HTML qui permet de calculer ce qui doit être affiché en fonction des circonstances. C' ce que nous allons faire ici. il nous suffit de demander à JavaScript d' afficher le code HTML de la ligne contenant "Bonjour tout le monde !". <HTML> <HEAD><TITLE>Bonjour en JavaScript</TITLE></HEAD> <BODY> <SCRIPT LANGUAGE="JavaScript"> document.1. il affiche toujours les mêmes choses de la même façon. Dans ce chapitre vous trouverez les notions principales sur le javascript. </SCRIPT> </BODY> </HTML> III. Observons le script suivant.Conception de Pages Web Dynamiques Avec PHP/MYSQL Il est possible d' écrire le code JavaScript dans un fichier externe d' extension . et. ou respectivement notées !.3. document. Il est aussi possible d' utiliser des expressions sans guillemets. </SCRIPT> On obtient l' affichage suivant : Bonjour tout le monde ! Un petit calcul : 12+5*3 = 27 Un peu de logique : 5*4=19 ?? false III. document. La variable nommée v2 contient la valeur numérique 18. var v2=18. elle consiste à construire une nouvelle chaîne de caractères en en assemblant deux. document. document. La variable nommée v1 contient la chaîne de caractères "Flen".write(12+5*3). il est conseillé de la déclarer et de lui donner un contenu initial. var v3=true. document. L' instruction document. si v1="bonjour " et v2="Flen". Les variables contenant des chaînes de caractères peuvent être ajoutées. Par exemple : var v1="Flen".write("12+5*3 = ").2 Opérations sur les variables . document. Les variables numériques peuvent être utilisées dans des expressions mathématiques faisant intervenir les quatre opérations élémentaires. on III. ||. III. cette opération se nomme la concaténation. Ainsi.Différents types d'xpressions e III.4. Les variables booléennes peuvent être combinées à l' aide des opérations logiques non.2.write(5*4==19). La variable nommée v3 contient la valeur booléenne true. l' appel à JavaScript se fera simplement avec la ligne : Cette possibilité se révèle utile lorsqu' a des portions de code qui se répètent souvent.write("<BR>Un peu de logique : "). &&. document. provoque l' affichage du texte 27. Celles-ci indiquent que ce qu' elles entourent est du code HTML que le navigateur va interpréter. Cela se fait en utilisant le mot var et le signe =.1 Les types de variables Pour utiliser une variable. Les expressions mathématiques permettent de comprendre ce processus.4. provoque l' affichage du texte 12+5*3.write pour afficher une expression écrite entre guillemets. Par contre.Les variables chaîne de caractères valeur numérique valeur booléenne objet On peut classer les variables selon le type de leur contenu : • • • • III.write("12+5*3").4. l' instruction document. Pour l' exemple précédent.write(12+5*3).write("5*4=19 ?? "). alors v1+v2 est la chaîne de caractères contenant "bonjour Flen". il suffit de créer un fichier nommé bonjour.write("<BR>Un petit calcul : ").write("<BIG><B>B</B></BIG>onjour tout le monde !"). Dans ce cas JavaScript va essayer de les interpréter directement avant de les transmettre au navigateur.js contenant la ligne : Dans le fichier html.1 Mettre le code JavaScript dans un fichier 13 Nous avons utilisé l' instruction document.js. write("Avec v1+v2 on obtient :"."<BR>").write("<BR>Périmètre : ". et non par le programmeur. document. </SCRIPT> On obtient l' affichage suivant: La variable v1 contient : 12 La variable v2 contient : 5 Avec v1+v2 on obtient :125 Avec eval(v1)+v2 on obtient : 17 III.write("<BIG><B>B</B></BIG>onjour "+nom+" !<BR>"). document.perim).aire).write("Avec eval(v1)+v2 on obtient : ". <SCRIPT LANGUAGE="JavaScript"> var v1="12".6.write("<BR>Côté du carré : ".v2+v1. III. document."<BR>").write("<BR>Aire : ".v1. document.v1.v1+v2.""). </SCRIPT> On obtient l' affichage suivant: La variable v1 contient : 12 (chaîne de caractères) La variable v2 contient : 5 (nombre) Avec v1+v2 on obtient :125 Avec v2+v1 on obtient : 512 14 Il arrive souvent que l' doive interpréter une chaîne de caractères (par exemple une saisie de l' on utilisateur) comme étant une valeur numérique.write("Avec v1+v2 on obtient :". Observons le script suivant.""). var v2=5.write("La variable v2 contient : ". <SCRIPT LANGUAGE="JavaScript"> var v1="12". nom=prompt("Quel est ton nom ?". Elle attend en paramètre deux chaînes de caractères: la première servira de message d' invite et la seconde de réponse proposée par défaut.cote). <SCRIPT LANGUAGE="JavaScript"> var nom. document."<BR>").5. cote=prompt("Côté du carré : "."<BR>").write("La variable v1 contient : ".write("Avec v2+v1 on obtient : ". document. document. La fonction prompt() fournit une façon de réaliser cette opération avec JavaScript."<BR>").v1+v2.write("La variable v2 contient : ".Conception de Pages Web Dynamiques Avec PHP/MYSQL Observons le comportement de l' opérateur + lorsqu' est en présence d' il expressions de types différents en exécutant le script suivant.La fonction prompt . var aire=cote*cote.write("La variable v1 contient : ". JavaScript permet de réaliser cette opération avec la fonction eval. document.eval(v1)+v2. Observons l' effet du script suivant. document. var perim=4*cote.v2."<BR>").v2. var v2=5. document.La fonction eval Il arrive souvent que le contenu d' variable doive être choisi par l' une utilisateur du programme."<BR>"). document."<BR>"). </SCRIPT> Exemple: afficher le périmetre nsi qu' d' carré en introduisant son côté air un var cote. document. var S="Essai "+nbEssais+" : ".Conception de Pages Web Dynamiques Avec PHP/MYSQL JavaScript permet de créer simplement de nouvelles fonctions qui permettent de répéter plusieurs fois les mêmes suites d' instructions. //fonction de contrôle de la réponse function control() { nbEssais++." n' utilisée que si la fonction renvoie un résultat. Elle peut éventuellement renvoyer un résultat et utiliser des paramètres. Exemple: Le nombre secret <HTML> <HEAD> <TITLE>Nombre secret</TITLE> </HEAD> <BODY> <SCRIPT LANGUAGE="JavaScript"> //nombre entre 0 et 99 var secret=Math. est Définir une fonction ne provoque pas son exécution immédiate. Pour la définir.value=S.formu.7. c' à dire indiquer la suite d' est instructions à exécuter lorsqu' l' on appelle. else if (nb < secret) S+="Trop petit.7.js qui pourra être utilisé comme une bibliothèque avec plusieurs documents HTML.formu. Cela se fait en définissant des fonctions qui pourront être utilisées comme les fonctions prédéfinies de JavaScript. if (isNaN(n)) alert("Entrer un nombre !").random()*100).".".reponse.prop. var n=document.Définir de nouvelles fonctions 15 Une fonction est une suite d' instructions à laquelle on a donné un nom. document. On définit une fonction de la façon suivante : • • • III. mais on doit écrire les parenthèses même s' n' a pas de il y paramètres. La liste de paramètres est facultatives. if (nb==secret) S+="Bonne réponse !!!".1 Structure générale La suite d' instructions à exécuter se trouve entre deux accolades. on utilise le mot-clé function. Cela donne simplement la possibilité de l' appeler ultérieurement comme toute fonction JavaScript déjà définie. else S+="Trop grand. document. La ligne "return résultat. //nombre d'essais var nbEssais=0.round(Math. } } </SCRIPT> . Il peut être intéressant de définir des fonctions personnelles dans un fichier externe .write(). III.value. eval() ou prompt(). else { var nb=eval(n). Il est parfois utile de regrouper un certain nombre d' instructions dans un bloc réutilisable plusieurs fois. <INPUT TYPE="button" VALUE="Contrôle" ONCLICK="control()"> <BR> <INPUT NAME="reponse" TYPE="text" SIZE="30" READONLY> </DIV> </FORM> <HR> <A HREF="nbsecret.Les formulaires élémentaires Le langage HTML permet de construire des formulaires.html">Autre partie</A> </BODY> </HTML> Conception de Pages Web Dynamiques Avec PHP/MYSQL 16 Nous avons vu que la fonction prompt permet à l' utilisateur d' entrer des données. Une autre méthode consiste à utiliser un formulaire HTML contenant des lignes de saisie.8. Formulaire HTML Commençons par construire le formulaire HTML de façon classique.1 Interpréter un formulaire </HTML> <HEAD><TITLE>Euro-Franc</TITLE></HEAD> <BODY> <H1>Conversion Euro-Franc</H1><HR> <FORM><TABLE><TR><TD> Valeur en Euros :</TD><TD> <INPUT TYPE="text" SIZE="10"></TD></TR><TR><TD> Valeur en Francs :</TD><TD> <INPUT TYPE="text" SIZE="10"></TD></TR><TR> <TD COLSPAN="2"><DIV ALIGN="center"> <INPUT TYPE="button" VALUE="Convertir"></TD></TR> </TABLE></FORM> </BODY> Le formulaire s' affiche bien.</P> <FORM NAME="formu"> <DIV ALIGN="center"> <B>Nombre proposé : </B> <INPUT NAME="prop" TYPE="text" SIZE="5">  . A vous de le retrouver le plus rapidement possible en proposant des nombres et en tenant compte des réponses fournies. . une zone de réponse et un bouton de déclenchement des calculs. Ceci nous amènera à définir des fonctions associées à l' évènement ONCLICK du bouton. b. mais cliquer sur le bouton "Convertir" ne provoque aucune réaction. Traitement avec JavaScript JavaScript va nous permettre de récupérer le contenu de la zone de saisie euro. JavaScript permet d' exploiter et de modifier leur contenu. On obtient la page suivante : III. a. III.<H1>Le nombre secret</H1> <HR> <P>L'ordinateur a choisi un nombre entier inférieur à 100. Nous allons étudier cette possibilité en construisant un document permettant de convertir des Euros en Francs.8. d' effectuer la conversion en francs et d' afficher le résultat dans la zone de saisie franc lors de chaque clic sur le bouton "Convertir". round(fr*100)/100. on écrira : document. Cela s' obtient en utilisant l' attribut ONCLICK du bouton. L' objet document possède un champ-objet nommé formu qui représente le formulaire.Conception de Pages Web Dynamiques Avec PHP/MYSQL 17 c. Association clic bouton / appel fonction Il nous reste à indiquer que chaque clic sur le bouton "Convertir" doit provoquer l' exécution de la fonction conversion(). fr=Math." permet d' obtenir un arrondi au centième près.value=String(fr). f. 1.55957.value).formu.value e. Elle peut prendre la forme suivante : function conversion() { //lire la valeur euro var eu=eval(document.franc. de le convertir en francs et d' afficher la réponse dans la zone de saisie du montant en francs. on écrira : document. Le formulaire sera nommé "formu" en écrivant : <FORM NAME="formu"> La zone de saisie du montant en euros sera nommée "euro" en écrivant : <INPUT NAME="euro" TYPE="text" SIZE="10"> La zone de saisie du montant en francs sera nommée "franc" en écrivant : <INPUT NAME="franc" TYPE="text" SIZE="10"> d.formu. Accès aux composants L' accès au contenu des composants se fait à travers une cascade d' objets associés. Il y a d' abord l' objet document. pour obtenir le contenu de la zone de saisie du montant en euros. L' objet formu possède à son tour un champ-objet nommé euro qui représente la zone de saisie du montant en euros.euro. Ecriture de la fonction de conversion Ecrivons maintenant la fonction conversion() qui sera chargée de lire le montant en euros. On écrira donc : . //conversion et arrondi var fr=eu*6.formu. //affichage du résultat document.euro. L' objet euro possède enfin un champ nommé value qui représente son contenu. La un formule "fr=Math.round pour obtenir l' arrondi entier d' nombre à virgule. Ainsi. 2. 3. il est possible de les nommer en utilisant l' attribut NAME des balises correspondantes. pour faire référence au contenu de la zone de saisie du montant en francs. Nommer les composants Pour pouvoir faire référence au formulaire et à ses composants.franc.round(fr*100)/100.value De même.formu. } Nous avons utilisé la fonction Math. formu. //affichage du résultat document.. aucune ils instruction n' exécutée lorsque l' est expression booléenne prend la valeur false..value=String(fr). fr=Math. instruction 2. Le mot-clé else et le groupe d' instructions associé sont facultatifs. c' le deuxième groupe d' est instructions. s' ne sont pas utilisés. } III.formu. situé après le mot-clé else. instruction 2..franc. celles-ci peuvent être supprimées pour les groupes ne contenant qu' une seule instruction. //conversion et arrondi var fr=eu*6. } else { instruction 1. .9.9. } </SCRIPT> <H1>Conversion Euro-Franc</H1><HR> <FORM NAME="formu"><TABLE><TR><TD> Valeur en Euros :</TD><TD> <INPUT NAME="euro" TYPE="text" SIZE="10"></TD></TR><TR><TD> Valeur en Francs :</TD><TD> <INPUT NAME="franc" TYPE="text" SIZE="10"></TD></TR><TR> <TD COLSPAN="2"><DIV ALIGN="center"> <INPUT TYPE="button" VALUE="Convertir" ONCLICK="conversion()"> </TD></TR></TABLE></FORM> </BODY> </HTML> III.value).. Le fichier HTML a le contenu suivant : <HTML> <HEAD><TITLE>Euro-Franc</TITLE></HEAD> <BODY> <SCRIPT LANGUAGE="JavaScript"> function conversion() { //lire la valeur euro var eu=eval(document. .1 Utilisation de if Lorsque l' expression booléenne prend la valeur true. c' le premier groupe d' est instructions qui est exécuté. Résultat final Il nous suffit de regrouper tous les éléments précédents pour obtenir le résultat escompté. qui est exécuté.55957. Dans le cas contraire.round(fr*100)/100.Les conditions La syntaxe de l' instruction if prend la forme suivante : if (expression booléenne) { instruction 1.euro. Les deux groupes d' instructions sont écrits entre des accolades. (false). L' expression booléenne doit toujours être écrite entre des parenthèses. .Conception de Pages Web Dynamiques Avec PHP/MYSQL <INPUT TYPE="button" VALUE="Convertir" ONCLICK="conversion()"> 18 g. Si aucune valeur n' reconnue. instruction2.. Les boucles III.. est pour répéter n fois une suite d' instructions. contient 3 parties : initialisation: instruction exécutée avant le premier passage dans la boucle. on utilise le mot-clé BREAK qui permet de sortir directement de la structure switch.. } Les instructions situées entre accolades forment la boucle qui sera exécutée. le est il nombre de passage dans la boucle est bien égal à n. transition) { instruction1. les instructions correspondant à cette une valeur et aux valeurs suivantes sont exécutées.10.. condition. i++) { instruction1. } Le compteur i part de 0. La variable testée doit être écrite entre parenthèses.. . il La première partie. Ainsi. Comme on est parti de 0. on utilisera le modèle suivant : for (var i=0. ce sont les instructions est correspondant à default qui sont exécutées.. instruction2. Pour que seules les instructions correspondant à une valeur soient exécutées. default : instructions } Dès que la variable testée prend l' des valeurs proposées.. L' ensemble des instructions correspondant aux différentes valeurs possibles doit être écrit entre des accolades.9. On utilise en général les boucles for lorsque le nombre de passage dans la boucle est connu dès le départ. Elle prend la forme suivante : switch (variable) { case val1 : instructions case val2 : instructions case val3 : instructions . Grâce à l' instruction i++ il est incrémenté (augmenté d' unité) avant chaque une nouveau passage.Conception de Pages Web Dynamiques Avec PHP/MYSQL L' instruction switch permet de faire exécuter certaines instructions selon la valeur prise par une variable. . • transition: instruction qui est exécutée avant chaque nouveau passage dans la boucle. La boucle n' plus exécutée lorsqu' prend la valeur n. C' un compteur (souvent une variable nommée i) qui sert à déterminer le nombre de passages.2 Utilisation de switch 19 III..1 Boucle for L' instruction for prend la forme générale suivante : for (initialisation. i<n. condition: expression booléenne qui commande les passages dans la boucle qui se font tant qu' elle vaut true..10. Les accolades ne sont nécessaires que lorsqu' y a plusieurs instructions. III... • • . située entre parenthèses. "vendredi"."mardi"."samedi"]. Tant que cette expression est égale à true la boucle formée par les instructions écrites entre accolades est répétée. Par exemple.. instruction2. 2 Boucle while 20 L' instruction while prend la forme générale suivante : while (condition) { instruction1."mercredi". pour créer le tableau nommé jours qui contiendra les noms des jours de la semaine. Le tableau T pourra alors contenir 5 éléments..11. III. Les tableaux JavaScript sont des objets de type Array. Le tableau T sera alors vide. Ainsi. on les regroupe dans des un tableaux. on écrira. instruction2. 1 0 . Si le nombre d' éléments du tableau est connu. Vous pouvez créer vos propres tableaux ou utiliser ceux que JavaScript définit pour stocker certaines informations. III. par exemple : var T=new Array(5).. . Les tableaux Lorsqu' programme nécessite la création de nombreuses variables.Conception de Pages Web Dynamiques Avec PHP/MYSQL III. Il est enfin possible de créer un tableau en indiquant directement son contenu. à un élément d' tableau on utilise le nom du tableau et un l' indice de l' élément qui est un entier indiquant sa position..2 Utilisation . .11. avec le tableau jours créé précédemment. on pourra écrire : jours[i] III.. toujours écrite entre parenthèses."lundi".11.."jeudi". L' instruction while peut aussi prendre la forme : do { instruction1. la boucle formée par les instructions entre accolades est répétée tant que l' expression booléenne représentant la condition est égale à true.. } La condition. en lecture ou en écriture. } while (condition) Comme dans la forme précédente.1 Création Pour avoir accès. on pourra écrire : var jours=["dimanche". Attention : les instructions formant la boucle doivent modifier la valeur de la condition pour que l' exécution puisse s' arrêter. Chaque variable correspond alors à un indice et il est facile de parcourir le tableau en utilisant une boucle. La création d' tableau se fait donc en utilisant le un mot-clé new. est une expression booléenne.. On peut donc créer un tableau T en écrivant : var T=new Array(). T[3]=14. pour connaître le nombre d' éléments d' tableau T. Par défaut le séparateur est une virgule.. l' appel de T. -1 si a est avant b et 0 si a et b ont même rang.11. le premier élément du tableau a donc l' indice 0. Méthode sort() La méthode sort() des tableaux permet de les trier en utilisant l' ordre lexicographique (ordre du dictionnaire).join(" et ") fournira la chaîne de caractères "1 et 3 et 5". Attention. Le séparateur utilisé doit être fourni en argument. 3 et 5. Par exemple.. T[4]=10. Elle découpe une chaîne de caractères et renvoie le résultat dans un tableau. Exemple d' application . On utilise la même notation (avec les crochets) pour lire le contenu d' tableau et pour donner une valeur un à un élément.3.split(".join() fournira la chaîne de caractères "1. "3" et "5".sort() modifiera l' ordre des éléments en "avec". 21 III. T[2]=7.3.5". c. d. l' appel de T. b. si le tableau T contient 1. si la chaîne de caractères S contient "1. on pourra écrire : var T=new Array(5). si le tableau T contient les nombres 1. "avec" et "dans". La méthode sort peut utiliser en argument un nom de fonction de comparaison.reverse() contient 5. Méthode split() des chaînes de caractères Les objets chaînes de caractères possèdent une méthode split() qui réalise l' opération contraire de join(). 3 et 5 : l' appel de T. Propriété length La propriété length d' tableau indique le nombre d' un éléments qu' contient. Méthode reverse() La méthode reverse() des tableaux fournit un nouveau tableau contenant les mêmes éléments mais dans l' ordre inverse.5". S. on peut en choisir un autre en l' indiquant comme paramètre. Par exemple. les indices commencent à 0. si le tableau T contient les chaînes de caractères "encore". le tableau T. e. Méthode join() La méthode join() permet de regrouper tous les éléments d' tableau dans une seule chaîne de un caractères. il Par exemple. etc.length.Conception de Pages Web Dynamiques Avec PHP/MYSQL pour obtenir le nom du jour d' indice i. a.") renvoie un tableau de 3 éléments qui sont "1". le deuxième a l' indice 1.3 Quelques propriétés et méthodes des objets tableaux Les tableaux étant des objets ils disposent de propriétés et de méthodes dont l' utilisation peut se révéler intéressante. "dans" et "encore". 3 et 1. T[0]=12. Par exemple. T[1]=15. Par exemple. Par exemple. on écrira : un var n=T. pour créer un tableau de 5 nombres. Celle-ci doit comparer deux variables a et b et renvoyer 1 si a est après b. L' indice est toujours placé entre deux crochets. </P>").split(" ").writeln("<P>Il y a ".reverse().S." mots dans la liste. document.sort().writeln("<P>Ordre alphabétique : ". var n=T. document. var T=S. document. compte le nombre de mots.writeln("<P>Ordre inverse : ". </SCRIPT> </body></HTML> 22 .join(" ")). T. une inverse l' ordre des mots et place les mots dans l' ordre alphabétique.T. document.length.n.writeln("<P>Liste de mots : "."</P>"). <HTML> <head><title>Méthodes des tableaux</title></head> <body> <h1>Méthodes des tableaux</h1></HR> <SCRIPT LANGUAGE="JavaScript"> var S="poire orange abricot pomme fraise raisin". T.join(" ")).Conception de Pages Web Dynamiques Avec PHP/MYSQL L' exemple suivant construit un tableau à partir d' liste de mots. . En janvier 1999. La version PHP4 est sorti en Avril 2000 quant à la version PHP5 vit le jour en 2003. MySQL. IV.. PhpMyAdmin. Installation .3. De nombreux sites dans le monde. et est parmi eux de très nombreuses applications professionnelles ont choisi PHP.0 permet au développeur d' intégrer des instructions de programmation puissantes directement dans du code HTML. A l' époque PHP supportait déjà des requêtes SQL et.2.. Lorsqu' réalise de sites Internet dynamiques. PHP et MySQL aussi). IV . Recopiez dans un éditeur la source suivante puis enregistrez sous le nom essai_1.0 de PHP (Personal Home Page). Exécutez-le après avoir éventuellement désactivé le PWS . Description La souplesse et la performance de PHP n' plus à prouver.\EasyPHP\www\ .. Allez sur le site www. comme cela arrive souvent sur le Web. quelqu' a pensé à simplifier ça ! un Installer EasyPhP 1. PHP est né avec le site de RASMUS Lerdof en 1994: une page personnelle. modification. mais aussi d' contrôler l' en accès. et lecture). De nouvelles fonctions ont ainsi est pu voir le jour et de nombreux bugs ont été rapidement résolus.. 3. eme CHAPITRE IV. Une communauté de développeurs s' crée autour du langage.000 sites ont adopté le langage PHP. téléchargez le logiciel gratuit EasyPHP.. C' dans ce est dossier que vous mettrez les fichier *.PHP. heureusement. avec son CV qui permettait à l' origine de conserver une trace des visiteurs. Origine de PHP De simple idées aboutissent à de magnifiques créations.org. La version 3. Cela signifie que c' un ensemble est d' applications permettant de manipuler les données (ajout. suppression. Il existe de multiple de bases de données utilisables avec PHP.0 sortit le 6 juin 1998.. on est vite amené à utiliser une base de données pour on stocker des informations.Conception de Pages Web Dynamiques Avec PHP/MYSQL 23 Le Langage PHP IV. MYSQL est un système de gestion de base de données (SGBD). PHP. une nouvelle icône apparaît à côté de l' heure en bas de l' écran indiquant que Easyphp est actif (par défaut Apache. Rasmus a donc décidé de mettre en ligne sa première version 1. 2. il y a tout un tas de fichiers à installer.php attention à l' extension ! dans le dossier essais .. Mais le MYSQL est très largement diffusé sur Internet. serveur Apache.1. La version 2.easyphp. Pour pouvoir utiliser PHP. des internautes ont rapidement voulue leur propre copie de programmes. Il est donc tout naturel que les sites interactifs fassent appel au serveur de base de données gratuit MySQL. plus de 100. Créez sur votre PC un dossier essais dans le dossier racine . > être Affichage) 2. vous devrez renommer ce fichier en *. donc: . relisez cette fiche et REESSAYEZ!!! Astuce : Internet Explorer affiche Intranet local en bas de fenêtre. Les deux serveurs PWS (ou IIS) et Apache ne fonctionnent pas ensemble à moins qu' ne soient ils sur des ports différents.. Exécutez en tapant l' URL http://localhost/essais/essai_1. Le navigateur peut parfois afficher le dialogue de connexion..conf et vous utilisez alors http://localhost:81/ au début de vos URL locales pour le PHP.Conception de Pages Web Dynamiques Avec PHP/MYSQL 24 <HTML><HEAD><TITLE>Essai 1</TITLE> </HEAD><BODY> Nous sommes le <? echo date("d/m/Y"). Autre possibilité : click droit sur l' icône.0. demandez la connexion si nécessaire (elle sera interne donc gratuite) et la date courante doit apparaître .html. Pour que le serveur analyse et exécute les requête PHP..4.. comme pour aller sur le Web.soit vous pensez à désactiver l' avant d' un activer l' autre (click droit sur leurs icônes respectives) ..php. ?> </BODY></HTML> 4. il faut se est connecter au serveur interne en tapant dans la barre d' adresses de votre navigateur une URL complète: http://localhost/essais/essai_1.. Le code PHP est simplement inséré au sein d' document est un HTML tout à fait classique. 3. . Si vous ne faites pas cette . 5.php dans le navigateur..soit vous mettez Apache sur le port 81 en modifiant le fichier .\EasyPHP\apache\conf\httpd.0.. c' que vous n' pas connecté au serveur interne. inutile donc d' est êtes aller plus loin. puis Web local qui liste vos dossiers du www.htm ou *. Ce n' plus le cas avec vos pages asp ou php.txt risque d' ajouté ! (Menu du dossier : Outils > Options des dossiers.. L' important est que vous signaliez qu' s' de code Php avec des balises il agit comme ci-dessous: <?php …Instructions PHP ?> ou <?php …Instructions PHP ?> Premiers scripts : Afficher du texte: A partir du moment où vous placez du code PHP dans un fichier *.. donc gratuite ! Si la date ne s' affiche pas. Mise en pratique de PHP La notation en PHP n' pas très difficile. Remarques 1. Pour faire démarrer PHPMY Admin: dans IE taper http://127. vous cliquiez sur l' icône de votre page html pour lancer le navigateur et l' afficher. si vous êtes correctement connecté ! 4. "L' exemple n' affiche pas la date !" : Jusque là.1/mysql/ IV.. et il faut alors choisir "Se connecter" mais ce sera une connexion interne.. Pour pouvoir produire un fichier php il faut avoir paramétré Windows afin qu' affiche toutes les il extensions sinon un .php. echo "bonjour" . // chaîne . // commentaire de fin de ligne echo " monde !" # commentaire de fin de ligne ?> </p> </body> </html> I V . <? Nous avons ajouté la balise Font comme en HTML pour formater le texte.0 // double $variable = "5". alors qu' constante possède une valeur fixe qui n' définie qu' seule fois. une <?php echo"<font face=\"arial\" size="2\" color=\"#003300\"> Bienvenue à l' IFP!</font>". Exemple: " devient \". une il <br> est une balise HTML qui permet le saut de ligne. <html> Conception de Pages Web Dynamiques Avec PHP/MYSQL 25 Essayez: <?php echo "hello word ! <br> bonjour monde !" ?> C' la fonction echo que nous utiliserons pour afficher du texte à l' est écran. $variable = 5. le code risque d' apparaître en toute lettre dans le navigateur sans être exécuter par le serveur. Ici. <? </p> </body> </html> manipulation.5 . "<br>" . il s' tout simplement de dire à PHP qu' ne s' pas d' élément de la syntaxe agit il agit un du script mais bien d' apostrophe ou guillemet qu' faut pas afficher. Les variables une est une peuvent contenir plusieurs types de données : entier.). Notez qu' instruction PHP se termine par un point virgule(. <html> <head> </head> <body> <p> <?php /* commentaire de 2 lignes */ echo "hello word !". la grosse différence. étant l' ajout des antislash avant chaque caractère spécial. double et chaîne.<head> </head> <body> <p> <?php echo "Bienvenue à l' IFP"". on voit bien que la phrase n' pas du tout formatée. La notion de variable Une variable permet de définir une valeur qui peut être modifiée tout au long de l' exécution du script. // entier $variable = 5. voici donc comment l' peut inclure les balises HTML dans le PHP (ciest on dessous). ou encore: $a=20.Conception de Pages Web Dynamiques Avec PHP/MYSQL 26 IV. il suffit de lui assigner une valeur. $b = 15. dans ce cas il suffit de procéder ainsi : date("H\hi"). un serveur situé au Canada vous donnera l' heure du Canada. $Variable ne correspond pas a $variable. $a = 10. on y place un backslash comme devant tous les caractères spéciaux qui ne doivent pas être interprétés comme du code. Pour récupérer une variable. La fonction date() permet d' obtenir l' heure local du serveur mais attention l' heure local est fonction de la situation géographique du serveur n lui-même. echo $b. En effet. remarquez l' antislash devant le deuxième "h". ?> Dans le code ci-dessus nous générons la variable $date en lui donnant la valeur de ce que retourne la fonction date("d-m-y"): le jour. echo $c.5.1 Définir des variables Pour définir des variables. " Texte après". $b=$a/2. en effet. Les paramètres contenues entre les parenthèses d-m-y peuvent être placés dans l' ordre que vous désirez. On peut faire des opérations sur les variables . $variable . $heure = date("H:i"). Pas de déclaration de variable: <html> <head> . IV. // chaîne valeur $nom_de_la_variable = 10. ce sont deux variables différentes. echo "Texte avant $variable Texte après". echo "Nous sommes le $date() et il est $heure". Pour cela. Astuce pratique: Vous voudrez peut être remplacer le":" par un "h" pour que le format Français soit vraiment respecté (ex: 13h15). le mois et l' année.2 Afficher la date du jour et l'eure en cours h Nous utilisons pour cela la fonction date(): <? $date = date("d-m-y"). $c = $a + $b. echo "Texte avant " .5. on l' appelle tout simplement par son nom : echo $variable. // entier valeur Attention toutefois. il faut spécifier à PHP que cette lettre est un caractère à afficher et non à nouveau l' heure en cours. il faut utiliser la syntaxe suivante : $nom_de_la_variable = "valeur". echo "variable a valeur $b isset : " . son contenu est utilisé. echo "\$b = $b<br>" . si vous souhaitez récupérer la valeur d' constante. $b = 13.3. echo isset($b). ?> • EXECUTION variable non déclarée isset : variable NULL isset : variable a valeur 13 isset : 1 après unset($b) isset : • isset(variable): détermine si une variable est affectée/définie. echo isset($b).</head> <body> <p> <?php $a = 3. il suffit de l' une appeler par . o sinon l' interpréteur lui affectera la valeur en lui assignant NULL par défaut o Il n' pas nécessaire en PHP de typer les variables. le nom d' constante est une en majuscule. echo "\$a = $a<br>" . echo "<br>" . on utilise la fonction define().3 $a = 3a Conception de Pages Web Dynamiques Avec PHP/MYSQL 27 les variables en PHP n' pas besoin d'être déclarées. echo "\$a = $a<br>" . sinon FALSE • unset(variable) : détruit une variable unset() à l' intérieur d' fonction n' pas la même portée de destruction suivant le type de variable une a IV. Par la suite. echo "apres unset(\$b) isset : " . echo isset($b). echo isset($b). echo "\$a = $a<br>" . il suffit de leur assigner une valeur pour en définir le type.3 variable affectée ou non <?php echo "variable non declaree isset : " .4 Définir des constantes Pour définir des constantes. ont o on peut commencer à les utiliser sans en avoir averti l' interpréteur au préalable ! o si la variable existait précédemment. $b = NULL. IV. unset($b).5. echo "variable NULL isset : " . echo "<br>" . $a = 3.5. c' est est-à-dire de définir leur type. echo "<br>" . La plupart du temps. ?> </p> </body> </html> • EXECUTION $a = 3 $a = 3. echo "<br>" . $a = "3a". renvoie TRUE . ?> • EXECUTION 3.Conception de Pages Web Dynamiques Avec PHP/MYSQL son nom : 28 <?php define("PI". echo BR. $a = 2 * PI .5.5. "<br>"). if(empty($variable)) echo "existe". il faut utiliser dans ce cas la fonction defined() qui renvoie true en cas de réussite et false sinon. else echo "N'existe pas".1416). 3. if(defined("CONSTANTE")) echo "Existe". $variable = "a"."a"). boolean. else echo "n'existe pas". echo $a. IV. define("CONSTANTE". echo PI. Pour vérifier si une constante existe. echo BR.6 Type de variable La fonction gettype() permet de changer le type de données d' variable.1416 6. define("BR". On peut assigner les types une suivants: • Class • integer • object • string • array • double • unknown type if(gettype($variable) == "integer") La fonction settype() permet de définir explicitement le type d' variable.5 Une variable Existe ou pas Pour vérifier si une variable existe.2832 Une constante est une valeur fixe nommée : • l' identificateur suit la syntaxe PHP des identificateurs sans le $ !! • la valeur est integer. flot ou string • sa portée est globale IV. on utilise la fonction empty() qui renvoie true si elle existe et false sinon. une . GET (envoi de paramètres visibles) • l' attribut action précise l' URL demandée par la requête HTTP un formulaire se compose d' éléments : • la balise input définit des champs d' information simples elle possède un attribut name pour désigner l' élément et éventuellement un attribut value de valeur initialeelle se sub-divise selon son attribut type • text un petit champ pour que l' utilisateur saisisse un nombre ou une phrase • button pour cliquer dessus • checkbox des cases à cocher (information on/off) • radio des "radio-boutons" (information on/off mais un seul peut être coché à la fois !) • hidden est un champ caché pour transmettre des informations vers le serveur. $$variable1 = "valeur_variable2". IV. "integer").7.php"> Nom : <input type="text" name="nom"><br> Maitre : <input type="text" name="maitre"><br> Aboiement : <input type="text" name="aboiement"><br> Nombre de puces : <input type="text" name="nombrePuces"><br> <input type="submit" name="submit" value="Soumettre"> </form> </p> </body> </html> • Les formulaires constituent un moyen de récupérer de l' information provenant de l' utilisateur la balise form délimite/définit le formulaire • l' attribut method permet de choisir la méthode d' envoi HTTP entre POST et.5. echo $$variable1. est • password un champ texte mais masquant le texte tapé • submit est l' action indispensable lorsque le formulaire est utilisé pour envoyer de l' information IV. une $variable1 = "nom_de_la_variable2"..5. Les formulaires . Variable variable Une variable variable permet de prendre la valeur d' variable 1 pour donner le nom a la variable 2. sans que l' utilisateur ne le sache : c' très utile pour gérer un caddie . La variable $variable renverra maintenant 2 et non 2.6. settype($variable. <html> <head> <title>formulaire à soumettre</title> </head> <body> <h2 align=center> formulaire à soumettre</h2> <p> Renseigner le chien :<br> <form method="post" action="submit1. à déconseiller..Conception de Pages Web Dynamiques Avec PHP/MYSQL 29 $variable = 2. *. -. echo $i++*$j+1. !.8.$i : $i . echo "int i = $i. . $j += $i .$i : $i . echo $j > $i ? $j . . j = 6 affectation $j += $i : j=9 expression ($j > $i ? $j ..opérateurs de pré ou post incrémentation et décrémentation : o dans l' expression ci-dessus. echo "<br>" . echo 'expression ($j > $i ? $j . $i++ la valeur 2 de $i est utilisée dans l' expression avant de l' incrémenter de 1. $j = 6.$j.où op est +.textarea pour un texte multi-lignes... Les expressions: . * Voici quelques exemples d' objets de formulaire : Nom Zone de texte Zone de texte déroulante Case a cocher Resultat valeur initiale Valeur initiale 30 Code <input type=' name=' text' nom' size=' value=' 20' valeur initiale' > <textarea rows=' name=' 1' nom' cols=' >Valeur initiale</textarea> 16' <input type=' checkbox' name=' nom' value=' checked> ON' <select size=' name=' > 1' nom' <option value=' valeur1' >valeur1</option> <option value=' valeur2' >valeur2</option> <option value=' valeur3' >valeur3</option> </select> <input type=' radio' value=' nom' checked name=' nom_groupe' > Menu déroulant valeur1 Case d' option Bouton titre <input type=' submit' value=' name=' > titre' nom' Quelques opérateurs peu ou mal connus <?php $i = 2. ?> • EXECUTION int i = 2. /. echo 'affectation $j += $i : <br>' .$j) 6 • ++ et -. j = 6 expression $i++*$j+1 : 13 i = 3.. &. • exp_bool ? expression1 : expression1 utilise l' opérateur conditionnel ternaire IV. c' une post-incrémentation est • $var op= expression est équivalente à $var = $var op expression .Conception de Pages Web Dynamiques Avec PHP/MYSQL depuis l' utilisateur vers le serveur : il "envoie" les données récupérées de l' utilisateur dans le formulaire vers le serveur • reset pour remettre le formulaire dans son état initial . echo "j = $j<br>" .select pour les listes . j = $j<br>" . echo "<br>" . echo "i = $i.$i : $i . j = $j<br>" .$j) ' . echo 'expression $i++*$j+1 : ' . il est possible d' utiliser des entiers comme indices. La variable $provider[moyen] va aussi renvoyer club-internet. L' indice peut être n' importe quel entier. 1 et 2. Il est aussi possible d' utiliser la fonction array() pour créer des tableaux utilisant des indices chaine : $provider = array("rapide" => "wanadoo". "club-internet". $provider[] = "aol". 2. 80 et 90. $provider[1] = "club-internet". Avec des indices chaines Comme nous avons déja pu le constater ci-dessus. "lent" => "aol"). Affecter des valeurs et des indices avec array() : $provider = array(1=> "wanadoo". ainsi.9. Ainsi $provider[3] va renvoyer aol. en placant l' opérateur =>. Création de tableaux Un tableau est un conteneur renfermant plusieurs valeurs. "aol"). $provider["moyen"] = "club-internet". . Toutefois. b. Tout simplement. 2 et 3 est au lieu de 0. l' élément est tout simplement ajouté a la suite. Affecter des valeurs et des indices explicites : $provider[0] = "wanadoo". cela aurait pu être 20. une Variable Valeur $provider[0] wanadoo $provider[1] club-internet $provider[2] aol Il existe plusieurs manières pour créer des tableaux : a. alors expression1 sinon expression2 31 IV. Affecter des valeurs avec array() : $provider = array("wanadoo". Il est possible de placer l' opérateur devant n' importe quelle valeur du tableau. c' a dire que les autres éléments vont prendre les valeurs suivantes.Conception de Pages Web Dynamiques Avec PHP/MYSQL signifie si exp_bool vaut true. "club-internet". il est aussi possible d' utiliser des chaînes de caractères. En ne mettant rien entre crochet. 4. $provider["lent"] = "aol". La variable $provider[moyen] va renvoyer club-internet. $provider[2] = "aol". Ainsi $provider[3] va renvoyer aol. 3. ici ce sera 1. Chaque élément d' tableau possède une un valeur propre ainsi qu' clé qui permet de faire référence à cet élément. ce qui peut être plus clair : $provider["rapide"] = "wanadoo". Affecter des valeurs aux variables : $provider[] = "wanadoo". Avec des indices entiers 1. $provider[] = "club-internet". "moyen" => "club-internet". vous changez l' indice. "aol"). } b. for($nb =0.1 Parcourir un tableau a. il faut utiliser la boucle for() un mais aussi la fonction count(). $key = key($provider). il faut seulement initialiser la variable $nb avec l'indice de départ du tableau afin que l'ensemble des valeurs soit affichées. $val) = each ($provider)) { echo "L'indice $key correspond a $val<br>". quel que soit le nombre de un valeurs. "moyen" => "club-internet". $provider[$nb] != false. "aol").9. } Bien évidemment. il existe une autre façon pour extraire les valeurs d' tableau. Parcourir un tableau utilisant des chaînes comme indices : Lorsque l' indice est une chaine. $nb++) { echo $provider[$nb]. $nb++) { echo $provider[$nb]. $nb <= $elements_table. vous ne pouvez pas utiliser de boucle for(). } . reset($provider). $key = key($provider). while(list ($key. Parcourir un tableau utilisant des entiers comme indices : La manière la plus rapide pour extraire l' ensemble des valeurs d' tableau. for($nb =0."<br>"."<br>". $val = current($provider). 90=> "club-internet". $val = current($provider). est d' utiliser une boucle for() : $provider = array("wanadoo". reset($provider). $nb++) // pour l'indice 10) Cependant. $provider[$nb] != false. si le tableau ne commence pas par l' indice 0. il faut donc utiliser une boucle while() : $provider = array(60 => "wanadoo". "lent" => "aol"). "aol"). "club-internet". $val) = each ($provider)) { echo "L'indice chaine <b>$key</b> correspond a <b>$val</b><br>". while(list ($key. "club-internet". $provider = array("wanadoo". "aol").Conception de Pages Web Dynamiques Avec PHP/MYSQL 32 IV. } Lorsque vous avez plusieurs indices qui ne se suivent pas. $elements_table = count($provider). il est nécessaire d' utiliser une boucle while pour afficher l' ensemble des valeurs et des indices du tableau : $provider = array("rapide" => "wanadoo". (ce qui donnera : for($nb = 10. • IV. $valeur3 = "12"."c" => "a". $valeur3 = "12". print($result). Les fonctions Mathématiques Plusieurs nombres à ajouter : $valeur1 = "10". $result = $valeur1 * $valeur2 * $valeur3. $lettres = array("a" =>"b". while(list ($key. print($result)."a". $valeur2 = "11". $key = key($lettres). $result = $valeur1 . $valeur3 = "12". $key = key($lettres). $val = current($lettres). $valeur2 = "11".10. en conservant les indices."d" => "d"). "b" => "c". } Ceci va ranger les valeurs du tableau dans l' ordre alphabétique en conservant les indices. print($result). sort($lettres).2 Fonctions de tri 33 Il existe plusieurs fonctions permettant de trier les valeurs d' tableau. • Multiplier : $valeur1 = "10".9.Conception de Pages Web Dynamiques Avec PHP/MYSQL IV. asort($lettres)."d"). print($result). • • . } Ceci va ranger les valeurs."c". $result = $valeur1 + $valeur2 + $valeur3. $val) = each($lettres)) { echo "L'indice $key correspond à $val<br>\n". while(list ($key. $result = $valeur1 / $valeur2 / $valeur3. Diviser : $valeur1 = "10". $val) = each($lettres)) { echo "L'indice $key correspond à $val<br>\n". $valeur2 = "11". $valeur3 = "12". $valeur2 = "11".$valeur2 . $val = current($lettres).$valeur3. Soustraire : $valeur1 = "10". un $lettres = array("b". $arg2 = "Flen". } type("Arial". ni a arg3".12.1 If. elseif et else sont utilisés pour vérifier quelque chose (si. } • Opérateurs de comparaison : < (est inférieur a) > (supérieur a) <= (est inférieur ou égal) >= (est supérieur ou égal) == (est egal a) != (n' pas égal a) est AND && (et) OR || (ou) ! (sauf) . } elseif($arg1 == $arg3) { echo "Valeur de arg1 égale a arg3". $arg3 = "Flen".sinon). Les instructions IV. Les fonctions 34 IV..12.1 Définir des fonctions : o Fonctions simples : function bonjour() { echo "Bonjour !".autrement. $arg1 = "Flen". elseif et else • if. } bonjour(). $taille) { echo "<font face=' $police' size=' $taille' >Texte Mis en forme</font>".Conception de Pages Web Dynamiques Avec PHP/MYSQL IV... if($arg1 == $arg2) // Pas de .. "2"). o Fonctions complexes : function type($police.11. IV.11. a la fin { echo "Valeur de arg1 égale a arg2". } else { echo "Arg1 n'est ni égal a arg2. case 1 : $res = "mardi".. } o l' expression est de type int. break. • break IV. ?> } EXECUTION pour 23 : le 23-ième de l' année 2004 est un vendredi • switch : o switch (expression) { case valeur1 : instructions break.. define("premier"..2 switch : le "choix parmi" 35 .me de l'anné.. string o Elle est évaluée puis le programme exécute alors les instructions à partir de la valeur correspondante jusqu' rencontrer le mot break à o si aucune valeur correspondante est proposée. o remarquons que plusieurs valeurs peuvent être regroupées comme ci-dessus. switch (($recu_niemeJour + premier -1)% 7) { case 0 : $res = "lundi". case 2 : $res = "mercredi".3)."recu_"). default : $res = "erreur". . case 6 : $res = "dimanche". break.Conception de Pages Web Dynamiques Avec PHP/MYSQL Exemple: <?php import_request_variables("P". } print("le $recu_niemeJour-iè. default : instructions break. break...e 2004 est un $res"). break. break. alors le programme commence en default.12. . case valeur2 : instructions break. float. case valeur7 : case valeur8 : instructions break. while (test) instructionCorpsDeBoucle o évaluation du test.. $i++. o . while ($i < $recu_nombre) { print("\$i = $i<br>"). $i = 0.3 boucles while et do-while avec test = expr.. IV.12."recu_").Conception de Pages Web Dynamiques Avec PHP/MYSQL permet de sortir d' instruction switch. while ($i < $recu_nombre). si sa valeur est true. alors exécution de l' instruction. o évaluation du test. o évaluation du test. foreach une 36 <?php import_request_variables("P". $i += 1... o . si sa valeur est true. while. alors exécution de l' instruction. for. $i = 0. . booléenne o exécution de l' instruction. si sa valeur est true. si sa valeur est true. alors exécution de l' instruction. } ?> • EXECUTION pour 4 : $i = 0 $i = 1 $i = 2 $i = 3 puis $i = 0 $i = 1 $i = 2 $i = 3 do instructionCorpsDeBoucle while (test) .. alors exécution de l' instruction.. print("puis<br>"). do { print("\$i = $i<br>"). o arrêt de la boucle quand la valeur du test devient false. o évaluation du test. l' instruction dite corps de la boucle est une instruction simple. } ?> ?> • EXECUTION pour 14 : 1 est premier 2 est premier 3 est premier 5 est premier 7 est premier 11 est premier 13 est premier Syntaxe for (initialisation . $nombre++) { $divisible = FALSE. .. Conception de Pages Web Dynamiques Avec PHP/MYSQL 37 <?php import_request_variables("P". while (test) { instruction_corps_de_boucle nouvelle_itération } • continue passe directement à l' itération suivante de la boucle IV. !$divisible && ($diviseur>1).. test . for ($nombre=1.12.o arrêt de la boucle quand la valeur du test devient false. bouléenne o nouvelle_itération = instruction qui prépare l' itération suivante (peut être vide) o la boucle for fonctionne comme initialisation.5 array "associatif" . $nombre<=$recu_entierMax. • Dans les 2 formes. if (! $divisible) print("$nombre est premier<br>").12."recu_"). $diviseur--) $divisible = ($nombre % $diviseur == 0). un bloc ou une instruction alternative ou une boucle. for ($diviseur=floor($nombre/2).4 boucle for IV. nouvelle_itération ) instruction_corps_de_boucle o l' instruction d' initialisation peut être vide o test = expr. "samedi" => "week-end".. l' array peut être utilisé comme : . "vendredi" => "travail". . • array(cle0 => valeur0.) crée un tableau avec les éléments indiquées dans l' ordre les éléments du tableau sont respectivement les paires (clé.table accessible par clé.. ensemble. "mercredi" => "travail". ?> • EXECUTION le samedi est un jour de week-end lundi : travail mardi : travail mercredi : travail jeudi : travail vendredi : travail samedi Un array "PHP" est un ensemble ordonné d' éléments accessible par un index (ordered map) : o c' une association de paire (clé.. "dimanche" => "week-end"). cle1 => valeur1.. foreach ($jourSemaine as $jour => $sorte) print("$jour : $sorte <br>")."<br>").tableau classique.$jourSemaine["samedi"]. $compte = 0. foreach ($jourSemaine as $sorte) if ($sorte == "travail") $compte++.pile. printf(" il y a $compte jours de travail sur "..liste. dictionnaire. .count($jourSemaine)).. . • les éléments se manipulent ainsi : $tab[clé] où clé est un entier ou un string • foreach o PHP4 ! o foreach(array_expression as $key => $value) réalise une boucle où les variables $key et $value prennent successivement les clés et valeurs des éléments du tableau. "jeudi" => "travail".Conception de Pages Web Dynamiques Avec PHP/MYSQL 38 <?php $jourSemaine = array("lundi" => "travail". printf("le samedi est un jour de " . valeur) spécifiées le premier élément a la clé cle0 et la valeur0 le second élément a la clé cle1 et la valeur1 . . o foreach(array_expression as $value) réalise une boucle où la variable $value prend successivement les valeurs des éléments du tableau . file. "mardi" => "travail". valeur) : la clé permet d' est accéder à l' élément o la clé est soit un entier soit une chaîne o la valeur peut être de n' importe quel type o en PHP4. V. Enregistrement dans une table Mysql Considérons une table valeurs qui se trouve dans une base essai.Structure de cette table valeurs : CREATE TABLE valeurs ( num int(11) DEFAULT '0' NOT NULL auto_increment.2. $user.4. Ils sont tous de type Varchar de longueur 50.0. $bdd = "essai". Création de la base de données Pour exploiter une base de données. Créons une table avec trois champs: Nom. prenom et email. la première chose à faire est évidemment de créer cette base. $requete). nom blob NOT NULL. Il existe pour cela un outil très pratique: PHPMYADMIN. il faut se connecter.1. string [password] ). il faut utiliser la fonction mysql_db_query(). mysql_select_db($bdd) or die("erreur de connexion a la base de donnees"). int [link_identifier] ). string query. Pour exécuter une requête SQL. il faut utiliser la fonction mysql_connect().Conception de Pages Web Dynamiques Avec PHP/MYSQL 39 V. Connexion à Mysql Pour se connecter à Mysql par l' intermédiaire de PHP. V.com)". eme Chapitre MYSQL V. email) VALUES ('Benahmed'. V. 'smoumou@hotmail. $requete2 = mysql_db_query("bdd". Exemple : $host = "127. Dans une base de données Mysql les informations sont stockées dans des tables. string [username] . mysql_connect($host. Exécution d'ne requête SQL u Avant tout. 'farid'.1". . $requete = "INSERT INTO list (nom.3. . I) $mysql_connexion = mysql_connect("localhost". Syntaxe de la fonction : int mysql_connect(string [hostname [:port]]. Exemple : Insertion de données dans la table list.0. "root".$password) or die("erreur de connexion au serveur"). prenom. Syntaxe de la fonction : int mysql_db_query(string database. "motdepasse"). $user = "root". PRIMARY KEY (num)). // Execution de cette requete dans la base essai $execution = mysql_db_query("essai". ?> La table Mysql contiendra ensuite : num nom prenom 1 le_nom le_prenom V. } // La connexion Mysql est indisponible else echo "<HTML><HEAD><TITLE>Erreurs</TITLE></HEAD><BODY><font face='Verdana' size='2'>Vous avez du faire une erreur : Ce problème se pose soit : <br>. MDP : '[vide]'. $requete). $requete = "SELECT * FROM table_article". echo "<font face='Verdana' size='2'>Les valeurs ont bien été enregistrées dans la table <b>valeurs</b></font>".Soit vous n'avez pas lancé MYSQL. "").'flenou')". $requete). c'est Host : 'localhost'."root". veuillez vérifier</font></body></html>".<br>. echo "<table>". le login et le mot de passe SVP) $mysql_link = mysql_connect("localhost".<br>. Extraction de données Comme toujours. login : 'root'. // Vérification de la validité de la connexion MYSQL if($mysql_link) { // Requete d' insertion MYSQL $requete = "INSERT INTO valeurs (nom. $result = mysql_db_query("base". une Pour extraire la totalité d'une table dans un tableau : $mysql_link = mysql_connect("localhost". while ($voir = mysql_fetch_array($result)) . "root". ni la table MYSQL. ces champs ayant été saisis dans un formulaire) if($nom != "" && $prenom != "") { // Connexion a Mysql (changer l' host. 40 Le script PHP : <?php // Vérification des champs nom et prenom (si il ne sont pas vides ?.Conception de Pages Web Dynamiques Avec PHP/MYSQL prenom blob NOT NULL. nous allons utiliser la fonction mysql_fetch_array() ainsi qu' simple boucle while{}.Parce que vous n'avez pas changé le Mot de passe d'accès a MYSQL dans ce programme (Par défaut.prenom) VALUES ('flen'.5. il faut d' abord se connecter à mysql .Parce que vous n'avez pas créer la base. Pour extraire des données. // Les champs ne sont pas tous remplis } else echo "<HTML><HEAD><TITLE>Erreurs</TITLE></HEAD><BODY><font face='Verdana' size='2'>ATTENTION : Le champs nom ou prénom n'a pas été remplis correctement.</font></body></html>".""). "</font></td> <td><font face='Verdana' size='2'>Prenom : ".1 Exécution de requêtes Pour créer une table mysql. "delete from essai Where nom='flen'"). echo "<table>". "root". vous devez utiliser la fonction CREATE TABLE. V. vous pouvez utiliser par exemple PhpMyAdmin (Le plus connu) ou bien directement exécuter la requete avec mysql_db_query() de php. "root". Conception de Pages Web Dynamiques Avec PHP/MYSQL 41 Pour extraire une partie d'une table dans un tableau : (ici.$voir[nom_colone]. Suppression de données dans la table essai: On peut effacer des données dans une table grâce à la fonction delete from $mysql_link = mysql_connect("localhost". } echo "</table>"."</font></td> </tr>". c' très simple : est A gauche. . cliquez sur le lien intitulé par le nom de votre base de données.6. ""). ""). puis dans le formulaire (Voir ci-contre). $result = mysql_db_query("bdd". La table ci-dessous contiendra toutes les colonnes en bleu.{ echo "<tr> <td><font face='Verdana' size='2'>Nom : ".$voir[nom_colone2].6. $requete = "SELECT * FROM table_article WHERE nom='Mohamed'". while ($voir = mysql_fetch_array($result)) { echo "<tr> <td><font face='Verdana' size='2'>Nom : ". faites un copier coller de votre fichier contenant le code SQL ou bien tapez directement la requête que vous souhaitez exécuter. $requete). Voici la syntaxe simple de l' utilisation de cette fonction.$voir[nom_colone]. mysql_db_query("bdd". sur free c' votre est login."</font></td> <td><font face='Verdana' size='2'>Prenom : ".2 Création de table Afin de créer une table Mysql. Avec PhpMyadmin. Syntaxe Mysql V."</font></td> </tr>". Cliquez tout simplement sur le Bouton Exécuter pour terminer.6.$voir[nom_colone2]. echo "</table>". V. la ligne ou la colone nom = Mohamed) $mysql_link = mysql_connect("localhost". le WHERE permet de choisir quelle ligne va être supprimée. Sachez que vous pouvez aussi utiliser PhpMyAdmin pour créer vos tables. il faut utiliser la fonction DELETE FROM. codepostal INT (5) not null . adresse VARCHAR (255) not null . pays VARCHAR (100) not null . vous pourrez l'utiliser pour vos requêtes. Suppression de données Pour supprimer des lignes contenues dans une table. Syntaxe : DELETE FROM nom_table WHERE champs = 'valeur' En fait. Ajouter une colonne : ALTER TABLE essai ADD email VARCHAR(100) not null b.Conception de Pages Web Dynamiques Avec PHP/MYSQL CREATE TABLE essai (num INT not null AUTO_INCREMENT. une a. nom VARCHAR (100) not null . Exemple pour notre table essai : DELETE FROM essai WHERE num = ' 2' V. ce qui vous évitera de taper la requête. PRIMARY KEY (num)). il esiste la fonction ALTER TABLE qui permet d' ajouter ou de supprimer des champs d' table.3 Modification d'ne table u . Supprimer une colonne ALTER TABLE essai DROP email c. ville VARCHAR (100) not null .6. prenom VARCHAR (100) not null . (Voir ci-contre) 42 Vous évitez de créer un nouvelle fois la table que vous souhaitez modifier. Par exemple si le champs 'num' est AUTO_INCREMENT. Conception de Pages Web Dynamiques Avec PHP/MYSQL 43 .