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

PHP & Base de données Discussion :

Navigation entre formulaires


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2005
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 59
    Points : 21
    Points
    21
    Par défaut Navigation entre formulaires
    Bonjour à toutes et tous,

    Voici ce que j'essaie de faire, en utilisant des variables de session et un formulaire récapitulatif, posté à la fin:

    - une premiere page (page1) avec un formulaire, genre index, qui permet à l'utilisateur de faire une selection de certains questionnaires (par exemple, l'internaute choisi le questionnaire n°1, le n°2 et le n°4)

    - la premiere page se valide et envoie à une deuxieme page les variables de session qui stockent les questionnaires choisis

    - ma deuxieme page (page2) teste les questionnaires choisis puis affiche le premier questionnaire avec un include(questionnaire1.php)

    - ce questionnaire1.php est encore un formulaire que je valide en postant les valeurs dans la page contenante (page2)

    - la page 2 teste puis affiche un nouveau questionnaire dans "l'include" mais cette fois c'est le deuxième questionnaire

    - en plus de tester pour voir quel questionnaire afficher, j'affecte les variables de session correspondant aux valeurs des champs des questionnaires


    - ... je continue comme cela: affectation variables, test du questionnaire a afficher, affichage du questionnaire dans un include, puis validation etc...

    - à la fin, quand tous les questionnaires ont ete remplis, un par un, par l'utilisateur, en validant, les variables sont postées dans un email !


    Alors voila, je ne sais pas si vous voyez ce que je fais, il s'agit d'une page permettant de choisir quels formulaires on souhaite, puis on remplit un par un ces formulaires selectionnés, et enfin, on envoit en un mail les données saisies dans tous ces formulaires.

    Ma méthode est lourde, pas terrible, surtout que je perds mes valeurs de variables de session!

    En effet, j'ai voulu faire quelque chose de générique. Ma page2 affecte les valeurs du formulaire dans les variables de session, mais quand je change de questionnaire, les variables représentant les données du questionnaire précédent, sont mises a jour avec des valeurs nulles puisque on a changé de questionnaire dans "l'include" !

    Enfin voila, le principe n'est pas trop dur mais compliqué à expliquer. Comment vous y prendriez vous? si je n'ai pas été assez clair, signalez le moi!

    un énorme merci d'avance.

  2. #2
    Débutant
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2004
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 452
    Points : 324
    Points
    324
    Par défaut
    salut


    c'est vrai que c'est pas tres clair... mai bon pourrez-tu detailler un peu plus
    ta procédure au niveau de l'affectation de tes champ dans tes variables de session.
    et aussi un peu de code serai le bienvenue

  3. #3
    Membre actif Avatar de Jean_Benoit
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    499
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 499
    Points : 234
    Points
    234
    Par défaut
    Une solution serait de stocker les variables d'un formulaire dans mysql par des inserts (avec le code du formulaire à ce moment là) et de les récupérer ensuite par des selects en y accédant par le code.
    Comme ça tu ne passes que le code formulaire en variable de session.

    A+

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2005
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 59
    Points : 21
    Points
    21
    Par défaut
    merci beaucoup de ces infos! je vais essayer d'etre plus clair!

    alors voici ma premiere page qui contient la liste des questionnaires, avec des checkbox devant pour que l'internaute choisisse ce qu'il veut (plusieurs choix possibles) :

    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
    <?
    session_start();
     <!--initialisation des variables du choix de questionnaire-->
    for($i=1;$i<=5;$i++){
    $_SESSION["questionnaire".$i]="";
    }
    
    <!--initialisation des variables de chaque questionnaire-->
    for($i=1;$i<=15;$i++){
        for($j=1;$j<=4;$j++){
        $_SESSION["questionnaire1_".$i."_".$j]="";
        }
    }
    
    for($i=1;$i<=18;$i++){
        for($j=1;$j<=4;$j++){
        $_SESSION["questionnaire2_".$i."_".$j]="";
        }
    }
    
    ...
    
    for($i=1;$i<=10;$i++){
        for($j=1;$j<=4;$j++){
        $_SESSION["questionnaire5_".$i."_".$j]="";
        }
    }
    
    ?>
    
    <!--liste des questionnaires-->
    <form name="formulaire_index" id="form1" method="post" action="questionnaire.php">
     <input name="questionnaire1" type="checkbox" id="choix1" value="questionnaire1" />
    questionnaire 1<br>
      <input name="questionnaire2" type="checkbox" id="choix2" value="questionnaire2" />questionnaire2<br>
    <br>
    ....
     <input name="questionnaire5" type="checkbox" id="choix5" value="questionnaire5" />questionnaire5<br>
    <br>
    <input type="submit" name="Submit" value="Envoyer" />
    </form>

    ensuite, j'ai une deuxieme page, qui fait l'affectation des variables (mais c'est la que ca bloque), qui teste quel questionnaire à afficher à présent, et qui affiche le questionnaire avec un "include"


    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
    <!-- attribution valeurs aux variables choix des questionnaires -->
    <?
    for($i=1;$i<=5;$i++){
    $_SESSION["questionnaire".$i]=${questionnaire.$i};
    }
    ?>
    
    <!-- attribution valeurs aux variables questionnaire 1 -->
    <?
    for($i=1;$i<=15;$i++){
        for($j=1;$j<=4;$j++){
        $_SESSION["questionnaire1_".$i."_".$j]=${questionnaire1_.$i._.$j};
        }
    }
    <!-- idem pour questionnaire2, 3, ...questionnaire5 -->
    ?>
    
    <!-- test et selection du questionnaire à afficher -->
    <? 
    if(!empty($_SESSION["questionnaire1"])){
    <!-- si l'utilisateur a choisi le questionnaire1, on l'affiche -->
        include('questionnaire1.php');
        }
    else
        {
    <!-- on teste s'il a choisi le questionnaire2 et on l'affiche -->
        if(!empty($_SESSION["questionnaire2"])){
                include('questionnaire2.php');
    <!-- on réitère jusqu'au dernier questionnaire, le 5 -->
    <!--et une fois que tout est passé en revue, on affiche la page "coordonnées.php" pour saisir les coordonnees et envoyer le mail récapitulant tout! -->
                         include('coordonnees.php');
        }
    ?>

    enfin, j'ai mes pages de questionnaires (celles contenues tour à tour dans la page du dessus) sous cette forme:

    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
    <FORM method="POST" action="questionnaire.php">
    
    <!--première liste déroulante de mon questionnaire1-->
    <select name="questionnaire1_1_1" id="questionnaire1_1_1">
              <option value="non r&eacute;alis&eacute;" selected>non r&eacute;alis&eacute;</option>
              <option value="1">1</option>
              <option value="2">2</option>
              <option value="3">3</option>
              <option value="4">4</option>
              <option value="5">5</option>
              <option value="6">6</option>
              <option value="7">7</option>
          </select>
    <!--il y en a pas mal encore apres !!!-->
    ....
    
    <!--et à la fin de chacun de mes questionnaire, je renvoie les résultats vers la page qui contient ("questionnaire.php") et je libère ma variable initiale, afin que le questionnaire suivant s'affiche à la place du questionnaire1-->
    <INPUT type="submit" value="valider">
      </FORM>
    <?
      $questionnaire1 = "";
      $_SESSION["questionnaire1"] = $questionnaire1; 
    ?>


    Voila, j'espere que vous comprendrez davantage ce que j'ai voulu faire, sachant qu'a mon avis, le probleme vient du fait que lorsque j'attribue mes valeurs de formulaire dans les variables de session, cela pose probleme apres le premier questionnaire saisit, car des valeurs nulles sont affectees aux variables qui stockaient les valeurs du premier questionnaire.

    vous voyez mieux?

    un grand merci d'ailleurs si vous prenez le temps de tout lire!

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2005
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 59
    Points : 21
    Points
    21
    Par défaut
    si vous voulez plus de précisions, n'hésitez pas!

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 012
    Points : 1 093
    Points
    1 093
    Par défaut
    Je n'ai peut-être pas tout suivi, mais je vais essayer de reformuler ton cheminement :
    • Ta première page, dont je ne connais pas le nom, possède une form faisant appel à questionnaire.php et qui permet à ton client de choisir l'un des trois questionnaires via le checkbox
    • Ta seconde page affiche le questionnaire choisi par ton client dans ta première page. Donc, ta seconde page doit être questionnaire.php, puisque c'est celle-là qui est appelée dans ton form. Et donc, comment récupères-tu le choix de ton client ? Je m'attendais à trouver quelques part dans cette page un $_POST['questionnaire1'] par exemple
    • Je n'ai pas trop regardé ta troisième page, mais je m'étonne que son formulaire ait également comme action la page questionnaire.php. Pas que cela soit faux, mais cela veut dire que tu dois gérer les différents traitements, et je ne suis pas persuadé que tu le fasses.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2005
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 59
    Points : 21
    Points
    21
    Par défaut
    merci francis_m pour cette réponse, et effectivement, ce n'est pas évident à découvrir comme cela d'une traite!

    alors, voici quelle technique j'utilise pour récupérer les valeurs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <!-- attribution valeurs aux variables choix des questionnaires -->
    <?
    for($i=1;$i<=5;$i++){
    $_SESSION["questionnaire".$i]=${questionnaire.$i};
    }
    ?>
    - en ce qui concerne mes pages, j'ai une premiere page (index.php par exemple) qui est composée d'un formulaire, permettant à l'internaute de choisir les questionnaires qu'il voudra remplir

    - ensuite, lorsque le choix est fait, cela ouvre une nouvelle page (questionnaire.php) qui contient le questionnaire (questionnaire1.php ou questionnaire2.php,...en fonction des choix précédents)

    J'espere que j'ai pu eclaircir un peu?

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 012
    Points : 1 093
    Points
    1 093
    Par défaut
    oui c'est clair et je réitère ce que j'ai dit plus haut :
    il manque un $_POST dans l'attribution

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2005
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 59
    Points : 21
    Points
    21
    Par défaut
    merci pour cette reponse, et je ne peux t'assurer de rien car je suis novice en php, mais j'avais commencé avec des POST et actuellement, sans les POST, j'arrive a afficher apres la validation des champs d'un questionnaire, ses valeurs dans la page suivante! (c'est anormal??? )

    le probleme que j'ai, le meme que lorsque j'avais les POST, c'est lorsque l'utilisateur choisi 3 questionnaires par exemple, le n°1, le n°2 et le n°4.

    Je memorise ces choix que j'envoie dans ma deuxieme page, la page questionnaire.php

    dans cette page, je teste pour savoir ce qu'il y a comme choix de questionnaire et j'affiche alors les champs du questionnaire 1 (questionnaire.php) dans la page questionnaire.php grace a un include.

    mais comme je souhaitais mettre a chaque fois mes feuilles questionnaire$
    i avec un include dans questionnaire.php, j'ai mis un code dans questionnaire.php pour attribuer les valeurs des champs des questionnaires dans les variables de session, et ce, pour tous les questionnaires

    donc, quand le questionnaire1 s'affiche, on saisi les champs puis on valide, et cela renvoi a la page contenante, qui est la page questionnaire.php

    je recupere les valeurs des champs du questionnaire1 et je les mets dans les variables de session du questionnaire1 mais en plus, je fais pareil avec les variables du questionnaire2, du 3, ...du 5, puisqu'il s'agit d'une page "générique".

    voila, ma page questionnaire2.php s'affiche dans la page questionnaire.php grace a un include, comme precedemment et quand je valide, j'attribue de nouveau les valeurs aux variables du questionnaire1, du 2, ...du 5!

    ainsi, les variables correspondant au questionnaire2 sont remplies mais forcement, puisque l'utilisateur vient de saisir les donnees du questionnaire2, j'attribue des valeurs nulles aux variables des autres questionnaires, notamment aux variables du questionnaire1 qui etaient remplies avant!

    je crois que mon probleme est la

  10. #10
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 012
    Points : 1 093
    Points
    1 093
    Par défaut
    Citation Envoyé par navona
    merci pour cette reponse, et je ne peux t'assurer de rien car je suis novice en php, mais j'avais commencé avec des POST et actuellement, sans les POST, j'arrive a afficher apres la validation des champs d'un questionnaire, ses valeurs dans la page suivante! (c'est anormal??? )
    Personnellement, cela me surprend, ou j'ai mal compris

    Citation Envoyé par navona
    le probleme que j'ai, le meme que lorsque j'avais les POST, c'est lorsque l'utilisateur choisi 3 questionnaires par exemple, le n°1, le n°2 et le n°4.
    Je memorise ces choix que j'envoie dans ma deuxieme page, la page questionnaire.php
    comment, sans POST, fais-tu pour mémoriser ces choix et les transférer de ta page de choix (index.php) vers ta page de traitement (questionnaire.php) ? (peut-être que selon les versions de php le POST n'est pas obligatoire, mais il me semble plus logique de l'utiliser)

    Citation Envoyé par navona
    dans cette page, je teste pour savoir ce qu'il y a comme choix de questionnaire et j'affiche alors les champs du questionnaire 1 (questionnaire.php) dans la page questionnaire.php grace a un include.
    compris

    Citation Envoyé par navona
    mais comme je souhaitais mettre a chaque fois mes feuilles questionnaire$
    i avec un include dans questionnaire.php, j'ai mis un code dans questionnaire.php pour attribuer les valeurs des champs des questionnaires dans les variables de session, et ce, pour tous les questionnaires.
    je suppose que c'est le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?
    for($i=1;$i<=5;$i++){
    $_SESSION["questionnaire".$i]=${questionnaire.$i};
    }
    ?>
    et c'est la que j'attendais un POST

    Citation Envoyé par navona
    je recupere les valeurs des champs du questionnaire1 et je les mets dans les variables de session du questionnaire1 mais en plus, je fais pareil avec les variables du questionnaire2, du 3, ...du 5, puisqu'il s'agit d'une page "générique".
    je suppose qu'il s'agit du code suivant, ou j'attendais également des POST
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?
    for($i=1;$i<=15;$i++){
        for($j=1;$j<=4;$j++){
        $_SESSION["questionnaire1_".$i."_".$j]=${questionnaire1_.$i._.$j};
        }
    }
    Citation Envoyé par navona
    ainsi, les variables correspondant au questionnaire2 sont remplies mais forcement, puisque l'utilisateur vient de saisir les donnees du questionnaire2, j'attribue des valeurs nulles aux variables des autres questionnaires, notamment aux variables du questionnaire1 qui etaient remplies avant!

    je crois que mon probleme est la
    oui effectivement, la, tu les perds.



    dans le code de l'include, tu vides correctement la variable $_SESSION["questionnaire1"]. cependant, dans ta page questionnaire.php, tu n'en tiens pas suffisemment compte :
    effectivement, tu ne réaffiches pas le questionnaire1

    par contre, tu réinitialises les valeurs de ce qustionnaire. pourquoi ne pas faire également un if sur l'attribution des variables du questionnaire 1, par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if(!empty($_SESSION["questionnaire1"])){
      for($i=1;$i<=15;$i++){
          for($j=1;$j<=4;$j++){
          $_SESSION["questionnaire1_".$i."_".$j]=${questionnaire1_.$i._.$j};
          }
      }
    avec la même remarque précédente, je m'attends à y voir un POST

    Tu peux également, dans tes scripts include, afficher les valeurs qui ont été remplie auparavant par ton client, avec checked, selected etc en fonction de type d'entrée. mais cela n'a pas d'intérêt si tu masques le formulaire dès qu'il est validé.

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2005
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 59
    Points : 21
    Points
    21
    Par défaut
    je te remercie une nouvelle fois du temps consacré à mon problème.

    alors pour les variables des questionnaires, effectivement, je pense que je vais les tester auparavant comme tu l'indiques.

    le point négatif est pour les variables du début, correspondantes aux choix des questionnaires a afficher. Je pense surement passer par une base de donnée ou bien ajouter une page conteant questionnaire.php et questionnaire$i.php, mais cela fait tres poupees russes apres, pas terrible je pense!

  12. #12
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 012
    Points : 1 093
    Points
    1 093
    Par défaut
    désolé mais la je n'ai pas compris ce que tu veux dire

  13. #13
    Membre actif Avatar de Jean_Benoit
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    499
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 499
    Points : 234
    Points
    234
    Par défaut
    Je pense surement passer par une base de donnée
    * ça permettrait de modéliser les relations entre formulaires
    * le langage SQL synthétise des traitements complexes à mettre au point en L3G

Discussions similaires

  1. [AC-2007] Navigation entre formulaire principal et sous formulaire
    Par neiluj26 dans le forum IHM
    Réponses: 6
    Dernier message: 27/08/2010, 15h33
  2. [A-03] Créer une navigation entre formulaires
    Par MaxLaMenaX dans le forum IHM
    Réponses: 7
    Dernier message: 30/10/2008, 11h34
  3. navigation entre formulaire
    Par sunwind dans le forum IHM
    Réponses: 1
    Dernier message: 06/04/2008, 10h15
  4. Réponses: 1
    Dernier message: 14/08/2007, 15h37
  5. navigation entre formulaires
    Par samtheh dans le forum IHM
    Réponses: 1
    Dernier message: 14/06/2007, 20h45

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