IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

pbme transmission variables session sur pls pages d'un formulaire


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 45
    Points : 36
    Points
    36
    Par défaut pbme transmission variables session sur pls pages d'un formulaire
    Bonjour,

    Voilà le souci:
    J'ai un formulaire sur 5 pages avec des boutons "suivant" et "précédent" afin que l'utilisateur puisse naviguer dans le formulaire comme il veut!
    Les données de ce formulaire seront ensuite stockées dans ma BD sql, en cliquant sur le bouton "enregistrer" de la dernière page.
    Actuellement, je n'ai pas de soucis pour stocker mes données en variables de session quand on parcourt le formulaire de la page1 à la page5, sans retour en arrière. ça se corse lorsque l'on utilise le retour en arrière. Et là, systématiquement, les données de l'avantdernière page sont effacées.
    Pour information, le bouton "suivant" est un type submit et le bouton "précédent" ne l'est pas. De plus, je laisse la possibilité à l'utilisateur de modifier les données rentrées tant qu'il n'a pas cliqué sur le bouton "enregistrer".
    Je ne sais plus trop quoi faire....

    Merci d'avance pour votre aide et bonne aprem'
    Virginie

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2005
    Messages
    614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Turquie

    Informations forums :
    Inscription : Avril 2005
    Messages : 614
    Points : 502
    Points
    502
    Par défaut
    ben logiquement les variables de sessions ne s'effacent pas sauf si tu les initialisent quelque par à l'affichage ?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 201
    Points : 108
    Points
    108
    Par défaut
    Salut,

    Conserve une trace des étapes validées à chaque nouvelle étape de manière à pouvoir savoir, en cas de retour, s'il s'agit d'une modification des données ou bien simplement de l'initialisation d'une nouvelle étape.
    Sauvegarde ces traces dans une variable de session genre: $_SESSION['register']['step1'] = TRUE; pour la première étape par exemple.

    Ensuite, si t'es à l'étape 2 et que l'utilisateur revient sur la page de l'étape 1 tu feras:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?
    if (isset($_SESSION['register']['step1']) && ($_SESSION['register']['step1'])) {
    	// Retour sur l'étape
    }
    else {
    	// Initialisation
    }
    ?>
    En procédant ainsi, l'utilisateur ne peut pas sauter d'étapes, et tu sais exactement ce qu'il a ou n'a pas encore rempli.

    Il y a d'autres manières de faire, il faut juste conserver des traces logiques entre les étapes.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 45
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par maximenet
    ben logiquement les variables de sessions ne s'effacent pas sauf si tu les initialisent quelque par à l'affichage ?
    En fait, je remplis mes variables de session avec les résultats du formulaire comme ça par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SESSION['truc']=$_POST['truc']
    Comme ça, si l'utilisateur veut modifier le "truc" qu'il a rentré une 1ère fois, mais qu'il veut finalement changer, la variable de session est mise à jour.

    Sinon si ce n'est pas ce que tu appelles "initialisation", je ne vois pas ce que tu veux dire...

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2005
    Messages
    614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Turquie

    Informations forums :
    Inscription : Avril 2005
    Messages : 614
    Points : 502
    Points
    502
    Par défaut
    ben je comprend pas trop ton probleme en faite

    car disons que tu ai 3 pages : 1, 2 et 3

    si sur la page 2 tu demande l'adresse, alors la personne valide son formulaire et se retrouve sur la page 3 donc la $_SESSION['formulaire']['adresse'] est enregistrer.

    si la personne reviens sur la page 2 je vois pas pourquoi $_SESSION['formulaire']['adresse'] serai écrasé

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 45
    Points : 36
    Points
    36
    Par défaut
    En fait, ce qui se passe précisément, c'est que les variables de sessions ne sont pas enregistrées dans la BD entre chaque page. J'attend la fin de mon formulaire pour tout enregistrer .
    Comme ça, l'user peut naviguer dans le formulaire comme si les pages étaient des onglets, le souci étant que lorsqu'il y a un retour en arrière de la page 3 vers la page 2, les infos entrées en page1 sont perdues!

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 45
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par hush
    Salut,

    Conserve une trace des étapes validées à chaque nouvelle étape de manière à pouvoir savoir, en cas de retour, s'il s'agit d'une modification des données ou bien simplement de l'initialisation d'une nouvelle étape.
    Sauvegarde ces traces dans une variable de session genre: $_SESSION['register']['step1'] = TRUE; pour la première étape par exemple.

    Ensuite, si t'es à l'étape 2 et que l'utilisateur revient sur la page de l'étape 1 tu feras:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?
    if (isset($_SESSION['register']['step1']) && ($_SESSION['register']['step1'])) {
    	// Retour sur l'étape
    }
    else {
    	// Initialisation
    }
    ?>
    En procédant ainsi, l'utilisateur ne peut pas sauter d'étapes, et tu sais exactement ce qu'il a ou n'a pas encore rempli.

    Il y a d'autres manières de faire, il faut juste conserver des traces logiques entre les étapes.

    Merci pour l'idée de la variable SESSION[register], c'est effectivement bcp plus propre comme ça mais ça ne résoud pas mon pbme de variable de session qui se volatisent....
    Merci pour ton aide en tout cas...

  8. #8
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2005
    Messages
    614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Turquie

    Informations forums :
    Inscription : Avril 2005
    Messages : 614
    Points : 502
    Points
    502
    Par défaut
    le souci étant que lorsqu'il y a un retour en arrière de la page 3 vers la page 2, les infos entrées en page1 sont perdues!
    je comprend vraiment pas pourquoi

    si dans ta page 1 tu as une variable :
    $_SESSION['form']['pseudo'] qui s'enregistre, je voit pas pourquoi quand il passe de la page 3 à 2 elle serai effacer

    tu fait bien quelque chose dans le genre non ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if(!empty($_POST['pseudo'])){
     $_SESSION['form']['pseudo']= $_POST['pseudo'];
    }
    donc si aucune valeur est en post alors on ne touche pas à la variable de session

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 45
    Points : 36
    Points
    36
    Par défaut
    Ca y est, j'ai trouvé d'où venait le pbme, à savoir une confusion au niveau de l'affectation de la variable $_SESSION....
    En tout cas, merci à vous 2 pour vos réponses rapides et à bientot
    peut-être...
    Bonne soirée
    Virgi

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Conserver 1 session sur x pages
    Par tigunn dans le forum Langage
    Réponses: 6
    Dernier message: 16/02/2009, 14h17
  2. Session sur plusieurs pages
    Par Plougy dans le forum Langage
    Réponses: 14
    Dernier message: 28/05/2007, 22h22
  3. Réponses: 1
    Dernier message: 21/03/2007, 20h44
  4. instantiser une session sur la page d'accueil
    Par Quartus dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 09/05/2006, 13h01
  5. [VB.NET] [PPC] Comment faire un formulaire sur pls pages?
    Par papy27 dans le forum Windows Mobile
    Réponses: 10
    Dernier message: 03/06/2004, 17h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo