Accueil

Traduction

Débuter en programmation web - sommaire

Débuter en programmation web - recherche

L'auteur : Patrick Darcheville

Vous pouvez me contacter via Facebook pour questions & suggestions : Page Facebook relative à mon site

Les variables et tableaux en PHP

Dans ce chapitre je vais évoquer les variables simples et les tableaux.

Les variables simples

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 $.

Règles de nommage d'une variable

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.

Type d'une variable

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.

La fonction gettype()

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.

Les opérations en PHP

La concaténation

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.

Exemple

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.

Le rendu

Premier echo : affichage correct.
Deuxième echo : bug ; affichage du nom de la variable et non pas son contenu.
Troisième écho : affichage correct.

Les opérateurs arithmétiques

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)

Les opérateurs combinés

Ce sont des opérateurs qui effectuent un traitement et une affectation.
Leur emploi simplifie les instructions.

Exemple

J'incrémente trois fois $init avec trois syntaxes différentes.
Je décrémente trois fois $init2 avec trois syntaxes différentes.

Le rendu

Les tableaux indicés

Exemple

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.

Le rendu

Remarque

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.

Les tableaux associatifs

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.

Le script PHP

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).

Le rendu

Autres manipulations sur les tableaux

Il y a de très nombreuses manipulations que l'on peut appliquer aux tableaux qu'ils soient indicés ou associatifs.

Les tableaux indicés

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

Les tableaux associatifs

Le script :

Le rendu:

Pour trier un tableau associatif il faut utiliser la fonction asort(nomtableau).

Tableaux multidimensionnels

Un tableau indicé peut comprendre plusieurs tableaux indicés ou plusieurs tableaux associatifs.

Exemple

$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 rendu

Tableaux découlants des envois

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.

Ci-dessous page de connexion à site pour lequel vous êtes déjà inscrit

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é.

Le rendu dans un nouvel onglet

Testez !

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.