Probleme de variables $_POST[ ] de variables...

Le
Jean-Francois Ortolo
Bonjour

J'ai besoin de lire des variables paramètres $_POST['$var'] , ou
$var serait une variable contenant une valeur qui serait le nom de la
variable à recevoir.

En effet, le problème est que je m'attends à recevoir un certain
nombre de variables différentes, codées par des indices croissants. Par
exemple: $_POST['indice_1'] , $POST['indice_2'], $_POST['indice_3'] ,
jsuqu'à ce que la variable ne soit plus affectée.

Je peux tester que la variable est affectée ou non, d'après le
résultat de la fonction isset($_POST['indice_2']) par exemple, qui
m'indiquera true dans ce cas.

Mais, comme les quotes qui entourent les noms des variables sont
simples et non pas doubles, si je met directement: $_POST['$var'] avec
$var = "indice_2" par exemple, ça ne va pas marcher, car $var ne sera
pas interprétée, à cause des simples quotes.

Merci de me dire si je fais une erreur.

Sinon, j'ai pensé à l'astuce suivante: Faire une variable de variable
de la forme:

$variable = "$_POST['" . $var . "']";

Et ensuite, j'aurais la valeur de la variable dans: $$variable

Ma question est: Cela est-il correct ?

Sinon, comment fait-on pour recevoir des variables $_POST , dont on
ne sait pas les noms exacts ( bien que codés au départ, donc prévisibles
jusqu'à un certain point ) ?

Dans le cas présent, c'est pour un bon de commande ne nécessitant pas
de cryptage, l'utilisateur sélectionne les articles à acheter, donc je
ne peux pas savoir à l'avance jusqu'à quel indice il achètera.

Merci beaucoup de vos réponses.

Bien à vous.

Amicalement.

Jean-François Ortolo

--
Visitez mon site gratuit donnant des Statistiques,
des Pronostics et des Historiques Graphiques
sur les Courses de Chevaux:
http://www.ortolojf-courses.com/
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Sylvain SF
Le #7040491
Jean-Francois Ortolo wrote on 18/06/2008 23:44:
Bonjour


bonsoir,

Je peux tester que la variable est affectée ou non, d'après le
résultat de la fonction isset($_POST['indice_2']) par exemple, qui
m'indiquera true dans ce cas.

Mais, comme les quotes qui entourent les noms des variables sont
simples et non pas doubles, si je met directement: $_POST['$var'] avec
$var = "indice_2" par exemple, ça ne va pas marcher, car $var ne sera
pas interprétée, à cause des simples quotes.



et pourquoi pas: $i = $_POST[ $var ]; ??

voire:
for ($i = 1; endingTest; $i++)
$aRes = $_POST[ 'indice_' + $i ];

Dans le cas présent, c'est pour un bon de commande ne nécessitant pas
de cryptage, l'utilisateur sélectionne les articles à acheter, donc je
ne peux pas savoir à l'avance jusqu'à quel indice il achètera.



tu pourrais le transmettre comme un champ hidden du formulaire "bon de
commande", champ mis à jour par le script client qui ajoute les articles
au panier; cela éviterais les issset.

Sylvain.
Olivier Miakinen
Le #7040511
Bonjour,

Le 18/06/2008 23:44, Jean-Francois Ortolo a écrit :

J'ai besoin de lire des variables paramètres $_POST['$var'] , ou
$var serait une variable contenant une valeur qui serait le nom de la
variable à recevoir.

[...]

Mais, comme les quotes qui entourent les noms des variables sont
simples et non pas doubles, si je met directement: $_POST['$var'] avec
$var = "indice_2" par exemple, ça ne va pas marcher, car $var ne sera
pas interprétée, à cause des simples quotes.



:-D

C'est un troll ? Si tu veux une variable et pas une constante, comme tu
le dis toi-même il ne faut pas de guillemets simples !

Donc : $_POST[$var].

Tu peux même écrire $_POST['indice_' . $idx] ou $_POST["indice_$idx"].

Merci de me dire si je fais une erreur.



Ben voilà.

Sinon, j'ai pensé à l'astuce suivante: Faire une variable de variable
de la forme:

$variable = "$_POST['" . $var . "']";

Et ensuite, j'aurais la valeur de la variable dans: $$variable

Ma question est: Cela est-il correct ?



Peut-être que ça fera ce que tu veux, mais ce n'est certainement pas
correct en matière de lisibilité. En fait, je pense même que la syntaxe
est mauvaise à cause du $_POST à l'intérieur des guillemets doubles,
mais ça ne vaut même pas la peine de le vérifier parce que ce sera de
toutes façons illisible.

Sinon, comment fait-on pour recevoir des variables $_POST , dont on
ne sait pas les noms exacts ( bien que codés au départ, donc prévisibles
jusqu'à un certain point ) ?



Remplacer :
par :

Et alors $_POST['truc'] est un tableau dont tu peux obtenir le nombre
d'éléments et que tu peux manipuler avec foreach, etc.


Cordialement,
--
Olivier Miakinen
Pascal
Le #7040521
J'ai caffouillé à l'envoi, avec un peu de chance la modération va ne
garder que celui-ci :)

Le 18 Jun 2008 21:44:16 GMT,
Jean-Francois Ortolo écrit :

Bonjour


Bonsoir,


J'ai besoin de lire des variables paramètres $_POST['$var'] , ou
$var serait une variable contenant une valeur qui serait le nom de la
variable à recevoir.

En effet, le problème est que je m'attends à recevoir un certain
nombre de variables différentes, codées par des indices croissants.
Par exemple: $_POST['indice_1'] , $POST['indice_2'],
$_POST['indice_3'] , jsuqu'à ce que la variable ne soit plus affectée.




Je suis pas sur d'avoir compris...

comme ça :

$i=1;
while(isset($_POST['indice_'.$i]))
{
//blabla
$i++;
}

Sinon, comment fait-on pour recevoir des variables $_POST , dont on
ne sait pas les noms exacts ( bien que codés au départ, donc
prévisibles jusqu'à un certain point ) ?



Un tableau ?

<input name="indice[]" />
<input name="indice[]" />

On récupère le tout avec $_POST['indice'][0], $_POST['indice'][1]...
Après on peut utiliser foreach par exemple:

foreach($_POST['indice'] as $un_indice)
{
//blabla
}

Pascal
Jean-Francois Ortolo
Le #7044391
Bonjour

Merci beaucoup pour vos réponses, qui m'indiquent la voie à suivre.

Je vais pouvoir faire ce bon de commande, ouf ! ;)

Merci encore.

Bien à vous.

Amicalement.

Jean-François Ortolo

--
Visitez mon site gratuit donnant des Statistiques,
des Pronostics et des Historiques Graphiques
sur les Courses de Chevaux:
http://www.ortolojf-courses.com/
Publicité
Poster une réponse
Anonyme