Module I3 Introduction au PHP Chapitre 2 : Fichiers, formulaires
Transcription
Module I3 Introduction au PHP Chapitre 2 : Fichiers, formulaires
Module I3 Faire communiquer un script PHP avec son environnement lecture et écriture dans des fichiers affichage dans le navigateur récupération de données depuis un formulaire Introduction au PHP Toute sortie vers le navigateur (echo, print, printf) est interprétée comme du texte HTML Chapitre 2 : Fichiers, formulaires Pas de fonction dattente de saisie au clavier comme en C interactivité avec lutilisateur à laide des formulaires 2 1 "!! !! #! " !" " !" ! $ $! ! ! se la sortie html du toujours par le c $ $ ! ! 3 4 ! ( ( ! ' $ $ & % " $ # 5 Exemple de lecture : 6 Fin de fichier : <?php $monfichier=fopen("monfichier.txt","r") ; if ( !($monfichier)) { print("Impossible d’ouvrir le fichier") ; exit ; } $ligne = fgets($monfichier,255); while ( !feof($monfichier) ) { print "$ligne <BR>" ; $ligne = fgets($monfichier,255); } fclose ($monfichier) ; ?> booleén feof (int fichier): renvoie TRUE (1) si la fin du fichier "fichier" a été atteinte (une tentative de lecture a échouée), FALSE (0) sinon Écrire dans un fichier : int fwrite (int fichier, string chaine [, int length]): int fputs (int fichier, string chaine [, int length]): écrit le contenu de la chaîne "chaine" dans le fichier "fichier". Si la longueur "length" est fournie, l'écriture s'arrêtera après length octets, ou à la fin de la chaîne (le premier des deux) 7 8 Exemple décriture : Fonction Explode : <? $monFichier = fopen("monfichier.txt","w") ; if ( !($monfichier)) { print(" Impossible de créer le fichier \n") ; exit ; } manipuler des fichiers contenant sur chaque ligne des champs séparés par un délimiteur (espace, tabulation, ) description : array explode( Delimiteur, Ligne) renvoie un tableau de chaînes de caractères sous-chaînes de Ligne, séparées par Delimiteur fputs($monfichier, "ligne 1") ; fputs($monfichier, "ligne 2") ; exemple : fclose($monfichier) ; ?> fichier etudiants.txt Durand|Paul|18 Martin|Jean|21 … 9 Exemple dutilisation de explode : 10 Principe : <?php $fich_etud = fopen("etudiants.txt","w") ; HTML permet la récupération de données dun formulaire Champs positionnés entre les balises (!& et (*!& zones de saisie de texte liste déroulantes, cases à cocher, $ligne = fgets($fich_etud,255); while ( !feof($fich_etud) ) { $tab = explode("|",$ligne); print "Nom : $tab[0]<br>"; print "Prénom : $tab[1]<br>"; print "Age : $tab[2]<br>"; $ligne = fgets($fich_etud,255); } PHP transforme tous les champs dun formulaire en variables qui permettent den analyser la réponse La page qui reçoit ces variables est celle qui est désignée par l'attribut %$ de la balise (!&. fclose ($fich_etud) ; ?> 11 12 Exemple : Envoi des données : (!%$',+ ,"#' "& )("'%"',,& ("'%"',",& (*!& Les boutons de validation dun formulaire sont définis par des balises de la forme Lappui sur un bouton de validation provoque lenvoi des données du formulaire vers la page cible et son chargement fichier resultat.php Lattribut de la balise définit la méthode denvoi des données du formulaire vers cette page cible <?php echo 'Valeur de $_GET[\'nom\'] : '; echo $_GET['nom'] ; ?> GET : passage par lURL du navigateur, les données étant séparées par des ? POST : passage par lintermédiaire du serveur, invisible dans lURL du navigateur 13 Récupération des données : 14 Bouton submit : Les données du formulaires sont accessibles dans la page php cible dans le tableau associatif $_GET[] ou $_POST[] 2)%# #+1!.&) %/&+1:: /'+1:/:0 $HTTP_GET_VARS et $HTTP_GET_VARS pour PHP ver < 4.10 Chaque champ du formulaire produit une entrée dans le le tableau $_GET[] (ou $_POST[]) dont la clé est le nom de ce champ (attribut NAME) cf exemple : $_GET['nom'] a pour valeur "Durand" $_GET[''] vaut la valeur de lattribut VALUE Lorsque lutilisateur appuie sur un bouton de type SUBMIT, le navigateur envoie les données de tous les champs du formulaire à son URL cible, y compris les données du bouton SUBMIT lui-même La valeur associée à une clé du tableau $_GET[] dépend de la nature du champ correspondant du formulaire cf exemple : $_GET['nom'] a pour valeur la chaine de caractères saisie dans la zone de texte 15 16 Champ de saisie de texte : Bôite de saisie de texte : 2)%# #+1 + %/&+1:! :0 $_GET['txtSaisi'] vaut le texte (chaîne de caractère) tapé par lutilisateur dans le champ de saisie (ici "Bonjour") 2 + /"+/1:. : 19379 19390 ' #*# 28 + /"+/0 2)%# #+1#/!!$",%/&+1:,# :0 $_GET['. '] est la chaîne de caractères correspondant au texte tapé dans la zone de saisie. $_GET[',# '] vaut le mot de passe tapé (chaîne) on peut insérer un texte initial modifiable dans la boîte entre les balises 2 + /"+/0et28 + /"+/0 17 18 Boutons radio : Cases à cocher : 2)%# #+1"/,)$%/&+1:"6:/'+1:6:-*+-(+,0 ,2)%# #+1"/,)$%/&+1:"6:/'+1:5:0 2)%# #+1"/,)$%/&+1:"6:/'+1:4:0 2)%# #+1-*+-(.$%/&+1:- 6:/'+1:6:0 ,2)%# #+1-*+-(.$%/&+1:- 5:/'+1:5:0 2)%# #+1-*+-(.$%/&+1:- 4:/'+1:4:0 $_GET['"6'] vaut la valeur de lattribut VALUE du bouton coché par lutilisateur (ici "1") $_GET['Case1'] vaut la VALUE de la case C1, c.a.d "1" $_GET['Case2'] nexiste pas $_GET['Case3'] vaut la VALUE de la case C2, c.a.d "3" le dernier bouton du même nom possédant lattribut CHECKED est sélectionné par défaut. les entrées dans le tableau $_GET[] ne sont crées que pour les cases cochées. 19 20 Cases à cocher (2) : Liste à choix unique : 2)%# #+1-*+-(.$%/&+1:- :/'+1:6:0 ,2)%# #+1-*+-(.$%/&+1:- :/'+1:5:0 2)%# #+1-*+-(.$%/&+1:- :/'+1:4:0 #!# #!#!" # # " ##" ##" " $_GET['Cases'] est un tableau des VALUE des cases de lutilisateur parmi les champs OPTION de la liste. $_GET['Liste1'] vaut la VALUE de lunique sélection de lutilisateur parmi les champs OPTION de la liste (ici "2"). Ici, $_GET['Cases'] est le tableau ("1", "3") on peut présélectionner une OPTION par lattribut SELECTED quand lattribut NAME dun champ se termine par [], la valeur associée est insérée dans un tableau. si lattribut SIZE vaut 1 ou nest pas présent on obtient une liste déroulante 21 Liste à choix multiple : 22 Champ caché : 2)%# #+1*),,+%%/&+1:-:/'+1::0 Champ invisible du formulaire, permet de transmettre une valeur particulière à lURL cible (par exemple une variable) # # #!#!" # # " ##" ##" " $_GET['-'] vaut la valeur de lattribut VALUE on doit maintenir appuyée la touche CTRL ou MAJ pour selectionner plusieurs choix Bouton reset : 2)%# #+1"+!+ /'+1:" :0 $_GET['Liste2'] est un tableau des VALUE des sélections de lutilisateur parmi les champs OPTION de la liste. Ici, $_GET['Liste2'] est le tableau ("1", "3") Le navigateur ne charge pas la page cible mais remet le formulaire à son état initial on peut présélectionner des OPTION par lattribut SELECTED 23 24