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 tableaux de données en PHP

Dans ce chapitre je vais évoquer les tableaux de valeurs c'est à dire les variables complexes (les "arrays" en anglais).

Rappel : les variables simples

Dans le chapitre précédent ("quelques bonnes raisons d'utiliser PHP") j'ai déjà abordé la notion de variable PHP.
Rappelez vous la table de multiplication par 8.

Le code PHP contenu dans cette page :

$i et $produit sont des variables simples (ou élémentaires) PHP.
Donc le nom d'une variable doit impérativement commencer par le caractère $ !
Ici les deux variables sont de type int (entier).

Les variables simples présentent un gros inconvénient : on ne peut stocker à la fois qu'une seule valeur !
Alors qu'avec les variables "tableau" on peut stocker plusieurs valeurs à la fois.

Les tableaux indicés

Le code de la partie BODY de l'exemple :

Je vous montre les deux façons de créer un tableau indicé.
Dans le premier cas j'utilise le mot réservé array suivi de la liste de toutes les valeurs du tableau.
Louis est le premier élément ; il aura l'indice (ou numéro) 0 !
la première case d'un tableau indicé a toujours le numéro zéro !

Dans le deuxième cas j'affecte à chaque case une valeur ; pour préciser chaque case il suffit d'indiquer le nom du tableau suivi de l'indice (entre crochets). Avec cette syntaxe je peux afficher / modifier le contenu d'une case.

Dans les deux cas le tableau a un nom qui comme toute variable PHP commence par $ !

Pour parcourir un tableau (lire successivement chaque case) PHP propose la structure foreach.
Pour le premier tableau je me contente d'afficher les contenus des différentes cases ($element) alors que pour le deuxième tableau j'affiche pour chaque case ($indice) son numéro suivi de son contenu ($contenu).

Le rendu :

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 code de la partie BODY :

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 :

Compléments sur les tableaux

Il y a de très nombreuses fonctions PHP que l'on peut associer aux tableaux.

Les tableaux indicés

Le code de l'exemple (partie body):

La fonction print_r(nomtableau) permet d'afficher un tableau. Mais comme vous pourrez le constater en essayant ce code l'affichage n'est pas très joli mais c'est très pratique en phase de production du code.
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 réussi à produire la moyenne simple des notes en combinant les fonctions array_sum, count

Les tableaux associatifs

Le code de l'exemple (partie BODY) :

Le rendu:

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

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 (code de la partie BODY):

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 sur le test basé sur la fonction isset.
Sachez simplement pour le moment que sans ce test la page risque d'afficher au départ un message d'erreur ... .
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é (dans la base) pour cette identifiant.

Le rendu dans un nouvel onglet :

Testez !

Avez vous observé la barre d'adresse ?
Si non, recommencez le test !
Alors ?
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.