Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :
Sujets que vous pourriez aussi aimer : 
Intérêt des tableaux de variables en PHP 
Les 
tableaux de variables  sont incontournables en programmation. Nous les avions d'ailleurs mis en oeuvre dans diverses formations Web clientes avec 
Javascript . C'est pourquoi, dans la logique des choses, nous proposons de les aborder aujourd'hui en 
programmation Serveur  avec du 
code PHP .
L'intérêt d'un 
tableau de variables  est de stocker une grande quantité d'informations dans une seule 
variable . Chacune est rangée indépendamment dans une ligne du tableau. Pour y accéder et restituer précisément une donnée, il suffit d'indiquer le numéro de ligne dans laquelle cet élément est rangé.
Sources et présentation de la problématique 
Pour débuter la présentation et les manipulations, nous proposons de récupérer des sources Html existantes.
La décompression conduit au fichier de la page Web principale. Il est 
nommé index.php . Il est accompagné de ses ressources externes dont notamment les codes communs à toute page du site, précisément stockés dans le sous dossier local 
commun .
Dans la formation précédente, nous avions démontré l'intérêt et l'importance de ces constructions grâce à l'
instruction PHP Include . Toutes les parties communes doivent être codées dans des fichiers indépendants. Ce procédé simplifie le développement, la normalisation et les modifications à la volée.
Nous proposons d'accéder au résultat de cette page d'accueil en l'affichant dans un navigateur Web. Pour ce faire et comme nous l'avons appris dans les formations précédentes, nous devons le référencer dans l'interface d'
EasyPhp . Il s'agit de l'émulateur des serveurs Web. Nous devons définir son nom et spécifier son adresse issue de l'explorateur Windows, en cliquant sur le 
bouton Add Directory .
Bien entendu, pour l'émulation, le serveur http doit être démarré. Notre projet Web apparaît désormais référencé dans la liste.
Cliquer sur son lien pour accéder à sa page d'accueil, 
Nous découvrons la page Web destinée à recevoir nos manipulations et travaux. Dans le bandeau supérieur, vous notez la présence d'une zone de saisie, d'une liste déroulante et d'un bouton. Ce dernier doit transmettre les valeurs saisies depuis le client vers le serveur. C'est pourquoi ces 
contrôles Html Input  sont encapsulés dans un 
formulaire Html .
Comme nous l'avons appris, un 
formulaire  est essentiel pour transférer des données. Nous proposons de le constater en accédant au code de la page Web principale.
A la racine du dossier de décompression, cliquer droit sur le fichier index.php , 
Dans le menu contextuel, choisir de l'ouvrir avec un éditeur tel que le Notepad++, 
En entête du code comme en pied de page, nous notons les appels aux parties communes à toutes les pages du site Web. C'est la solution que nous avons mise en oeuvre dans la formation précédente. Nous la répliquerons désormais pour chacun de nos développements à des fins d'optimisation.
<?php include("commun/connexion.php");  
En ligne 29 pour un éditeur Notepad, vous notez en effet la présence du 
formulaire  encapsulant les 
contrôles Html  dont la zone de saisie, la liste déroulante et le bouton.
...<form id="formulaire" name="formulaire" method="post" action="index.php"> </select> <input type="text" id="nbval" name="nbval" class="liste" value="Saisir une valeur numérique" onClick="this.value='';" /> <input type="button" id="envoyer" name="envoyer" class="liste" style="width:100px;" value="Envoyer" onClick="document.getElementById('formulaire').submit();" /> </form>  
La méthode du 
formulaire  permet de poster les données pour les faire transiter par le serveur. La page de réception est définie par l'
attribut action . Il s'agit de la même page que l'appelant soit 
index.php . Nous chercherons plus tard à réceptionner les données transmises, comme nous l'avons déjà appris. Dans un premier temps, nous souhaitons présenter les 
tableaux en Php , leur syntaxe, subtilité et intérêt.
Atteindre la ligne 49 pour un éditeur Notepad, 
Nous y découvrons les deux calques constituant le corps de la page d'accueil. Ils portent les identifiants respectifs 
colonne_gauche  et 
colonne_droite .
... 
Présentation des tableaux de variables en PHP 
Le premier calque d'identifiant 
colonne_gauche  correspond au cadre de gauche. Nous allons y coder les premières 
instructions PHP  permettant de découvrir les 
tableaux de variables  et leurs manipulations.
Dans ce premier calque, créer la section de code PHP  comme suit : ...<?php  
Un 
tableau de variables PHP  peut se déclarer grâce à l'
instruction array . Il suffit d'énumérer entre ses bornes l'ensemble des éléments du tableau, séparés par une virgule. Nous proposons de créer un tableau de variables recensant quelques départements français dans le désordre.
Dans la section PHP, ajouter les instructions suivantes : ...$dep=array("46-Lot", "03-Allier", "83-Var", "26-Drôme", "02-Aisne");  
Nous déclarons une 
variable  ($dep) qui est typée à la volée par affectation grâce à l'
instruction Php array . Nous insérons 5 valeurs dans ce tableau, séparées les unes des autres par une virgule. Comme il s'agit de textes, nous les renseignons fort logiquement entre guillemets. Nous exploitons ensuite l'
instruction echo  à titre d'essai pour tenter de restituer le deuxième élément de ce tableau, celui situé sur la deuxième rangée. Pour cela, nous mentionnons son indice entre crochets ($dep[2]).
Enregistrer les modifications (CTRL + S) et basculer sur le navigateur Web, 
Puis, rafraîchir la page à l'aide de la touche F5 du clavier , 
Nous constatons que l'un des départements est effectivement restitué. Seulement il ne s'agit pas du deuxième mais du troisième. En effet, comme nous l'avions appris en 
Javascript  notamment, un 
tableau de variables  débute à l'indice 0. Donc, nous aurions dû mentionner le chiffre 1 pour obtenir l'élément rangé en deuxième ligne.
Le dernier élément, soit le cinquième, est donc rangé à l'indice 4 pour le département de l'Aisne. Nous proposons de le prouver.
Revenir dans l'éditeur de code de la page index.php, 
Changer le paramètre 2 par le chiffre 4 , dans le tableau de variables (echo $dep[4]), 
Enregistrer les modifications, basculer sur le navigateur et réactualiser la page, 
Nous constatons que nous accédons en effet à l'élément demandé, stocké dans la même variable que précédemment mais sur une ligne différente. Il s'agit de la dernière ici en l'occurrence.
En 
programmation , il est important de connaître la taille d'un 
tableau de variables . Cette information permet de le parcourir depuis sa borne inférieure qui est inévitablement 0, jusqu'à sa borne supérieure définie par le dernier élément, moins une unité donc. En 
PHP , c'est la 
fonction sizeof  qui renseigne sur cette donnée.
Revenir dans l'éditeur de code de la page Web, 
Adapter le code de la fonction echo comme suit : echo sizeof($dep); 
Nous devons ainsi afficher le nombre d'éléments contenus dans le tableau, reconnu par son nom de variable passé en paramètre. Comme il s'agit du tableau dans sa globalité, les crochets ne doivent pas être renseignés.
Enregistrer les modifications, basculer sur le navigateur Web et rafraîchir la page, 
La page Web restitue le chiffre 5. Il s'agit effectivement des 5 départements stockés dans le 
tableau de variables . Désormais nous sommes donc en mesure de le parcourir grâce à une 
boucle de programmation  que nous avait apprise la 
formation PHP sur les traitements itératifs .
Pour ce faire nous proposons d'exploiter une 
boucle bornée For . Elle doit permettre de restituer par concaténation de code client et serveur, l'ensemble des éléments du tableau, les uns en-dessous des autres. Il s'agit donc d'y intégrer l'
instruction echo .
Revenir dans l'éditeur de code de la page Web, 
Puis adapter le code de la section PHP comme suit : <?phpfor($ligne=0 ; $ligne<sizeof($dep) ; $ligne++)  
Nous parcourons les éléments du tableau du premier ($ligne=0) jusqu'au dernier ($ligne<sizeof($dep)). A chaque passage, nous incrémentons la variable du compteur ($ligne++). Et nous l'exploitons pour restituer l'élément situé sur la rangée correspondante (echo $dep[$ligne]).
Enregistrer les modifications, basculer sur le navigateur Web et rafraîchir la page, 
Effectivement, nous avons réussi à accéder à chaque élément du tableau référencé par son indice de ligne et à les restituer les uns en dessous des autres par concaténation Html, grâce à la 
balise <br />  qui consiste en un saut de ligne.
En 
PHP , il est très simple d'ajouter de nouvelles valeurs à la suite dans le 
tableau de variables .
Revenir dans l'éditeur de code de la page Web, 
Avant la boucle , ajouter l'instruction suivante : ...$dep[]="38-Isère";  
Nous désignons le tableau par le nom de sa variable sans valeur de paramètre mais avec les crochets. Ils sont destinés à accueillir une donnée. Nous l'affectons sur une nouvelle valeur. Par défaut, cette dernière est ajoutée à la fin du tableu. C'est ce que nous proposons de constater.
Enregistrer les modifications, basculer sur le navigateur Web et rafraîchir la page, 
Comme vous le remarquez, le nouveau département est bien listé à la suite dans l'énumération, grâce au traitement itératif de la 
boucle For . Sa borne supérieure s'est dynamiquement adaptée grâce à la 
fonction sizeof .
De même, il est très simple de supprimer un élément reconnu par son indice de ligne, dans un 
tableau Php . Pour cela, nous devons exploiter la 
fonction unset .
Revenir dans l'éditeur de code de la page Web, 
Puis, ajouter l'instruction PHP suivante, juste avant la boucle : ...unset($dep[2]);  
Enregistrer les modifications, basculer sur le navigateur Web et rafraîchir la page, 
Au passage du troisième élément repéré par son indice 2, nous rencontrons une erreur. En effet le département du Var a été supprimé par la 
fonction unset . Néanmoins, la ligne est toujours présente mais elle est vide.
Pour palier le problème, nous proposons d'adapter le code de la 
boucle . Il s'agit de tester l'existence de l'élément en cours de lecture. Nous avons appris et exploité la 
fonction Php isset  dans les formations précédentes. Elle retourne une valeur booléenne indiquant si la variable existe. Comme il s'agit d'un test, nous devons l'intégrer dans une instruction conditionnelle.
Revenir dans l'éditeur de code de la page Web, 
Incrémenter la borne supérieure de la boucle d'une unité, 
Puis, ajouter la condition suivante dans le traitement itératif : ...+1  ;$ligne++)if(isset($dep[$ligne]))  
Comme un élément a été supprimé, la 
fonction sizeof  retourne une dimension inférieure qu'il faut ajuster (+1) dans la borne supérieure de la boucle pour atteindre le dernier élément. Il n'existe plus certes, mais sa rangée est toujours présente. Puis, nous exploitons la 
fonction Php isset  désormais bien connue, pour tester l'existence de la valeur à l'indice en cours de lecture dans la boucle.
Enregistrer les modifications, basculer sur le navigateur Web et rafraîchir la page, 
Comme vous le constatez, la rangée vide est ignorée. L'erreur disparaît et l'énumération se poursuit. Nous aurions aussi pu exploiter la 
fonction array_splice  qui permet de 
redimensionner un tableau  à la volée : array_splice($dep, sizeof($dep));
Une autre fonction est intéressante pour la manipulation des 
tableaux PHP . Il s'agit de la 
fonction print_r . Avec un tableau passé en paramètre, elle restitue l'ensemble de son contenu sans même faire appel à une boucle. Nous proposons de la tester.
Revenir dans l'éditeur de code de la page Web, 
Ajouter les deux instructions PHP suivantes avant l'appel de la fonction unset : ...print_r($dep);  
Enregistrer les modifications, basculer sur le navigateur Web et rafraîchir la page, 
Nous obtenons une vue déployée de l'ensemble des éléments contenus dans le tableau de 
variables Php .
Construire dynamiquement le contenu d'une liste déroulante 
Nous souhaitons désormais mettre à profit ces premières notions à des fins utiles. La 
liste déroulante  sur la page Web est statique. Il s'agit d'un 
contrôle Html Select.  En l'état, elle ne nous intéresse pas. Nous souhaitons remplir son contenu en fonction des données qui auraient été récoltées sur le serveur grâce à une requête exécutée sur la base de données. Mais nous ne savons pas encore attaquer les bases de données en PHP. Nous proposons donc de simuler le cas en construisant une chaîne de caractères en entête de code. Elle doit énumérer les départements les uns à la suite des autres, comme s'ils avaient été réceptionnés depuis la base de données.
Revenir dans l'éditeur de code de la page index.php , 
Passer toutes les instructions en commentaires (/* */), 
Nous proposons d'intégrer ce nouveau code dans la 
page de connexion . C'est elle qui intervient en premier dans la chronologie. Elle est chargée grâce à l'instruction 
Php include , comme nous l'avons constaté en préambule de cette formation. Nous simulerons ainsi une première connexion.
A la racine du dossier de décompression, double cliquer sur le sous dossier commun  pour l'ouvrir, 
Cliquer alors avec le bouton droit de la souris sur le fichier connexion.php , 
Dans le menu contextuel, choisir de l'ouvrir avec un éditeur tel que le Notepad++, 
Nous y notons la présence des instructions codées lors de la formation précédente. Elles permettent de restituer les informations d'Url purgées et de les adapter dynamiquement dans les titres de chaque page du site.
A la suite du code, ajouter la déclaration de variable suivante : ...$dep="46-Lot, 03-Allier, 83-Var, 26-Drôme, 02-Aisne, 38-Isère";  
Nous supposons donc que ces données concaténées sont issues du serveur. Mais elles ne sont pas dissociées. Elles ne sont pas rangées explicitement et indépendamment dans un 
tableau de variables . Et pourtant c'est ce dont nous avons besoin pour parcourir chacun de ces éléments du premier au dernier. En 
Javascript , nous avions appris à exploiter la 
méthode split  pour découper une chaîne de texte sur un caractère remarquable. Cette méthode permettait de transformer la variable affectée en tableau de variables à la volée. Tous les éléments y étaient rangés indépendamment. En 
Php , il ne s'agit pas d'une méthode, mais d'une 
fonction . Et cette fonction se nomme 
explode . Le caractère remarquable à passer en paramètre pour la découpe est la virgule.
La fonction 
PHP explode , tout comme la 
méthode Javascript split , transforme une variable en tableau à la volée. Il n'est donc pas nécessaire de le déclarer en tant que tel.
A la suite du code précédent, ajouter l'instruction Php  suivante : ...$tableau=explode(",",$dep);  
Pour confirmer que nous avons été en mesure de créer un 
tableau de variables  par cette simple 
fonction explode , nous proposons de tenter de restituer tous ses éléments, les uns à la suite des autres, par une 
boucle de traitement .
Revenir dans la section Php de la page index.php , 
Sous les commentaires précédents, créer la boucle parcourant ce nouveau tableau : ...for($ligne=0 ;$ligne<sizeof($tableau) ;$ligne++)  
Enregistrer les modifications, basculer sur le navigateur Web et rafraîchir la page, 
Comme vous le constatez, tous les éléments ont parfaitement été rangés indépendamment dans les lignes du tableau, ainsi construit à la volée grâce à la 
fonction Php explode .
Nous souhaitons désormais exploiter ce tableau pour construire dynamiquement la liste déroulante en remplaçant son 
contenu statique Html  par du 
code dynamique Php .
Revenir dans le code de la page index.php , 
A partir de la ligne 30 pour un éditeur Notepad, adapter le code Html  de la balise Select , comme suit : ...<?php  
Nous conservons les 
balises Select  ouvrantes et fermantes destinées à déclarer cette liste déroulante. Son contenu quant à lui est remplacé par un 
code Php dynamique . Comme précédemment, il consiste à parcourir tous les éléments du tableau créé grâce à la 
fonction explode . Et chacun de ces éléments est concaténé dans une balise Html (option) destinée à reconstruire chaque ligne de la liste.
Enregistrer les modifications, basculer sur le navigateur Web et rafraîchir la page, 
La liste est effectivement remplie dynamiquement des valeurs du tableau. Un simple traitement itératif a permis de la reconstruire côté serveur par concaténation. Nous allons prouver que son contenu est parfaitement dynamique.
Revenir dans le code de la page connexion.php , 
Ajouter un nouveau département dans le tableau de variables, comme : 08-Ardennes : ...,08-Ardennes "; 
Enregistrer les modifications, basculer sur le navigateur et rafraîchir la page Web, 
Puis, déployer l'affichage de la liste déroulante, 
Comme vous le remarquez, nous constatons la présence de la nouvelle donnée intégrée automatiquement.
Puisque nous parvenons à construire dynamiquement les informations d'une liste déroulante en fonction des données du serveur, nous souhaitons récupérer le choix de l'internaute par le biais de cette liste. Pour ce faire, il s'agit de répliquer ce que nous avons appris dans les formations précédentes. Souvenez-vous, c'est l'instruction 
$_POST  en 
Php  qui permet de réceptionner une donnée transmise, en fonction du nom du 
contrôle Html . La liste déroulante est nommée 
choix_dep .
Revenir dans le code de la page index.php , 
Dans le calque d'identifiant colonne_droite , ajouter le code Php  suivant : ...<?php  
Enregistrer les modifications, basculer sur le navigateur et rafraîchir la page Web, 
Choisir un département dans la liste déroulante, 
Puis, cliquer sur le bouton Envoyer , 
Le choix de l'internaute est parfaitement intercepté et restitué côté serveur. Pour nos développements futurs, il est intéressant de constater à quel point il est simple en 
Php  de construire des interfaces dynamiques, d'interagir avec l'internaute en fonction de ses données et potentiellement d'enclencher des actions dynamiques. Nous sommes dans la philosophie d'un site Web dynamique et évolutif.
Un problème subsiste néanmoins. Les départements ont été réceptionnés dans le désordre. Pour des questions de clarté et d'ergonomie, nous souhaitons réorganiser l'information. Ce souci peut être résolu à la source par une simple 
fonction Php . Il s'agit de la 
fonction sort . Elle permet de trier les informations du tableau qui lui est passé en paramètre.
Revenir dans le code de la page connexion.php , 
A la suite des instructions précédentes, ajouter la ligne Php suivante : ...sort($tableau);  
Enregistrer les modifications, basculer sur le navigateur, 
Valider sa barre d'adresse par la touche Entrée pour recharger la page, 
Puis, déployer l'affichage de la liste déroulante, 
Comme vous le remarquez, une simple 
instruction Php  suffit. Désormais, la liste déroulante Html propose ses informations triées dans l'ordre croissant.
Liste à choix multiples et tableau de variables 
Nous allons voir que nous ne sommes pas au bout de nos surprises avec les possibilités offertes par les 
tableaux en PHP . Il est possible de proposer des zones de liste déroulante à choix multiples et d'en réceptionner les valeurs côté serveur. Ensuite, il ne reste plus qu'à les traiter comme nous savons le faire par traitement itératif. Mais pour cela, quelques adaptations Html sont nécessaires. La méthode de soumission du formulaire doit être passée à 
GET  à la place de POST. Cette méthode permet de transférer des données multiples. Elles transiteront par l'URL du navigateur. Le nom de la liste déroulante (Name), doit être transformé en 
tableau de variables . C'est ainsi que les choix multiples pourront être mémorisés.
Revenir dans le code de la page index.php , 
Adapter les propriétés du formulaire et de la liste, selon les éléments ci-dessous mentionnés en gras : ...method="get"  action="index.php">name="choix_dep[]"  class="liste" multiple="true" style="height:50px;" > 
Tout d'abord nous basculons l'
attribut method  du formulaire sur 
Get . Ensuite nous référençons la liste déroulante dans son nom comme un tableau de variables grâce à ses crochets (name="choix_dep[]). Puis nous lui ajoutons l'
attribut Multiple  que nous fixons à 
True . Cette propriété permet de réaliser des sélections multiples grâce à la touche CTRL et au clic de la souris. Enfin, nous augmentons la hauteur de la liste déroulante (style="height:50px;"). En mode multi-sélection, elle s'affiche en effet complètement déployée.
Nous devons maintenant nous occuper de réceptionner les valeurs transmises par la liste déroulante. Pour cela, nous devons adapter le 
code Php  situé dans le calque d'
identifiant colonne_droite .
Dans le calque colonne_droite, adapter le code Php comme suit : ...if(isset($_GET["choix_dep"]))  
C'est fort logiquement l'instruction 
$_GET  qui remplace l'instruction 
$_POST  pour la réception des valeurs. Nous lui passons le nom du contrôle en paramètre. Celui-ci est déclaré comme un 
tableau de variables  par sa 
propriété Name . De fait, nous exploitons la 
fonction Php print_r  pour restituer tout son contenu.
Enregistrer les modifications et basculer sur le navigateur Web, 
Recharger la page en validant sa barre d'adresse par la touche Entrée du clavier, 
Sélectionner plusieurs départements (Touche CTRL) dans la liste déployée, 
Puis, cliquer sur le bouton Envoyer  pour soumettre ces choix, 
Vous constatez que les données ont parfaitement été transmises au serveur sous forme de 
tableau de variables . Toutes ont ainsi pu être réceptionnées pour traitements ultérieurs. Dans nos développements futurs, nous exploiterons ces acquis pour proposer de véritables applications Web dynamiques interactives. Mais il nous reste encore beaucoup d'apprentissage. Comme vous l'avez remarqué, du fait du changement de hauteur de la liste, la structure de la page n'est pas correcte. Nous devrions la retravailler. Mais l'objectif ici était d'aborder les 
tableaux de variables en PHP .