Forms
les formulaires
formulaires
HTML permet en plus des paragraphes, des titres, des tableaux, etc. d'afficher des FORMULAIRES. C'est l'utilisateur qui voit la page qui peut remplir le formulaire(texte, case a cocher, choix multiple, etc.). A chaque formulaire est associé une url (ie action='resultat.php'). Quand l'utilisateur valide le formulaire c'est comme s'il cliquait sur un lien, il est redirigé vers l'url associée au formulaire.
Chaque champs du formulaire se rajoute à l'url (si on a mis method='get' à la balise <form> du formulaire) sinon les champs sont passés à l'url quand même mais de façon caché.
Si on a le formulaire
<form action="resultat.php" method="GET">
Entrez votre prénom :<input type="text" name="prenom"/><br>
Etes-vous intéréssé par l'informatique :<input type="checkbox" name="intinfo"/><br>
<input type="submit" value="Je m'inscris en Licence d'informatique"/>
</form>
alors quand l'utilisateur clique sur le bouton "Je m'inscris en Licence d'informatique" il se retrouve sur la page resultat.php?prenom=fred&intinfo=onFormulaires
- faire des boucles for pour générer des lignes de tableaux, des paragraphes ou des images
- générer un contenu adapté à l'utilisateur
- générer un contenu adapté au contexte
- accéder au disque dur pour sauvegarder les réponses d'un questionnaires
- lire un fichier pour récupérer ce qui avait été sauvegardé plus tôt
- etc.
La bonne pratique consiste à commencer son script PHP par récupérer toutes les variables dont on peut avoir besoin. Par ailleurs on traite aussi les infos manquantes. Par exemple une case à cocher non cochée
ne transmet aucune variable au PHP (alors que si elle est cochée on a name=on), ici je teste la variable et je rajoute le 'off'. Il existe des fonctions PHP pour vérifier les nombres, les emails, le code SQL, etc.
<?php $prenom = htmlspecialchars($_GET['prenom']); if (array_key_exists('intinfo', $_POST)) $intinfo = htmlspecialchars($_GET['intinfo']); else $intinfo = 'off'; // on utilise ici les variables ... ?>
Allez un petit trait d'humour (mais n'essayez pas de visualiser votre maman en train d'appeler Sandrine au téléphone )
https://xkcd.com/327/
PHP peut donc réagir à un formulaire ET créé un formulaire (Prenez quelques secondes pour laisser votre cerveau s'habituer à cette idée)
Par exemple PHP peut pre-remplir le formulaire avec la valeur déjà rentrée la fois d'avant, il peut aussi remplacer une valeur Robert');DROP TABLE Students;-- par une autre DESOLÉ C'EST INTERDIT
PHP peut générer du morceau de formulaire HTML un peu spécial : <input type="hidden" name="Tricheur" value="oui"> qui n'affiche rien du tout mais lorsque l'utilisateur valide le formulaire
http://localhost:8888/covidWeb/resultat.php?Tricheur=oui&prenom=fred&intinfo=on
et resultat.php recevra 3 variables dans $_GET (dont Tricheur)
Exercice : faite un tableau à 4 colonnes dont la dernière ligne est un formulaire avec 3 entrées (nom, quantite, et couleur) et un bouton "valider"
nom sera un input de type text, quantite aussi et couleur sera un select avec 3 options ("red", "green" ou "blue")
quand l'utilisateur valide son formulaire il revient vers la même page MAIS PHP rajoute une ligne au tableau (après avoir verifié que quantite est un nombre).
Dans la nouvelle ligne du tableau il y aura les valeurs précédemment rentrées et le formulaire re-apparaitra vide en bas du tableau