Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/01/2008, 12h42   #1
Invité de passage
 
Inscription : mars 2004
Messages : 29
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 29
Points : 4
Points : 4
Par défaut $_POST ou $_GET et le nom des champs

Bonjour.

Dans un formulaire, j'ai des input du style :
<INPUT type="text" name="nom.input" value="test"/>

Si mon formulaire est de type GET, je vois bien dans mon url :
http://monurl/mapage?nom.input=test

Mais quand je récupère la page avec PHP, que ce soit en post ou en get, je ne réussis pas à récupérer ma valeur. J'ai remarqué qu'il transformait les points par des underscore.
J'ai donc :
$_GET[nom_input] = test alors que $_GET[nom.input] n'existe pas.

Pourquoi PHP transforme les points ?
Y a t'il un moyen de passer outre ?
Calambo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2008, 12h48   #2
Rédacteur
 
Avatar de RideKick
 
Homme
Directeur technique
Inscription : septembre 2006
Messages : 5 959
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Directeur technique
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : septembre 2006
Messages : 5 959
Points : 10 889
Points : 10 889
tu ne peux pas nommer une variable avec un point , tu dois utiliser des underscore ou rien attacher le nom complet !
__________________
Pas de questions techniques en MP please

Mon site perso
RideKick est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2008, 12h55   #3
Membre éprouvé
 
Développeur Web
Inscription : avril 2005
Messages : 395
Détails du profil
Informations personnelles :
Âge : 28

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2005
Messages : 395
Points : 479
Points : 479
php.net

Citation:
Un nom de variable valide doit commencer par une lettre ou un souligné (_), suivi de lettres, chiffres ou soulignés.

EDIT : oups désolé j'ai été pris de vitesse
Gats est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2008, 13h59   #4
Modérateur
 
Avatar de s.n.a.f.u
 
Homme
Développeur Web
Inscription : août 2006
Messages : 2 700
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 37
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : août 2006
Messages : 2 700
Points : 3 357
Points : 3 357
Une méthode classqiue pour nommer les variables :
- première lettre en minuscule pour ne pas confondre avec les classes
- pas d'espace ni de points
- première lettre des mots suivants en majuscule.

Ce qui donnerait :
Code :
1
2
3
4
 
$variable
$variableComplexe
$variableEncorePlusLongue
etc...
s.n.a.f.u est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2008, 15h12   #5
Invité de passage
 
Inscription : mars 2004
Messages : 29
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 29
Points : 4
Points : 4
Citation:
Envoyé par Gats Voir le message
php.net
Citation:
Un nom de variable valide doit commencer par une lettre ou un souligné (_), suivi de lettres, chiffres ou soulignés.
C'est donc bien PHP qui fait des restrictions sur le sujet.
Dans la doc HTML du W3C, on a :
Citation:
ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods (".").
Donc normalement, le point devrait être accepté.

C'est un problème pour moi parce que je me vois mal renommer mes INPUT pour la bonne et simple raison qu'ils sont générés de manière automatique.
En fait, au départ, les noms de mes input sont les clés de propriétés java dans un fichier de propriétés. C'est ce qui explique les points utilisés fréquemment dans ce cadre pour séparer les différents éléments.
Pour des raisons de commodités, certaines de ces propriétés ont été incluses dans une table, et cette table de configuration peut être modifiée par un programme PHP. On propose à l'utilisateur de modifier les valeurs des propriétés par des champs input. Il est donc impératif que les clés restent identiques, sinon, ça n'aura aucun impact sur le programme java qui les utilise.

Bref, je crois que je vais être obligé de ruser pour obtenir ce que je veux...
Calambo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2008, 15h47   #6
Membre éclairé
 
Inscription : décembre 2007
Messages : 426
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 426
Points : 313
Points : 313
Bah vu qu'il remplace les point par des underscore, il suffit de le savoir, dans ton php tu met des underscore à la place des points, non ?
__________________
Si un problème ne trouve pas de solution, c'est qu'il n'y à pas de problème
Eric93 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2008, 16h25   #7
Modérateur
 
Avatar de s.n.a.f.u
 
Homme
Développeur Web
Inscription : août 2006
Messages : 2 700
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 37
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : août 2006
Messages : 2 700
Points : 3 357
Points : 3 357
Citation:
Envoyé par Calambo Voir le message
Donc normalement, le point devrait être accepté.
...
Bref, je crois que je vais être obligé de ruser pour obtenir ce que je veux...
Non, le point ne devrait pas être accepté car il s'agit de l'opérateur de concaténation de chaînes en php, et a une autre signification pour les adresses URL.

Alors oui, il va te falloir ruser...

Amuses toi bien !
s.n.a.f.u est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2008, 11h10   #8
Membre actif
 
Avatar de fenkys
 
Inscription : octobre 2007
Messages : 157
Détails du profil
Informations personnelles :
Âge : 45

Informations forums :
Inscription : octobre 2007
Messages : 157
Points : 181
Points : 181
mais là en l'occurence, nous n'avons pas affaire à des variables PHP mais à des variables HTML que PHP traite comme des chaines de caractères.

Utiliser $_GET['nom.variable'] au lieu de $_GET[nom.variable] ne résoudrait pas le problème en plus d'être plus conforme aux recommandations du PHP
fenkys est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h19.


 
 
 
 
Partenaires

Hébergement Web