PHP et HTML sont très interactifs : PHP peut générer du HTML et HTML peut passer des informations à PHP. Avant de lire cette faq (foire aux questions), il est important que vous appreniez comme récupérer des variables externes à PHP . La page du manuel correspondante contient beaucoup d'exemples. Faites particulièrement attention à ce que signifie register_globals .
66.1. | Quel encodage/décodage ai-je besoin lors du passage d'une valeur via un formulaire/une URL ? |
Il y a plusieurs étapes pour lesquelles le codage est important. En supposant que vous avez une chaîne de caractères $data , qui contient la chaîne que vous voulez passer de manière non-encodée, voici les étapes appropriées :
Exemple 66.1. Un élément de formulaire HTML caché <?php
Exemple 66.2. Données éditables par l'utilisateur <?php
Exemple 66.3. Dans une URL <?php
|
|
66.2. | J'essaye d'utiliser <input type="image"> mais les variables $foo.x et $foo.y ne sont pas disponibles. $_GET['foo.x'] n'existe pas non plus. Où sont-elles ? |
Lorsque vous validez un formulaire, il est possible d'utiliser une image au lieu du bouton standard de type "submit " avec une balise du type : <input type="image" src="image.gif" name="foo" />Lorsque l'utilisateur clique sur l'image, le formulaire est transmis au serveur avec deux variables supplémentaires : foo.x et foo.y qui représentent les coordonnées du point cliqué. Comme foo.x et foo.y sont des noms de variables invalides en PHP, elles sont automatiquement converties en foo_x et foo_y . Les points sont remplacés par des soulignés. Donc, vous devez accéder à ces variables comme n'importe quelle autre variable tel que décrit dans la section "Variables externes à PHP ". Par exemple, en utilisant $_GET['foo_x'] .
|
|
66.3. | Comment créer un tableau dans une balise <form> HTML ? |
Pour envoyer le résultat du <form> comme un tableau de variables à votre script PHP, vous devez nommer, via l'attribut name , les balises <input>, <select> ou <textarea> comme cela : <input name="MonTableau[]" /> <input name="MonTableau[]" /> <input name="MonTableau[]" /> <input name="MonTableau[]" />Noter les crochets après le nom de la variable, c'est ce qui fait que celle-ci sera un tableau. Vous pouvez grouper les éléments dans différents tableaux de variables en assignant le même nom à différents éléments : <input name="MonTableau[]" /> <input name="MonTableau[]" /> <input name="MonAutreTableau[]" /> <input name="MonAutreTableau[]" />Cela produira deux tableaux de variables, MonTableau et MonAutreTableau, qui seront envoyés au script PHP. Il est également possible d'assigner des clés spécifiques à votre tableau : <input name="UnAutreTableau[]" /> <input name="UnAutreTableau[]" /> <input name="UnAutreTableau[email]" /> <input name="UnAutreTableau[telephone]" />Le tableau UnAutreTableau contiendra les clés 0, 1, email et telephone.
Voir aussi les fonctions sur les tableaux de variables et la section sur les variables externes à PHP . |
|
66.4. | Comment puis-je récupérer le résultat d'un champ HTML SELECT multiple ? |
Le champ SELECT multiple en HTML permet à l'utilisateur de sélectionner plusieurs éléments d'une liste. Ces éléments seront transmis à la page pointée par l'attribut action de la balise form . Le problème est que ces éléments sont tous passés avec le même nom de variable. <select name="var" multiple="yes">Chaque option sélectionnée arrivera au mécanisme de traitement sous la forme : var=option1 var=option2 var=option3Chaque option effacera donc le contenu de la précédente variable $var . La solution consiste à utiliser un tableau de variables dans cet élément de formulaire HTML, par exemple : <select name="var[]" multiple="yes">Cela fera que PHP traitera $var comme un tableau de variables et que chaque assignement de valeur à var[] ajoutera un index au tableau. La première option choisie sera mise dans $var[0] , la suivante sera mise dans $var[1] , etc. La fonction count() peut être utilisée pour déterminer combien d'options ont été sélectionnées, et la fonction sort() peut être utilisée pour trier le tableau, si nécessaire. Notez que si vous utilisez Javascript, [] dans le nom de l'élément peut vous poser problème lorsque vous tenterez d'accéder à celui-ci par son nom. Utilisez plutôt l'indice numérique de l'élément dans ce cas, ou bien utilisez les simples guillemets pour entourer cet élément, comme : variable = documents.forms[0].elements['var[]']; |
|
66.5. | Comment puis-je passer une variable de Javascript vers PHP ? |
Javascript est (habituellement) une technologie côté client et PHP est (habituellement) une technologie côté serveur et sachant que HTTP est un protocole statique, les deux langages ne peuvent pas directement partager des variables. Cependant, il est possible de faire passer des variables entre les deux. Une des solutions pour cela est de générer un code Javascript à l'aide de PHP et de faire rafraîchir le navigateur tout seul, passant ainsi des variables spécifiques au script PHP. L'exemple suivant montre précisément comme réaliser cela -- il permet à PHP de récupérer les dimensions de l'écran du client, ce qui est normalement possible qu'en technologie coté client. |