OVH Cloud OVH Cloud

variable tableau en session

2 réponses
Avatar
weuw
Bonjour, j'ai à développer un formulaire complexe sur plusieurs pages,
sachant qu'un utilisateur peut passer d'une page à a une autre en gardant
les valeurs rentrées dans les champs.

Je récupére donc toutes mes valeurs de formulaire en session avec la boucle
suivante :

foreach ($_POST as $key => $value)
{
$_SESSION[$key] = $_POST;
}

Ca marche ! sauf pour mes checkbox dont je n'arrive pas à récupérer les
valeurs en naviguant d'une page php à une autre.

Avec serialize, peut-être, mais je ne vois pas comment l'utiliser avec mes
checkbox ??

Merci de votre aide.

2 réponses

Avatar
bruno modulix
weuw wrote:
Bonjour, j'ai à développer un formulaire complexe sur plusieurs pages,
sachant qu'un utilisateur peut passer d'une page à a une autre en gardant
les valeurs rentrées dans les champs.

Je récupére donc toutes mes valeurs de formulaire en session avec la boucle
suivante :

foreach ($_POST as $key => $value)
{
$_SESSION[$key] = $_POST;
}


Avec cette boucle, tu affectes *l'intégralité* du tableau $_POST à
chaque valeur de $key. Tu veux certainement:

foreach ($_POST as $key => $value)
{
$_SESSION[$key] = $value;
}

Ceci étant, je te recommande vivement de "nettoyer" très agressivement
*tout* ce qui viens du monde extérieur - à moins bien sûr que tu ne
tiennes à laisser la porte ouvertes aux petits malins de tous poils...

Ca marche ! sauf pour mes checkbox dont je n'arrive pas à récupérer les
valeurs en naviguant d'une page php à une autre.

Avec serialize, peut-être, mais je ne vois pas comment l'utiliser avec mes
checkbox ??


Le problème n'est certainement pas dans serialize - qui ne fait guère
que retourner une représentation textuelle d'une variable,
représentation utilisable par unserialize pour reconstruire ladite
variable -, mais ailleurs dans ton code. Mais comme on ne connait pas le
dit code...


--
bruno desthuilliers
ruby -e "print ''.split('@').collect{|p|
p.split('.').collect{|w| w.reverse}.join('.')}.join('@')"
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in ''.split('@')])"

Avatar
Pierre Maurette
Bonjour, j'ai à développer un formulaire complexe sur plusieurs pages,
sachant qu'un utilisateur peut passer d'une page à a une autre en gardant les
valeurs rentrées dans les champs.
C'est marrant, je suis peu près sur le même problème. Et dans mon cas,

en tant que débutant ...

Je récupére donc toutes mes valeurs de formulaire en session avec la boucle
suivante :

foreach ($_POST as $key => $value)
{
$_SESSION[$key] = $_POST;
}
Vous avez déjà eu la réponse ($value à la place du tableau $_POST).

Je ne fais pas tout à fait comme ça. Comme j'ai un certain nombre de
formulaires, je mets dans chacun une identification:
<input name="ident" type="hidden" value="LAYOUT">
Dans le PHP, je fais un switch ... case, et dans chaque case je traite
les valeurs une à une ce qui me permet de faire des choses plus fines
(mise en forme, validation).
Justement, voir la suite.

Ca marche ! sauf pour mes checkbox dont je n'arrive pas à récupérer les
valeurs en naviguant d'une page php à une autre.

Avec serialize, peut-être, mais je ne vois pas comment l'utiliser avec mes
checkbox ??
Je n'ai pour l'instant que des boutons radio. J'ai donc essayé un vraie

checkbox, puisque je vais bien finir par en avoir besoin. C'est
effectivement un chouïa sioux. Ça donne:
Vous pouvez oublier ['GENERAL'], c'est simplement que mes variables de
session sont organisées en tableaux.

[dans le FORM]
<label>
<input name="test" type="checkbox"
<?php if($_SESSION['GENERAL']['test']) echo 'checked'; ?>
Test</label><br>


[dans le PHP de traitement]
$_SESSION['GENERAL']['test'] = isset($_POST['test']);

Pour initialiser s'il le faut $_SESSION['GENERAL']['test'], j'utilise
TRUE ou FALSE.

--
Pierre Maurette