Vous pouvez me contacter via Facebook pour questions & suggestions : Page Facebook relative à mon site
Dans ce chapitre je vais évoquer les variables simples et les tableaux.
Dans le chapitre précédent ("quelques bonnes raisons d'utiliser PHP") j'ai déjà survolé la notion de variable.
Rappelez vous la table de multiplication par 8.
$i et $produit sont des variables simples PHP.
Notez que le nom d'une variable est toujours précédée du symbole $.
Rappel : il faut précéder le nom du signe $.
Le nom ne doit pas contenir d'espace, ni de caractères spéciaux (-, !, %, etc.) sauf le _ (underscore).
Par ailleurs une variable peut seulement commencer par une lettre ou un underscore. Les chiffres sont autorisés mais pas en premier caractère.
les noms de variables sont sensibles à la casse. Ainsi $nom et $NOM sont deux variables différentes.
Le type d'une variable peut donc évoluer en fonction de sa valeur. Le typage des variables est implicite et dynamique en PHP. Il n’est donc pas nécessaire de déclarer le type au préalable.
Le code de l'exemple :
Notez l'emploi de la fonction gettype(variable) qui retourne le type d'une variable OU
plutôt le type de contenu d'une variable.
Pour créer un booléen il faut saisir true/false en minuscules ou majuscules et surtout ne pas délimiter par des guillemets.
Le rendu :
L'avant dernier echo retourne array.
En effet j'ai affecté dans $variable une liste de valeurs entre crochets (un tableau indicé).
Les tableaux en PHP sont abordés plus loin dans ce chapitre.
Pour assembler deux chaines il faut les relier avec le symbole . (opérateur de concaténation).
Le fait de délimiter une chaine avec des guillemets doubles permet d'insérer des variables dans une chaine et donc de ne pas recourir à l'opérateur de concaténation.
Premier echo : emploi de l'opérateur de concaténation ; je peux concaténer des chaines avec un numérique.
Deuxième echo : la variable insérée dans une chaine délimitée par des guillemets simples.
Troisième echo : la variable insérée dans une chaine délimitée par des guillements doubles.
Premier echo : affichage correct.
Deuxième echo : bug ; affichage du nom de la variable et non pas son contenu.
Troisième écho : affichage correct.
Il s'agit des opérateurs +, -, *,/ pour respectivement addition, soustraction, multiplication et division.
Pour obtenir le reste de la division entière il faut utiser l'opérateur % (modulo).
Exemple : $reste = 10%3 ; $reste récupère 1 car le reste de la division entière de 10 par 3 est 1.
Pour élever à la puissance N il faut utiliser **
Exemple : $resultat = 10**6 ; $resultat récupère 1 000 000 (10 à la puissance 6)
Ce sont des opérateurs qui effectuent un traitement et une affectation.
Leur emploi simplifie les instructions.
J'incrémente trois fois $init avec trois syntaxes différentes.
Je décrémente trois fois $init2 avec trois syntaxes différentes.
Je vous montre 3 façons de créer un tableau indicé.
Dans le premier tableau j'utilise le mot réservé array suivi de la liste de toutes les valeurs du tableau.
Dans les deux autres je remplis élément par élément le tableau.
Dans le deuxième tableau je laisse PHP déterminer l'indice (rien entre les crochets).
Pour le troisième tableau je précise la valeur de l'indice. Je pourrais ainis créer un tableau indicé avec des trous ...
Pour afficher en une seule instruction la totalité d'un tableau il suffit d'utiliser un fonction
print_r(nomTableau) qui affiche pour chaque élément son indice et la valeur correspondante.
Le premier élément d'un tableau indicé à l'indice 0.
Pour parcourir un tableau, PHP propose la structure foreach.
Pour créer le premier tableau j'aurai pu utilisr l'instruction
$equipe1 =['Louis', 'Daniel', 'Marc', 'François', 'Patrick', 'Benoît']
Le mot clé "array" a disparu mais la liste doit être alors délimitée par des crochets.
Chaque élément est identifié non pas par un numéro mais pas un nom (une clé).
On a donc des paires de "clé-valeur" !
Exemple : pour identifier un individu on utilise son nom, son prénom et sa civilité (Monsieur ou Madame).
Dans la page ci-dessous on décrit sous forme de tableaux associatifs deux personnes.
Revenons sur la première méthode.
'nom' =>'Jeannot' : la première case a pour clé "nom" et pour contenu "Jeannot".
Remarquez l'opérateur "=>" utilisé dans cette syntaxe.
Quant à l'affichage du contenu, pour le premier tableau j'affiche pour chaque paire seulement la valeur ($element) alors que pour
le deuxième tableau j'affiche pour chaque paire la clé ($cle) puis la valeur ($contenu).
Il y a de très nombreuses manipulations que l'on peut appliquer aux tableaux qu'ils soient indicés ou associatifs.
Le code de l'exemple :
Il est toujours possible d'ajouter des éléments à un tableau avec la syntaxe $tableau[] = valeur ; PHP
gérant l'indice.
Je rappelle que la fonction print_r(tableau) permet d'afficher la totalité d'un tableau.
La fonction count(nomtableau) retourne le nombre d'éléments d'un tableau.
La fonction array_sum(nomtableau) additionne les valeurs numériques d'un tableau.
La fonction sort(nomtableau) permet de trier par valeurs les éléments d'un tableau.
La fonction end(nomtableau) permet de pointer le dernier élément.
La fonction reset(nomtableau) permet de pointer le premier élément.
Il existe aussi les fonctions next et previous.
La fonction current(nomtableau) retourne la valeur de l'élément pointé.
Le rendu :
Notez que j'ai calculé la moyenne simple des notes en combinant les fonctions array_sum, count
Le script :
Le rendu:
Pour trier un tableau associatif il faut utiliser la fonction asort(nomtableau).
Un tableau indicé peut comprendre plusieurs tableaux indicés ou plusieurs tableaux associatifs.
$membres est un tableau indicé comprennant trois tableaux associatifs.
J'affiche ensuite le détail de chaque tableau associatif avec différentes techniques.
Puis je parcours le tableau bidemsionnel avec deux foreach imbriqués.
Le tableau associatif $_GET (ou $_POST) est dans le jargon PHP une variable superglobale.
Les variables superglobales sont des tableaux associatifs qui sont créés automatiquement par PHP dans certaines circonstances.
Ainsi dans la page précédente j'ai évoqué la variable superglobale $_SERVER créée par le serveur à l'occasion d'une requête HTTP.
Il existe aussi $_COOKIE et $_SESSION.
Les variables superglobales sont accessibles partout et doivent être écrites en majuscules !
Mais revenons au traitement PHP des données d'un formulaire.
La valeur de l'attribut action est # ce qui veut dire que la page "cible" est celle qui contient le formulaire !
Les données saisies ne peuvent être soumissionnées que si elles correspondent au type de champ et au format requis
(valeur de l'attribut pattern).
Ainsi le champ nommé "mail" est de type "email" donc la soumission ne sera possible que la saisie contient le caractère @ !
Pour le champ nommé "passe" une expression régulière ([A-z]{6,8}) précise qu'il faut saisir entre 6 et 8 lettres majuscules ou minuscules
non accentuées.
Donc après soumission il est créé dans la même page le tableau $_GET (puisque la méthode d'envoi est GET).
Respectez la casse : GET en majuscules !
Il s'agit d'un tableau associatif avec deux éléments ayant pour clés : mail et passe.
Les clés correspondent aux noms des champs du formulaire.
Je reviendrai plus tard sur le test basé sur la fonction isset. Sans ce test la page risque afficherait un message d'erreur avant toute saisie.
Le traitement PHP consiste ici à afficher simplement les contenus des deux éléments du tableau associatif $_GET.
Dans la réalité il y aurait recherche de l'identifiant dans la base de données puis comparaison
entre mot de passe saisi et mot de passe stocké.
Avez vous observé la barre d'adresse ?
Si non, recommencez le test !
Oui il y a un hic. Les paramètres apparaissent dans la barre d'adresse dont le mot de passe. C'est génant ...
Rassurez vous avec la méthode d'envoi POST cet inconvénient disparaît.
N'employez jamais la méthode GET lorqu'il s'agit d'envoyer un mot de passe.