Apprendre PHP (Hors-série) - Récupérer dynamiquement les valeurs d'un formulaire

In this French tutorial, the presenter demonstrates how to automatically retrieve form data in PHP without manually declaring a variable for each input field. Starting from a standard HTML form that posts fields such as name, surname, email, login, and passwords, he shows the limitations of manually assigning each $POST entry to a scalar variable. He then introduces a method that extracts the keys and values of the $POST superglobal, builds parallel arrays with arraykeys and arrayvalues, and iterates over them to create dynamic variables (e.g., $nom, $prenom, $email) using variable variables. After confirming the approach works, he simplifies the code further by using a foreach loop that directly maps each key to its value. The video also illustrates how these dynamic variables can be used to repopulate form fields after validation errors, improving user experience. Finally, he mentions that the same technique applies to $_GET and suggests centralizing the routine in a single include file for reuse across multiple pages.
Chapters
Bonjour à tous et bienvenue dans cette vidéo hors-série sur le langage PHP. Il ne s'agit pas d'une vidéo où nous allons traiter une leçon en particulier, mais plutôt d'une démonstration qui concerne le traitement des formulaires d'une manière astucieuse. Si vous vous rappelez bien de la leçon où nous avons vu le traitement des formulaires, nous nous sommes servis de la variable superglobale $_POST qui permet de récupérer les valeurs inscrites dans les champs de formulaires. Dans cette page, nous disposons d'un formulaire qui permet à l'utilisateur de s'inscrire par exemple. Le code derrière ce formulaire est le suivant. Ici, c'est la partie HTML où nous avons intégré le formulaire à l'aide de la balise form en utilisant la méthode POST. Dedans, nous avons inclus plusieurs champs de formulaire, à savoir le champ pour inscrire le nom, le prénom, l'email, le login, le mot de passe et la confirmation du mot de passe, sans oublier le bouton de soumission du formulaire de type submit. En bas, nous avons prévu une zone qui permet d'afficher les erreurs éventuelles commises par l'utilisateur au moment de l'inscription. Et tout en haut du document, nous avons intégré la partie PHP comme ceci. Bon, pour le traitement, nous avons déjà fait ça avant, alors je vais pas m'arrêter sur cette partie pour le moment, mais ce qui nous intéresse le plus, c'est ça. En fait, ce bloc permet de récupérer les valeurs inscrites dans les champs du formulaire. Nous avons utilisé la variable superglobale $_POST qui contient comme clé l'attribut HTML, par exemple nom pour la première zone de texte comme ceci, prénom pour la deuxième zone de texte, etc. Et pour simplifier la manipulation de ces valeurs, je les ai déposées dans des variables scalaires qui portent le même nom que la clé. Par exemple, $nom pour la clé nom, $prénom pour la clé prénom, etc. Jusqu'ici tout a l'air bon, mais imaginez avec moi que vous disposez d'un formulaire qui contient une vingtaine de champs, voire même plus. Dans ce cas, il faut déclarer autant de fois des lignes similaires. Bien entendu, c'est un travail qui est un petit peu fastidieux et en plus il y a un grand risque d'oubli d'un champ et des fois c'est un peu frustrant comme situation. Dans cette vidéo, je vais vous montrer une méthode qui permet de récupérer les POST voire même les GET d'une manière automatique. Alors pour le moment, nous allons éliminer cette partie comme ça, puis nous allons faire le traitement suivant. Tout d'abord, essayons d'explorer la variable superglobale $POST. Nous allons donc mettre print_r comme ceci. Maintenant, nous allons exécuter le code pour voir. Par exemple, dans le nom, je vais mettre 1. B, C, etc. Bon, c'est juste des valeurs de test. Quand je mets Valider, sur le navigateur j'aurai le message suivant: la variable $_POST qui est là, c'est un tableau associatif qui contient des clés et des valeurs. La première clé c'est nom qui a la valeur A, la deuxième clé c'est prénom qui a la valeur B, ensuite email qui a la valeur C, etc. Donc puisque c'est comme ça, alors ce que nous allons faire c'est quoi? C'est créer des variables dynamiques qui portent le même nom que la clé, auxquelles nous allons affecter respectivement les valeurs appropriées. Nous allons donc faire le traitement suivant. On va d'abord vérifier si $POST est bien plein, c'est-à-dire si vraiment le formulaire utilise la méthode POST. On mettra donc un traitement du genre if), c'est-à-dire on va voir la longueur du tableau POST. Bon, si c'est supérieur à 0, c'est-à-dire que dans ce cas la variable superglobale $_POST contient bien des valeurs. Allons donc créer 2 tableaux: un tableau qui contient les clés de $post et un tableau qui contient ses valeurs. Dans ce cas, on va faire ceci: le tableau keys égal à array_keys de $post et le tableau vals égal à array_values de toujours $post. Donc maintenant nous disposons de 2 tableaux: le tableau keys qui contient les clés et le tableau values qui contient les valeurs respectives, qui bien entendu ont le même index. On mettra donc ici une boucle pour i allant de 0 jusqu'à count de $post, on incrémente en lieu et place de 1, et on fait ceci: nous allons créer une variable dynamique en utilisant les accolades comme expliqué dans la leçon des chaînes de caractères, Et dedans je mettrai key avec l'index i. Dans ce cas le key i ce n'est rien d'autre que nom, prénom, email, etc. selon la variable i. Et je lui ajoute le dollar pour dire que c'est une variable dynamique. Dans ce cas j'aurai à ma disposition une variable qui s'appelle $nom, $prénom, $email, etc. Et comme valeur je vais lui affecter val . C'est-à-dire que désormais $nom contient la valeur A, $prénom contient la valeur B, $email contient la valeur C, etc. Et bien sûr, ce sont des valeurs qui peuvent changer selon les entrées de l'utilisateur. Donc maintenant, avec ce code, nous allons faire un test pour voir si ça marche. Alors, on exécute la première fois, il se passe rien. Donc maintenant, quand je mets valider, bon, je vois bien qu'il y a des messages d'erreur parce que j'ai laissé tous les champs vides. Donc nom laissé vide, prénom, etc. Maintenant, si je mets quelque chose dans le nom, par exemple A, et que j'exécute, on constate bien que le message nom laissé vide a disparu. En plus, le A a été maintenu parce que j'ai intégré ici value= $nom. Alors on constate très bien que toutes les variables ont été créées d'une manière automatique. Et du coup, je peux ajouter autant d'inputs que je souhaite sans prendre la peine de les déclarer manuellement ici parce que ce traitement permet de les récupérer d'une manière automatique. Sinon, je peux simplifier encore ce traitement davantage. Bon, je vais tout simplement utiliser la structure foreach comme ceci. Foreach $post as key qui pointe sur val et je mets directement la variable dynamique key égale à val. C'est tout. Maintenant j'exécute pour voir si le traitement est toujours correct. Donc quand je mets valider, donc non, c'est vide, etc. Donc maintenant quand je mets une valeur ici et que je valide, on voit bien que ça marche très bien. En fait, c'est une technique qui peut s'avérer très utile avec les grands formulaires. Dans ce cas, plus la peine de se soucier de déclarer les inputs un à un puisque cette méthode nous permet de faire ça d'une manière automatique. Bien entendu, on peut aussi faire la même chose pour le GET. On va faire par exemple un truc comme ça. On va mettre ici GET. Alors de la même manière, nous allons créer des variables dynamiques qui sont récupérées via la variable superglobale $_GET. Ce traitement bien entendu il faut le déclarer sur toutes les pages où vous traitez des formulaires. Mais au lieu de répéter manuellement ce code sur chacune des pages concernées, on va essayer de l'inclure tout en maintenant le code dans une seule et unique page. Et on verra ça dans des séances prochaines. Merci pour votre attention et à la vidéo prochaine!
More from Yamossoun

Algorithme de calcule de la racine carrée par dichotomie #dichotomy #squareroot #algorithm









