Page 1 sur 1

[Résolu]stocker variables d'un formulaire dans une session

Posté : 16 juin 2006, 08:45
par laklara
Bonjour, ce serait pour savoir si il est possible de stocker l'ensemble des varaiables d'un formulaire (POST) dans une session.
Du genre :
$_SESSION['post'] = $_POST;

En effet, je remplis un formulaire, le résultat s'ouvre sur une autre page (une liste de clients). Si je clique sur effacer un client, j'arrive sur une page de confirmation, je valide, et j'aimerais retrouver le résultat de la recherche (qui n'est plus la, parce que le formulaire ne vient pas d'être posté.

Merci !

Posté : 16 juin 2006, 08:54
par Maxinfos
C'est pas une mauvaise idée ... à tester !!!!!!! :roll:
Mais perso, ce que je fais moi, ben je reinsère les infos de la nouvelle page dans le formulaire de confirmation mais en mettant les éléments que j'ai a sauvegarder en "hidden".

Page1 :

Code : Tout sélectionner

<form method=post action=page2.php> <input name="nom" value""> <input name="prenom" value""> <bouton submit> </form>
Page2.php

Code : Tout sélectionner

<form methode=post action=page3.php> <input type"hidden" name="nom" value="<? echo $_POST['nom']; ?>"> <input type"hidden" name="prenom" value="<? echo $_POST['prenom']; ?>"> <checkbox de confirmation> <button confirmation> </form>
Voila, j'ai codé vite fait pour t'expliquer ... après, je te dis, teste avec ton $_SESSION ... on va pas le faire à ta place non plus ce test !! et n'oublie pas de faire un start_session(); avant !!!!!!

Reécris si tu as un soucis ... et pas pour demander qu'on fasse les tests à ta place !!!!! :D

Posté : 16 juin 2006, 09:20
par laklara
J'ai fait un test du genre :


if (isset($_POST)) $_SESSION['post'] = $_POST;
echo "nomcli = ".$_SESSION ['post']['adresse'];


Je pense que ça va marcher ...
Mais faut que j'essaye plus.

Parce que le problème c'est que je n'ai pas un nombre défini de champs postés, tout dépend de l'utilisateur, vu que c'est un genre de recherche avancé.

Posté : 16 juin 2006, 09:32
par laklara
Je rencontre un problème :

Je souhaite rentrer dans le if suivant uniquement lorsque je viens de valider le formulaire :

if (isset($_POST)) {
$_SESSION['post'] = $_POST;
}

Mais lorsque je reviens un peu plus tard, sans formulaire validé, il passe tout de même dans la condition, ce qui m'efface les données enregistrées dans la session précédemment.

Est ce normal?

Posté : 16 juin 2006, 10:34
par Maxinfos
Déjà, vérifie que tu ne refais pas un session_start() quand tu reviens sur ta page, car si la session est déjà créée et que tu refais un session_start(), ça va tout effacer !!!
Pour éviter cela, fait :

Code : Tout sélectionner

if(!isset($_SESSION)) { start_session(); }
Ensuite, tu n'as qu'à rajouter un champ caché du style

Code : Tout sélectionner

<input type="hidden" name="formulairevalide" value"">
puis tu vérifies dans ta page recevant le formulaire :

Code : Tout sélectionner

if(isset($_POST['formulairevalide'])) { $_SESSION['formulaire']=$_POST; }
Après, n'oublie pas que la session est automatiquement détruite quand tu quittes le navigateur !!!

Posté : 16 juin 2006, 10:59
par laklara
Merci beaucoup, tu as trouvé exactement les deux erreurs que j'avais fait !!
Tout fonctionne parfaitement :)

Merci !