multiples variables $_GET avec le même nom - PHP - Programmation
Marsh Posté le 22-01-2008 à 17:14:46
pas à ma connaissance.
Marsh Posté le 22-01-2008 à 17:15:04
De mémoire c'est la seule solution.
En général ce type de nom n'est pas passé en GET, mais en POST car rattaché à des inputs et compagnie -> or le GET est officiellement déprécié pour les formulaires.
Marsh Posté le 22-01-2008 à 17:16:13
CyberDenix a écrit : De mémoire c'est la seule solution. |
oui, s'il s'agit d'un formulaire il est plus que conseillé de tout passer en POST - même s'il faut toujours utiliser la même ruse.
Marsh Posté le 22-01-2008 à 17:29:43
aie aie aie, pas de solution dans ce cas là. il faut soit changer le nom des variables soit récupérer la partie paramètre de l'adresse (en général on la trouve dans $_SERVER) et la traiter manuellement pour retrouver l'ensemble des données.
A ma connaissance, le php est d'ailleurs le seul langage qui nécessite qu'on mette un "[]" pour bénéficier d'une mise en tableau automatique des données envoyés en get ou en post.
Marsh Posté le 22-01-2008 à 17:30:30
Impossible à faire. Voir dans le code source, le fichier \main\php_variables.c, la fonction php_register_variable_ex
Marsh Posté le 22-01-2008 à 17:32:55
omega2 a écrit : ...récupérer la partie paramètre de l'adresse (en général on la trouve dans $_SESSION) ... |
$_SERVER ?
Marsh Posté le 22-01-2008 à 17:46:39
Il s'agit ici en fait de dresser des tableaux de stats automatiques issus de DB Oracle donc pas de problème pour l'utilisation de get à la place de post, pas de données de formulaire sensibles
En tout cas merci pour vous éclaircissements, et dommage pour cette petite faiblesse de PHP
Marsh Posté le 23-01-2008 à 13:50:31
ouioui omega, c'est ce que je dis dans mon tout premier message (où les exemples en PHP sont illustrés par des variables issus de l'URL, c'est-à-dire en get!)
Marsh Posté le 23-01-2008 à 14:26:52
Comme quoi il faut toujours se relire : je voulais dire en post, donc même pour les input d'un formulaire.
Marsh Posté le 24-01-2008 à 13:41:54
C'est d'ailleurs assez naze. Ca serait assez trivial de gérer plusieurs fois le même nom sans utiliser [].
Marsh Posté le 24-01-2008 à 14:43:13
FlorentG > Là, je suis d'accord avec toi. C'est l'un des trucs que je trouve le plus mal fait dans ce langage.
Marsh Posté le 24-01-2008 à 14:48:24
omega2 a écrit : C'est l'un des trucs que je trouve le plus mal fait dans ce langage. |
tu t'arrêtes à pas grand chose.
Marsh Posté le 22-01-2008 à 17:05:42
Une URL de ce type :
./page.php?val=1&name=x&val=5
retourne un print_r($_GET) comme celui-ci :
Array
(
[val] => 5
[name] => x
)
ce qui semble logique.
Pourtant sans de loin en être expert, il me semble que dans d'autres langages comme JSP ou ASP, quand une variable en get se retrouve plusieurs fois, elle est automatiquement mise dans une array qui porte son nom, avec en son sein toutes les valeurs existantes.
J'ai trouvé qu'en PHP, il suffit de rajouter "[]" au nom de la variable, et ça semble résoudre le problème :
./page.php?val[]=1&name=x&val[]=5
ce qui donne :
Array
( [val] => Array
( [0] => 1
[1] => 5
)
[name] => x
)
Pour des raisons obscures qui concernent les DBA de ma boîte et que je ne m'évertuerai pas à détailler ici (d'abord faudrait-il que je les comprenne! ) , je voulais savoir s'il n'y avait pas une solution plus élégante (par exemple une config niveau serveur) de bénéficier de cette mise en array automatique sans devoir changer le nom de la variable ...
Bien l'merci d'avance pour tout renseignement !