Formulaire HTML et PHP Partie 1 Les langages du Web Vincent Bouvier vincent.bouvier@kware.fr
HTML - Les formulaires Un formulaire permet à l'utilisateur d'envoyer des données au serveur Un formulaire commence toujours par le TAG <FORM>; Il est préférable de ne pas imbriquer les TAG <FORM>; 2
Les formulaires les attributs du TAG <FORM>: name: le nom du formulaire; action: la page vers laquelle seront envoyées les données; method: GET ou POST enctype="multipart/form-data": Uniquement si le formulaire contient un envoi de fichier; 3
Les formulaires Il existe plusieurs éléments de formulaire: Les <INPUT> Les <SELECT> et <OPTION> Les <TEXTAREA> Les <LABEL> Les <BUTTON> 4
Les Inputs 5
Les Inputs Les attributs du tag <INPUT> Type: text, password, radio, checkbox, submit Name: le nom du champ (doit être unique au sein du même formulaire sauf pour les radio!) Value: la valeur du champ Placeholder: Legende (text uniquement! ) Checked: uniquement pour les checkbox et les radio 6
Les Inputs <form> <input name="text1" type=text value="text" /> <input name="password1" type=password value="text" /> <input name="check_1" type=checkbox /> checkbox1 <input name="check_2" type=checkbox checked /> checkbox2 <input name="gender" type=radio checked/> male <input name="gender" type=radio /> female <input type="submit" /> </form> 7
Les bases de PHP
PHP - Définitions PHP : Personal Home Page / P Hypertext Preprocessor Langage script qui est interprété coté serveur Permet: de collecter des données d'un formulaire d interagir avec une base de données de générer du contenu dynamique de gérer les cookies 9
PHP - Fonctionnement index.php www.monsiteweb.fr Client Serveur Interpréteur PHP 10
Serveur.AMP AMP: Apache MySQL PHP Une solution de serveur web qui inclut les 3 composantes les plus utilisées du Web: Apache: Serveur Web MySQL: Serveur de base de données PHP: Un interpréteur de code PHP 11
Apache Php Client MySQL 12
PHP et HTML <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>titre</title> </head> <body> <?php echo "Hello World! ;?> </body> </html>
PHP et HTML <?php echo "<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>titre</title> </head> <body> Hello World! </body> </html>";?>
PHP et HTML <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>titre</title> </head> <body> <?php $firstname = "Vince"; echo "Hello $firstname! ;?> </body> </html>
PHP et HTML <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>titre</title> </head> <body> <?php $class = "menu-item";?> <div class=<?php echo "'$class'";?> > Hello World </div> </body> </html>
PHP - Les variables Déclaration d'une variable à l'aide du symbole $ suivi du nom de la variable (e.g., $user) Les variables ne sont pas typées Une variable peut contenir: Rigueur des types de bases (integer, boolean, double, float, string) des tableaux (array) des table de hachage (hashtable) Les variables ne vivent que le temps d une page! 17
PHP - Insérer du code PHP Pour coder en PHP il est impératif que l'extension du fichier soit.php <?php echo "Hello World! ;?> 18
PHP - Les variables Déclaration d'une variable contenant un type de base: $year = 2012; $pi = 3.14; $name = "Vincent"; Déclaration d'une variable contenant un tableau ou une hashtable: $table = array(); 19
PHP - LES EXPRESSIONS BOOLÉENES Une expression booléenne renvoi toujours soit VRAI ou FAUX. Pour une expression booléene il faut utiliser == plutôt que seulement =, car ce dernier permet seulement d'attributer une valeur à une variable Les signes <= et >= doivent forcément être mis dans cet ordre Pour savoir si une variable est initialisée, utiliser la fonction: isset Pour savoir si une variable contient une chaine de caractère vide, utiliser la fonction: empty Pour savoir si la variable est une table utiliser la fonction: is_array $a == 0; $a < 0; $a > 0; $a <= 0; $a >= 0; $a == "test"; isset($a); empty($a); is_array($a); 20
PHP - LES CONDITIONS Le mot clé if permet de commencer une déclaration de condition; La condition doit être une expression booléene; Les mots clés elseif ou else permettent de continuer une déclaration de condition; Le code entre {} est exécuter seulement si la condition est vrai if($a == 0){ //do something } elseif($a == 1){ //do something else } else{ //do something else } 21
PHP - Tableaux et HashTable Structure interne d'un tableau: Les clés sont des nombres entiers (Integer) La première clé est 0 Les clés sont ordonnées À une clé correspond une variable (qui peut aussi être une autre table) Clés 0 1 2 n Valeurs valeur1 valeur2 valeur3 valeurn 22
PHP - Tableaux et HashTable Remplir un tableau $table = array(); $text = "Text"; $nombre = 3; array_push($table, $text); $table[1] = $nombre; Parcourir un tableau for($i=0 ; $i < sizeof($table) ; $i++ ) { echo $table[$i]; } foreach($table as $value) { echo $value; } 23
PHP - Tableaux et HashTable Structure interne d'une hashtable: Les clés sont des chaines de caractères (String) Les clés ne sont pas ordonnées À une clé correspond une variable (qui peut aussi être une autre table) Clés couleur marque modèle Valeurs gris suzuki swift 24
PHP - Tableaux et HashTable Remplir une hashtable $voiture = array(); $voiture["couleur"] = "gris"; $voiture["marque"] = "suzuki"; $voiture["modèle"] = "swift"; Parcourir une hashtable foreach($table as $key => $value) { echo $key." ".$value; } 25
PHP - LES BOUCLES FOR Le mot clé for permet de commencer une déclaration de boucle Les paramètres sont séparés par un ; Le premier paramètre est l'initialisation Le second la condition pour continuer for($i=0 ; $i < 5 ; $i++ ) { if($i == 2){ continue; } elseif($i == 4){ break; } } Le troisième une action itérative 26
PHP - LES BOUCLES Le mot clé break permet sortir d'une boucle à tout moment; Le mot clé continue permet de revenir en début de boucle. L'action itérative est tout de même exécutée for($i=0 ; $i < 5 ; $i++ ) { if($i == 2){ continue; } elseif($i == 4){ break; } } 27
PHP - LES BOUCLES ForEach Le mot clé foreach permet de commencer une déclaration de boucle sur une table Pour un tableau seuls deux paramètres suffisent Pour une hashtable trois paramètres sont nécéssaires foreach($hashtable as $key=>$value) { } foreach($array as $value) { } 28
PHP - LES BOUCLES WHILE Le mot clé while permet de commencer une déclaration de boucle Cette boucle prend seulement une condition d'arrêt en paramètre Tant que la condition d'arrêt est vraie, la boucle continue $a = 0; while($a<8) { $a++; } Au boucle infinie! 29
PHP et les Formulaires
Exemple: Authentification Identifiant ou mot de passe erroné! Scripts login.php SI index.php home.php index.php?error=identifiant ou mot de passe erroné! 31
HTML - L envoi des données Méthode GET ou POST? Méthode GET Valeur par défaut Ne requiert pas l'utilisation de php pour exploiter les données Les variables sont passées par le biais de la barre d'adresse Méthode POST Préférée pour les données sensible (mot de passe, paiement en ligne...) Requiert l'utilisation du PHP pour accéder aux données Les variables sont passées dans l'entête HTTP Utilisée pour l'envoi de fichiers 32
PHP - Récupération des données Pour récupérer les informations envoyées par un formulaire il faut utiliser les variables $_POST ou $_GET suivant la méthode utilisée dans le formulaire Ces variables s'utilisent comme une HashTable, où la clé correspond à l'attribut name de l'élément du formulaire La valeur associée correspond quant à elle à la valeur entrée par l'utilisateur 33
PHP - Les redirections Certaine fois, il est nécessaire de rediriger l'utilisateur sur une autre page: Exécution d'un script Page d erreur Attention aucun texte HTML ne doit être afficher pour que cela fonctionne. header("location:../index.php"); exit(); 34
PHP - Envoi de données sans formulaire Utilisation de la méthode GET manuellement en passant des variables pendant une redirection. index.php?mavariable=1&monautrevariable=2 header("location:../index.php?mavariable=1&monautrevariable=2 ); exit(); 35
PHP - Envoi de données sans formulaire Utilisation de urlencode($str) lorsque la valeur d une variable est une chaine de caractères. $montext= Hello"; header("location:../index.php? mavariable=.urlencode($montext). &monautrevariable=2 ); exit(); 36
Les Formulaires DEMO 37