TP HTML n°3 : Les formulaires et le PHP
Transcription
TP HTML n°3 : Les formulaires et le PHP
TP HTML n°3 : Les formulaires et le PHP 1°) Qu'est-ce qu'un formulaire ? En HTML, un formulaire est un espace de saisie dans une page web, pouvant comporter plusieurs zones, ou champs : on peut y saisir du texte, cocher des cases, effectuer un choix dans une liste de termes prédéfinis, appuyer sur des boutons... Ces zones de saisie assurent une interaction entre la personne utilisant le site web et la machine (serveur) qui héberge ce site. Les boutons des formulaires permettent de lancer des actions prédéfinies par l'auteur du site. Ces actions sont des petits programmes appelés scripts (créés en javascript, PHP, Perl...) qui envoient les données saisies au serveur. Ce dernier les traite et renvoie une réponse à l'utilisateur sur le site web qu'il consulte. Dans ce TP, nous allons apprendre à coder un formulaire en HTML et à coder un script PHP minimaliste qui traite ce formulaire et renvoie une réponse à l'utilisateur. 2°) Création du formulaire Un formulaire s'insère simplement dans le code votre page HTML en utilisant la balise form. Cependant, cette balise nécessite obligatoirement l'utilisation d'attributs bien spécifiques. En effet, il est indispensable d'indiquer de quelle manière les données saisies par l'utilisateur seront envoyées aux serveur et quel traitement elles vont subir. Le premier attribut est method. C'est lui qui indique la méthode d'envoi des données saisies. Il peut prendre deux valeurs : method="get" : valeur en général peu adaptée car l'envoi est limité à 255 caractères et les informations seront envoyées dans l'adresse de la page. À déconseiller donc. method="post": valeur qui permet d'envoyer un grand nombre d'informations sans que les données saisies transitent par la barre d'adresse. C'est cette méthode que je vous recommande. Le second attribut est action. Sa valeur est l'adresse du programme qui traitera les informations envoyées. En général, ce programme se situe sur le serveur hébergeant le site web mais, pour notre TP, ce programme, c'est vous qui allez le créer en utilisant un peu de langage PHP. Dans tout le reste du TP, on considèrera que ce programme s'appelle traitement.php. Pour l'instant, on supposera qu'il existe et on s'intéresse tout d'abord au codage du formulaire luimême. Dans le code de votre site HTML, l'introduction d'un formulaire se fait donc avec le code suivant : <form action="traitement.php" method="post"> <!-- intérieur du formulaire --> </form> Cependant, pour l'instant, votre formulaire ne fait rien du tout ! Voyons les différentes façons de coder toutes les informations que peut être amené à saisir un utilisateur de site web... 3°) Les zones de saisie de texte a) Zone de texte à une ligne Comme son nom l'indique, elle sert à saisir des textes relativement courts comme, par exemple, un nom, un pseudo, un mot de passe... Elle se créé en utilisant la balise input. Cette balise sert aussi à autre chose mais, dans ce cas, ses attributs ne seront pas les mêmes. Les attributs obligatoires à utiliser pour créer une zone de texte à une ligne : type="text" : indique que du texte est demandé à l'utilisateur. name="nom" : donne un nom à la zone de texte. Ce code minimal n'affiche qu'une case vide dans laquelle l'utilisateur ne sait pas quoi taper. Il faut donc lui attribuer un label et le lier à notre zone de texte. Label est une autre balise à placer avant la balise input, son attribut for se chargeant de faire le lien avec un nouvel attribut de la balise input (encore un), l'attribut id. Exemple : <label for="nom">Votre nom : </label> <input type="text" name="nom" id="nom"></input> On peut imaginer que l'attribut name et l'attribut id font un peu doublon et c'est un peu vrai. Mais l'attribut id permet un comportement sympathique pour l'utilisateur : si celui-ci clique sur le label de la zone de texte, le curseur se placera automatiquement sur la zone à remplir. Essayez, vous verrez ! Formulaires et PHP 1/6 Les attributs facultatifs de la balise input : size="40" : permet de fixer la taille du champ de saisie de texte. Le nombre entre guillemets fixe cette taille. Maxlength="20" : limite le nombre de caractères à saisir avec la valeur entre guillemets. value="Oui" : pré-remplit la zone de texte avec une valeur par défaut. placeholder="Tapez votre nom ici": donne une indication sur ce qu'il faut taper dans la zone de saisie de texte, indication qui disparaît dès que l'utilisateur commence à taper. type="password" : crée une zone de mot de passe, c'est-à-dire que ce qui est tapé dans la zone de saisie ne sera pas affiché à l'écran. Exercice : Tapez le code HTML nécessaire à l'affichage reproduit ci-dessous. b) Zone de texte multi-ligne Si la saisie à faire nécessite la présence de plusieurs lignes de texte, comme pour un commentaire ou une description par exemple, il faut utiliser la balise textarea. De la même manière que précédemment, il faut lui donner un nom et la faire précéder de la balise label. Par exemple : <label for="description">Racontez vos vacances : </label><br> <textarea name="description" id="description"></textarea> Attributs optionnels : rows="10" : permet de fixer le nombre de lignes de la zone de texte. cols="40" : permet de fixer le nombre de colonnes de la zone de texte. Exercice : Tapez le code HTML nécessaire à l'affichage reproduit ci-dessous. 4°) Choix multiples a) Les cases à cocher Souvent, plutôt que de demander au visiteur d'énumérer ses choix, il est plus facile de lui faire cocher des cases parmi une liste pré-établie. Bien entendu, c'est possible avec les formulaires HTML, le type checkbox est fait pour ça ! Voici sa syntaxe : <input type="checkbox" name="James" id="James"></input> <label for="James">James Bond.</label> Exercice : Tapez le code HTML nécessaire à l'affichage reproduit ci-dessous. Formulaires et PHP 2/6 b) Les zones d'options Une zone d'options permet de faire un choix unique parmi une liste de possibilités. Elle se définit avec la balise input dont l'attribut type aura pour valeur radio. Une zone d'options se différencie des cases à cocher par le fait qu'elle doit être organisée en groupes. Les options d'un même groupe doivent avoir le même name (de manière à ce qu'un seul choix soit possible dans le groupe) mais une value différente. Exemple : <form action="traitement.php" method="post"> Dans quelle classe êtes-vous ?<br> <input type="radio" name="Classe" value="Seconde" id="Seconde"></input> <label for="Seconde">Seconde</label>.<br> <input type="radio" name="Classe" value="Première" id="Première"></input> <label for="Première">Première</label>.<br> <input type="radio" name="Classe" value="Terminale" id="Terminale"></input> <label for="Terminale">Terminale</label>.<br> <br> Quel est votre professeur de sciences physiques ?<br> <input type="radio" name="Prof" value="Dillenseger" id="Dillenseger"></input> <label for="Dillenseger">M. Dillenseger</label>.<br> <input type="radio" name="Prof" value="Lhoussene" id="Lhoussene"></input> <label for="Lhoussene">M. Lhoussène</label>.<br> <input type="radio" name="Prof" value="Soave" id="Soave"></input> <label for="Soave">Mme Soave</label>. </form> Testez ce code pour bien comprendre la différence avec les cases à cocher. c) Les listes déroulantes Pour faire un choix unique parmi une liste pré-établie, on vient de voir qu'on peut définir une zone d'options mais il existe une seconde possibilité : une liste déroulante. Pour en définir une, on doit utiliser la balise select en précisant ses attributs name et id. Ensuite on y insère autant de balises option que vous voulez de choix possibles. Exemple : <label for="Prof">Quel est votre professeur de sciences physiques ?</label><br> <Select name="Prof" id="Prof"> <option value="Dillenseger">M. Dillenseger</option> <option value="Lhoussene">M. Lhoussène</option> <option value="Soave">Mme Soave</option> </select> Je vous recommande à nouveau de tester ce code. 5°) Derniers réglages et envoi du formulaire a) Présentation et astuces Il faut toujours vous assurer que votre formulaire soit lisible sans difficulté par l'utilisateur sous peine de décourager ce dernier. Si le formulaire contient beaucoup de choses à saisir, il est conseillé de regrouper les champs en rubriques en utilisant les balises fieldset et legend. La balise fieldset permet d'entourer les champs sélectionnés d'un mince liseré et la balise legend permet de lui donner un nom. Syntaxe : <fieldset> <legend>Etat civil</legend> <!-- insérer les champs ici --> </fieldset> <fieldset> <legend>Scolarité</legend> <!-- insérer les champs ici --> </fieldset> Formulaires et PHP 3/6 Et vous pourrez obtenir un affichage similaire à ceci : Dans votre formulaire, certains champs sont plus important que d'autres. Il est donc nécessaire de les mettre en valeur, voire de rendre leur saisie obligatoire. Pour cela il existe les attributs autofocus et required. Exemple : <input type="text" name="nom" id="nom" autofocus required></input> b) Création du bouton d'envoi du formulaire Votre formulaire doit toujours intégrer un bouton d'envoi, ce qui permet à l'utilisateur de valider toutes ses saisies et à ces dernières d'être envoyées afin que le script déclaré dans la définition du formulaire (pour nous, c'est traitement.php) puisse les traiter. Pour créer un tel bouton, c'est très simple, il suffit d'utiliser à nouveau la balise input mais en attribuant la valeur submit à l'attribut type. Vous pouvez aussi donner la valeur reset à type si vous voulez créer un bouton qui remet le formulaire à zéro. Exemples : <input type="submit" value="Valider vos choix"></input> <input type="reset" value="Remise à zéro"></input> Travail à effectuer : Vous devez écrire le code HTML pour obtenir un formulaire ressemblant à la capture d'écran suivante. Formulaires et PHP 4/6 6°) Création du script PHP Savoir créer un formulaire, c'est bien, mais ce serait encore mieux si les informations saisies pouvaient être traitées. Pour cela, il va falloir écrire le fameux fichier traitement.php auquel fait appel la balise form. Ce qui suit vous donne donc quelques connaissances élémentaires du langage PHP qui nous suffiront pour ce TP. Pour que le code PHP puisse être interprété par votre machine, il faut y installer PHP. La manière la plus simple d'y parvenir est de télécharger des distributions toutes prêtes du genre WAMP (sous Windows), MAMP (sous MacOSX) ou LAMP (sous Linux). Lisez l'annexe pour plus d'informations. a) Les bases du PHP Le PHP est un langage pensé spécialement pour créer des pages Internet dynamiques, c'est-à-dire dont l'affichage peut évoluer en fonction des actions de l'utilisateur. Le HTML pur ne permet pas ce comportement et ne permet de créer que des pages Internet statiques. Le code PHP peut être intégré au sein d'un fichier HTML (on peut mélanger HTML et PHP!) dont on aurait modifié l'extension en .php ou être placé dans un fichier indépendant ne comportant que du code PHP mais ayant l'extension .php. Le code PHP doit être inséré dans une balise spéciale : <?php … code PHP … ?> b) Les variables Quand vous cliquez sur le bouton d'envoi du formulaire, vos saisies sont enregistrées dans des variables qu'il faut savoir appeler pour que le script PHP puisse les traiter. Le nom d'une variable est toujours précédé du symbole $. Ensuite, la syntaxe du PHP ressemble étrangement à celle du Java. Par exemple : <?php $nombre1=15; ?> On affecte la valeur 15 à la variable nombre1. Vous remarquez le point virgule pour terminer l'instruction ! Les variables peuvent prendre une valeur particulière, NULL, qui signifie que la variable n'a pas de valeur ! Cela peut être intéressant, en particulier pour les formulaires, pour tester si l'utilisateur a complété toutes les questions. Exemple d'algorithme : Si $Nom=NULL alors écrire « Veuillez entrer votre nom ! ». À propos, les variables issues d'un formulaire ont une syntaxe particulière. Dans ce TP, vous vous souvenez que le formulaire créé utilise la méthode POST. Si on écrit l'instruction suivante : $_POST['Nom']='Dupont'; On affecte la valeur Dupont à la variable Nom qui a été saisie dans un formulaire utilisant la méthode POST. Les notations dans le fichier HTML qui définit votre formulaire et celles présentes dans votre script PHP doivent concorder. Exemple : Supposons que, dans le formulaire, se trouve le code suivant : <label for="prenom">Votre prénom : </label> <input type="text" name="prenom" id="prenom"></input> L'utilisateur tape Romain pour répondre. Lorsque le bouton d'envoi est utilisé, une nouvelle variable est créée $_['prenom'] et elle a pour valeur Romain. c) L'instruction echo L'instruction echo permet d'écrire à l'écran. Par exemple : echo 'Bonjour'; écrit le mot Bonjour à l'écran. echo $_['prenom']; écrit le contenu de la variable $_['prenom'] à l'écran. echo 'J\'aime la spécialité ISN'; L'antislash \ permet d'afficher des apostrophes dans une chaîne de Formulaires et PHP 5/6 caractères. Pour combiner l'affichage de chaînes de caractères et l'affichage de valeurs de variables, il faut utiliser des points comme séparateurs. Par exemple : echo 'Vous avez entré ' . $_POST['prenom'] . ' comme prénom.'; Cette instruction affichera : « Vous avez entré Romain comme prénom. » d) La structure if … else Je ne m'étendrai pas sur cette instruction car sa syntaxe est très similaire à celle utilisée en Java. Jugez-en plutôt : if (condition) // si la condition est respectée { série d'instructions.} else // si la condition n'est pas respectée {série d'instructions.} Exemple : <?php if ($moyenne >= '10') {echo 'Vous avez la moyenne ce trimestre.';} else {echo 'Votre moyenne est insuffisante, au travail !';} ?> Symboles utilisés pour les comparaisons : == Est égal à > Est supérieur à < Est inférieur à >= Est supérieur ou égal à <= Est inférieur ou égal à != Est différent de d) Travail à effectuer Vous devez écrire le programme traitement.php, en mixant HTML et PHP, de manière à obtenir un affichage ressemblant à la capture d'écran reproduite ci-après. Votre code doit récupérer les valeurs des variables nom, prénom, classe et série et afficher leurs valeurs. Une instruction conditionnelle sera utilisée pour éviter les affichages erronés. Formulaires et PHP 6/6