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 :

Formulaire multi-pages avec session


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 2
    Par défaut Formulaire multi-pages avec session
    Bonjour,
    Désireux de mettre en place un système de formulaire « multi-pages », j'ai découvert votre tutorial sur le site « developpez.com ». Après l'avoir mis en place je constate qu'il ne m'est pas possible de voir les variables déjà saisies sur les formulaires antérieurs lorsque j'utilise le menu, sauf sur le premier form au niveau du login qui lui s'affiche sans problème. Toutes les autres valeurs ne se réaffichent pas alors que rien ne les distingue. Si je fais un print_r de ma session je retrouve tous mes champs remplis.

    Pouvez vous éclairer ma lanterne sans vouloir abuser de votre temps ?

    Merci d'avance

  2. #2
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2007
    Messages : 52
    Par défaut
    Peut etre qu'un peu de code eclairerait notre lanterne car j'avoue ne pas comprendre grand chose a ton message...

    A quel article fais tu reference ?

  3. #3
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 2
    Par défaut
    le message n'est pas si nébuleux que ça pourtant, il existe un tutorial sur ce site concernant la conception d'un formulaire réparti sur plusieurs pages écrit par Mr Rossolini
    http://g-rossolini.developpez.com/tu...e=page_4#LIV-B.
    Le principe est de stocker dans un tableau de session les différentes étapes d'un formulaire et de revenir sur les variables saisies en les affichant dans la value des champs concernés (puisqu'elles sont stockées en session). Malheureusement lorsque l'on revient sur les pages antérieures les données ne s'affichent pas. Question : Pourquoi ?

    Voici une des étapes de ce formulaire :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    <form method="post" action="<?php echo CFG_FORM_ACTION; ?>?stage=<?php echo CFG_STAGE_ID+1; ?>">
        <fieldset>
            <legend>Informations personnelles</legend>
            <label>
                Prénom :
                <input type="text" name="first-name" value="<?php
                    echo $_SESSION['forms'][CFG_STAGE_ID]['first-name'];
                    ?>" />
            </label><br />
            <label>
                Nom :
                <input type="text" name="last-name" value="<?php
                    echo $_SESSION['forms'][CFG_STAGE_ID]['last-name'];
                    ?>" />
            </label><br />
            <label>
                Ville :
                <input type="text" name="city" value="<?php
                    echo $_SESSION['forms'][CFG_STAGE_ID]['city'];
                    ?>" />
            </label><br />
            <label>
                Code postal :
                <input type="text" name="postal-code" value="<?php
                    echo $_SESSION['forms'][CFG_STAGE_ID]['postal-code'];
                    ?>" />
            </label><br />
        </fieldset>
     
        <input type="submit" value="Envoyer et continuer" />
    </form>

    la déclaration des variables dans la page index qui recense les résultats :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    session_start();
     
    // Configuration du script
    define('CFG_FORM_ACTION', basename(__FILE__)); // Cela permet de changer le nom du script d'index
    $forms = array( // Voici la liste des formulaires, pratique pour mettre en place le menu de navigation
        1 => 'Informations de connexion',
        2 => 'Informations personnelles',
        3 => 'Études'
        );
     
    // Récupération du numéro de l'étape en cours
    if(empty($_GET['stage']) or !is_numeric($_GET['stage']))
    {
        define('CFG_STAGE_ID', 1);
    }
    else
    {
        // En situation réelle, il faudrait vérifier l'existence de cette page
        define('CFG_STAGE_ID', intval($_GET['stage']));
    }
     
    // Déclaration de la variable de session
    if(empty($_SESSION['forms']))
    {
        $_SESSION['forms'] = array();
    }
     
     
    et le menu dans cette même page qui permet la navigation:
     
     
    $items = array();
    foreach($forms as $form_id => $form_name)
    {
        if(empty($_SESSION['forms'][$form_id]))
        {
            $items[] = $form_name;
        }
        else
        {
            $items[] = '<a href="'.basename(__FILE__).'?stage='.$form_id.'">'.$form_name.'</a>';
        }
    }
    $items[] = '<a href="'.basename(__FILE__).'?stage=4">Résumé</a>';
    echo implode(' - ', $items).'<br /><br />';
    en fait le formulaire est réparti en autant de pages php que d'étapes désirées et les résultats sont collectés dans la page index qui sert à faire le traitement des données et qui affiche le menu. Si cemla n'est pas suffisamment clair, le lien pus haut permet de voir tout le tutorial.

  4. #4
    Invité de passage
    Inscrit en
    Juillet 2009
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 1
    Par défaut formulaire multi page avec session
    slt a tous je sui un debutant en PHP et je veu realiser un formulaire sur plusieurs pages et a la fin recupere les variables des differents formulaires sur une page ex: echo $_SESSION['prenon'] qui ce trouve sur la page 2. voici mon code pour la page 1 mai je sai pa coment recupere les autre variables des autres pages
    Merci de m'aide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    <?php
     
    // on teste si le visiteur a soumis le formulaire de connexion  
    if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') { 
       if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass']))) { 
     
          $base = mysql_connect ('localhost', 'root', ''); 
          mysql_select_db ('sebeno', $base); 
     
          // on teste si une entrée de la base contient ce couple login / pass 
          $sql = 'SELECT count(*) FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'" AND pass_md5="'.mysql_escape_string($_POST['pass']).'"'; 
          $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); 
          $data = mysql_fetch_array($req); 
     
          mysql_free_result($req); 
          mysql_close(); 
     
          // si on obtient une réponse, alors l'utilisateur est un membre 
          if ($data[0] == 1) { 
             session_start(); 
             $_SESSION['login'] = $_POST['login'];
    		 $_SESSION['email'] = $_POST['email'];
    		 //$_SESSION['prenon'] = $_POST['prenon'];		 
             header('Location: voir.php'); 
             exit(); 
          } 
          // si on ne trouve aucune réponse, le visiteur s'est trompé soit dans son login, soit dans son mot de passe 
          elseif ($data[0] == 0) { 
             $erreur = 'Compte non reconnu.'; 
          } 
          // sinon, alors la, il y a un gros problème :) 
          else { 
             $erreur = 'Probème dans la base de données : plusieurs membres ont les mêmes identifiants de connexion.'; 
          } 
       } 
       else { 
          $erreur = 'Au moins un des champs est vide.'; 
       }  
    }  
    ?>
     
     
    <table width="430" border="0" cellpadding="0" cellspacing="0">
      <!--DWLayoutTable-->
      <tr>
        <td width="430" height="297" valign="top"><form action="test.php" method="post">
                <p>Login : <br />
                  <input type="text" name="login" value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>">
                  <br />
                Mot de passe : 
                <input name="pass" type="password" value="<?php if (isset($_POST['pass'])) echo htmlentities(trim($_POST['pass'])); ?>" size="20">
            </p>
                <p>email:
                  <input name="email" type="text"  value="<?php if (isset($_POST['email'])) echo htmlentities(trim($_POST['email'])); ?>">
                  <br />
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      <input type="submit" name="connexion" value="Connexion">
                    </p>
        </form>
     
                            <?php
    if (isset($erreur)) echo '<br /><br />',$erreur;  
    ?>&nbsp;</td>
      </tr>
    </table>

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 7
    Par défaut
    si la première page est correctement remplie, tu stockes les infos en session, comme ça tu peux les retrouver même sur les pages suivantes, et sinon on revient sur la page en question

Discussions similaires

  1. Problème formulaire multi-page avec SESSION
    Par Shakuro dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 20/11/2010, 13h31
  2. Formulaire multi page
    Par moilou2 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 21/04/2008, 16h56
  3. [JMeter] Pages avec session
    Par nicoaix dans le forum Tests et Performance
    Réponses: 1
    Dernier message: 01/06/2007, 11h14
  4. Réaliser un formulaire multi-pages
    Par Philoulheinz dans le forum Langage
    Réponses: 8
    Dernier message: 06/11/2006, 22h03
  5. Gestion multi-page avec un Xpath
    Par Shandler dans le forum Langage
    Réponses: 1
    Dernier message: 17/07/2006, 19h17

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