APP-TSWD Apprentissage Par Problèmes Techniques des Sites Web Dynamiques Licence Professionnelle FNEPI Valérie Bellynck, Benjamin Brichet-Billet, Mazen Mahrous Grenoble INP – Pagora 10 novembre 2014 Cours en Réponse à questions, n° 2
Groupe : ? Autres groupes ? ? Profs Comment lire la doc. de référence de PHP, php.net ? Qu’est-ce que le code « !== FALSE » trouvé dans l’exemple de fgetcsv() ? Petites révisions des structures de contrôle de boucle : while, for et foreach… Quelle est la différence entre != et !== ? Qu’est vraiment un tableau associatif ? Différence entre tableau indexé et tableau associatif ? Questions reçues
Description de la « déclaration » Le «manuel de référence » de PHP type de ce qui est « rendu » type des paramètres crochet pour marquet que le « contenu » est facultatif
Description des paramètres Le «manuel de référence » de PHP ce qui est « rendu » paramètres NULL si échec
Valeur de retour Le «manuel de référence » de PHP Notes !! FALSE si fin de fichier NULL si échec
Un exemple du manuel traitement d’une ligne appel de la fonction Si l’affectation « rend » FALSE, on sort de la boucle fermeture du fichier Le fichier doit d’abord être ouvert ouverture du ficher Après chaque instruction, la tête de lecture est positionné pour la prochaine lecture
L’affectation qui « rend » FALSE ou NULL if ( ($handle = fopen("test.csv", "r") ) !== FALSE) {... while ( ($data = fgetcsv($handle, 1000, ",") ) !== FALSE) {… affectation comparaison Et pourquoi pas != ?
Opérateurs d'affectation Opérateurs d’affectation <?php $a = ($b = 4) + 5; echo "a=$a, b=$b \n"; ?> <?php $a = 3; $a += 5; $b = "Bonjour "; $b.= " tout le monde!"; ?> affecte la valeur 8 à la variable $a correspond à l'instruction '$a = $a + 5'; affecte la valeur "Bonjour tout le monde!" à la variable $b : identique à $b = $b." tout le monde!"; $a est maintenant égal à 9, et $b vaut 4
Le type booléen : FALSE, TRUE
La valeur spéciale NULL
(=,) ==, !=, ===, !== : opérateurs de comparaison Opérateurs d'affectation : = Opérateurs de comparaison : ==, !=, ===, !== ExempleNomRésultat $a == $bEgalTRUE si $a est égal à $b après le transtypage. $a === $bIdentiqueTRUE si $a est égal à $b et qu'ils sont de même type. $a != $bDifférentTRUE si $a est différent de $b après le transtypage. $a <> $bDifférentTRUE si $a est différent de $b après le transtypage. $a !== $bDifférentTRUE si $a est différent de $b ou bien s'ils ne sont pas du même type. $a < $bPlus petit queTRUE si $a est strictement plus petit que $b. $a > $bPlus grandTRUE si $a est strictement plus grand que $b. $a <= $bInférieur ou égalTRUE si $a est plus petit ou égal à $b. $a >= $bSupérieur ou égalTRUE si $a est plus grand ou égal à $b.
Comparaison d’égalité avec == ou === Comparaison de types en PHP == TRUEFALSE 10 NULL array()"php""" TRUE FALSETRUEFALSE TRUEFALSE TRUEFALSETRUE FALSETRUE 1 FALSETRUEFALSE 0 TRUEFALSETRUE FALSETRUE === TRUEFALSE 10 NULL array()"php""" TRUE FALSE TRUEFALSE 1 TRUEFALSE 0 TRUEFALSE $a == $bEgalTRUE si $a est égal à $b après le transtypage. $a === $bIdentiqueTRUE si $a est égal à $b et qu'ils sont de même type. $a != $bDifférentTRUE si $a est différent de $b après le transtypage. $a <> $bDifférentTRUE si $a est différent de $b après le transtypage. $a !== $bDifférentTRUE si $a est différent de $b ou bien s'ils ne sont pas du même type.
L’affectation qui « rend » FALSE ou NULL if (($handle = fopen("test.csv", "r")) !== FALSE) {... while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {… Le manuel de référence de PHP dit que fopen() « Retourne une ressource représentant le pointeur de fichier, ou FALSE si une erreur survient. » Donc en cas d’erreur, $handle vaut FALSE. Pour comparer « explicitement » à FALSE, on utilise === et !==. Ici, on ne veut traiter que s’il n’y a pas eu d’erreur. Le manuel de référence de PHP dit que fopen() « fgetcsv() retourne NULL si un paramètre handle invalide est fourni ou FALSE en cas d'autres erreurs, y compris la fin du fichier. » Donc en cas d’erreur, $handle vaut FALSE. Pour comparer « explicitement » à FALSE, on utilise === et !==. Ici, on ne veut traiter que s’il n’y a pas eu d’erreur.
empty(), is_null(), isset(), if($x) Comparaison de types en PHP Après l’affectation de $x, définie par l’expression de la colonne 1, le type de al variable est fourni en résultat de la fonction gettype($x) dans la colonne 2 puis les résultats de empty($x), is_null($x), isset($x) dans les colonnes 3 à 5, et la dernière colonne donne le résultat du test fi($x). Expression gettype()empty()is_null()isset()boolean : if($x) $x = ""; chaîne de caractères TRUEFALSETRUEFALSE $x = null; NULL TRUE FALSE var $x; NULL TRUE FALSE $x est indéfini NULL TRUE FALSE $x = array(); array TRUEFALSETRUEFALSE $x = false; boolean TRUEFALSETRUEFALSE $x = true; boolean FALSE TRUE $x = 1; entier FALSE TRUE $x = 42; entier FALSE TRUE $x = 0; entier TRUEFALSETRUEFALSE $x = -1; entier FALSE TRUE $x = "1"; chaîne de caractères FALSE TRUE $x = "0"; chaîne de caractères TRUEFALSETRUEFALSE $x = "-1"; chaîne de caractères FALSE TRUE $x = "php"; chaîne de caractères FALSE TRUE $x = "true"; chaîne de caractères FALSE TRUE $x = "false"; string FALSE TRUE
Boucle while incrément du compteur fin de la boucle initialisation du compteur condition de sortie de la boucle corps de la boucle récupération de la borne instruction while
Lire : Ce sont des « tableaux associatifs » : ils associent des clés à des valeurs. Référencement par index numérique ou textuel Faire afficher les valeurs d’un tableau Tableau en PHP $data['nom'] $data['prenom'] $data[0] $data[1] echo "\n La première valeur est ".$data[0]; echo "\n La deuxième valeur est $data[1]"; echo "\n La deuxième valeur est ${data[1]}"; print( "\n La valeur du tableau à l’index « nom » est ".$data['nom'] ); echo "\n Toutes les valeurs du tableau \$data sont "; print_r($data);
Lire : Tableau en PHP
Explictement par le constructeur PHP $entete = array( 'nom', 'prenom', ); Valeur par valeur, indice implicite $entete[] = 'nom'; $entete[] = ’prenom’; Implicitement comme résultat d’une fonction $entete = fgetcsv($pointeTeteFic); Valeur par valeur avec l’indice $entete[0] = 'nom'; $entete[1] = 'prenom'; Déclaration d’un Tableau en PHP Valeur par valeur avec un indice textuel $ligne[‘nom’] = ’De Penguern De Trisigondi’; $ligne[‘prenom’] = ’Pierre-Antoine'; $ligne[$entete[0]] = ’De Penguern De Trisigondi’; $ligne[$entete[1]] = ’Pierre-Antoine’;
Avec l’instruction for : Exemple de fgetcsv() Parcours d’un Tableau en PHP : for incrément du compteur récupération de la borne comparaison du compteur pour sortir initialisation d’un compteur $num champs à la ligne $row: \n"; $row++; for ($c=0; $c \n"; } } fclose($handle); } ?> contenu de la boucle
Parcours d’un Tableau en PHP : foreach Avec l’instruction foreach : Amélioration de l’exemple de fgetcsv() instancie la valeur associée Plus besoin de récupérer la borne instancie la clé de chaque valeur spécifie le tableau $num champs à la ligne $row: \n"; $row++; foreach ($data as $k => $v) { echo "data[$k] = ". $data[$k]. "= ${data[$k]} = $v \n"; } } fclose($handle); } ?> contenu de la boucle
La mémoire occupée par un tableau Des petits essais à faire pour manipuler les tableaux en PHP : Un tutoriel sur les tableaux PHP et la liste de toute les fonctions PHP sur les tableaux : Explications avec illustration graphique de la place prise en mémoire pour les tableaux PHP : Explications sur la manière dont PHP s’y prend pour mémoriser un tableau : grosso-modo, un calcul est appliqué sur les clés pour identifier une liste d’éléments (les clés sont « hashées ») ; deux clés peuvent conduire à une collision; il y a alors plusieurs éléments dans la liste; chaque élément de la liste contient la clé, la valeur, et les adresses mémoire de ses éléments précédent et suivant.
La mémoire occupée par un tableau Exemples interactifs de commandes sur les tableaux avec affichage de la place mémoire occupée js/tableaux/tailleMemoire- pourTableaux.php?n1=on&n2=on&n8=on
Quelques fonctions très utiles sur les tableaux
$_SERVER $_GET $_POST $_REQUEST Exemples de tableaux : les variables d’environnement foreach($_SERVER as $k => $v){ echo "\n $k $v »; }
Liens
Structuration du code : Modularité, inclusion et contrôle
header.php Structuration du code footer.php vars.php
Structuration du code index.php
Composition d’une page
Exemple de menu dynamique
Les variables d’environnement Et beaucoup d’autres… Aller plus loin…
Retour aux formulaires: GET, POST Osef.php Ex_form.html Exemple en live…