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 :

Génération dynamique de formulaires [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 177
    Points : 115
    Points
    115
    Par défaut Génération dynamique de formulaires
    Bonjour tout le monde,

    Voila j'ai un projet PHP a réaliser dans lequel je dois générer des formulaire dynamiques.

    Explication : Je dois créer un formulaire permettant de saisir le nombre de questions que l'on souhaite avoir dans le formulaire, pour chaque question l'intitulé, le type (radio, checkbox...) et si la question est a choix multiples quels sont les réponses possibles.
    (la suite du projet ne me pose pas de problème, je l'ai réalisée avec un formulaire statique).

    Le problème est que le sujet est relativement flou, et que les professeurs sont peu disponibles en se moment. Je suis donc un peu perdu et je ne sais pas trop comment démarré. Je travaille avec des bases mysql.

    Si vous pouviez m'indiquer des axes de réflexions ou quoique ce soit pour m'aider à démarrer ca serait sympa!!!


    Merci d'avance à tous.

  2. #2
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 488
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 488
    Points : 6 037
    Points
    6 037
    Par défaut
    C'est pas compliqué. Ce que tes profs te demande c'est de pouvoir gérer dynamiquement un formulaire.
    En gros dans une zone admin tu peux générer une champs de formulaire et les grouper.
    Tu proposes une page. Dans cette page du décide d'afficher tel ou tel champ de formulaire avec ses caractéristiques. radio, text,...
    Une page est composé d'un formulaire.
    Un formulaire est composé de champs de formulaire ainsi que sa position par rapport au autre.
    Un champs de formulaire est caractérisé par son type, valeur, nom, id, ...
    Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...

  3. #3
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 177
    Points : 115
    Points
    115
    Par défaut
    Le sujet, je l'ai compris ca va.

    Le but de projet et de saisir une enquète auwprès des anciens étudiants de DUT. Chaque DUT possède un admin qui lui aura accés à la création du questionnaire.

    La création du formulaire ce fera ainsi :
    Combien de question souhaitez-vous dans votre formulaire?

    Question 1 : intitulé :
    type : (check, radio, text...)
    Si check ou radio : combien de réponse?
    valeur réponse1,2,3

    Question 2.......


    Ensuite je dois récupérer les champs et générer le code html qui correspond aux valeurs saisie.


    Jusque là je ne pense pas me tromper. Sauf qu'ensuite je ne sais pas trop comment faire. Une fois les champs récupérer j'en fais quoi?

    Je verrais ca comme ça ==> Je les test et je génère le code HTML correspondant (je fais ca pour toutes les questions), je les stock dans une base. Puis quand c'est une secretaire qui veux remplir le formulaire, j'apelle les champs de la base pour générer le formulaire HTML.

    exemple : L'utilisateur remplit
    Question 1 :
    sujet : nom
    intitulé : Quel est votre nom?
    type : text


    Je genère (en texte?) un code html correspondant :
    Quel est votre nom ? <input type="text" name="nom>

    Je stock dans le base mysql INSERT INTO blabla

    Quand la secrétaire veut acéder au formulaire japelle chaque
    champs de la base et je l'utilise en cde html.



    C'est une bonne technique? C'est réalisable?

  4. #4
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 488
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 488
    Points : 6 037
    Points
    6 037
    Par défaut
    Oui tu peux faire comme ça mais c'est toi qui connait le sujet mieux que moi. Ce genre de choses est assez courrament demandé comme sujet
    Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...

  5. #5
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 177
    Points : 115
    Points
    115
    Par défaut
    Oui j'imagine, ca permet de toucher à tout! Mais le sujet et relativemen flou, et le prof et relativement absent (malade depuis 3 semaines, j'pense que c'est le depression pour lui...). Et on n'a jamais fais de formulaires "dynamiques".

    Tu penses que cette solution est bien adaptée dans l'idée de ce que je dois faire? Est-ce qu'il existe une solution plus simple (à part voler le projet d'un autre mdr)? Parce que j'ai commencer à me lancer dans ce que je pensais en attendant une réponse, et je pense qu'il va me falloir pas mal d'heures de prises de tête!!!

  6. #6
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 488
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 488
    Points : 6 037
    Points
    6 037
    Par défaut
    Fait les choses au plus simple.
    Le php va te permettre de générer du HTML dynamiquement à partir de information que tu lui donne. Par contre je ne connais pas ton niveau en php-mysql.
    Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...

  7. #7
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 177
    Points : 115
    Points
    115
    Par défaut
    Benh niveau de php - mysql : c'est le première année que j'en fais je suis en Licence professionnelle réseau et télécom. En gros a fé 2mois que je fais du php mysql, je connais les bases!

    La création d'une base, de tables, et le stockage des données dans celles-ci ne me posent pas de problèmes! Comme je t'ai dis, j'ai déjà réalisé le projet en utilisant un formulaire statique définit au départ! j'ai créé le formulaire, puis l'utilisateur le remplit et je stock dans plusieurs base les reponses aux blocs de questions d'un même thème. J'ai créé un niveau administrateur qui créé les utilisateurs, et un niveau secrétaire qui permet d'accéder au formulaire et de le remplir, puis d'accéder aux "statistiques" des réponses.

    Ce qui me pose problème dans l'histoire, c'est le fait que ca soit dynamique! Je n'arrive pas à voir la situation clairement :

    Par exemple si l'utilisateur veut créer 10 questions dans le formulaire, comment lui proposer 10 fois la page de saisie d'une question (ou comment afficher 10 champs de saisie d'une question) ?
    Comment définir le "name" automatiquement de mes "input" générer dynamiquement ?

  8. #8
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 488
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 488
    Points : 6 037
    Points
    6 037
    Par défaut
    Citation Envoyé par Samyhijodelaluna
    Benh niveau de php - mysql : c'est le première année que j'en fais je suis en Licence professionnelle réseau et télécom. En gros a fé 2mois que je fais du php mysql, je connais les bases!

    La création d'une base, de tables, et le stockage des données dans celles-ci ne me posent pas de problèmes! Comme je t'ai dis, j'ai déjà réalisé le projet en utilisant un formulaire statique définit au départ! j'ai créé le formulaire, puis l'utilisateur le remplit et je stock dans plusieurs base les reponses aux blocs de questions d'un même thème. J'ai créé un niveau administrateur qui créé les utilisateurs, et un niveau secrétaire qui permet d'accéder au formulaire et de le remplir, puis d'accéder aux "statistiques" des réponses.

    Ce qui me pose problème dans l'histoire, c'est le fait que ca soit dynamique! Je n'arrive pas à voir la situation clairement :

    Par exemple si l'utilisateur veut créer 10 questions dans le formulaire, comment lui proposer 10 fois la page de saisie d'une question (ou comment afficher 10 champs de saisie d'une question) ?
    Comment définir le "name" automatiquement de mes "input" générer dynamiquement ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $nbElement = 10;
    for($i=0; $i<$nbElement;$i++){
      echo '<input type="text" name="blabla_'.$i.'" value="">'.chr(13);
    }
    C'est grossier mais à partir de là tu peux imaginer plein de chose.
    Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...

  9. #9
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 177
    Points : 115
    Points
    115
    Par défaut
    ok une boucle for() toute simple, c'est ce que j'avais imaginé.

    Mais maintenant quand l'utilisateur saisie 1 seule question (type="text") par exemple :
    je génère le code html de la question '<input type='.$type.' name='

    Et la je bloque! Comment choisir le nom. j'ai une solution simple qui est de créer une champs "nom de la question" a remplir par l'utilisateur, mais c'est ridicule comme solution.Sinon je vien d'y penser et je pense que c'est la qolution, c'est une nouvelle fois de créer une nom commun type quest et d'y ajouter un variable incrémentée à chaque question créée... Je vais potasser ça et je te dis ce que ca donne...

    Merci de ton aide, je commence à voir clair dans la démarche à suivre!

  10. #10
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 177
    Points : 115
    Points
    115
    Par défaut
    Bon ca marche pas trop mal pour le création du formulaire, mais j'ai encore quelque soucis.

    1) j'ai ma variable nbrquest qui contient le nombre de question a afficher dans mapage1.php (recupéré de mapage0.html), et je voudrais la passer à mapage2.html (pur générer "nbrquest" fois un code input pour mon formulaire). Comment je peux procéder?

    2) j'ai écris ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    for($i=0;$i<$nbrquest;$i++){
    	echo 'Saisisez l\'intitulé de la question : <input type="text" name="intiule'.$i.'" value="" size=50> <BR>';
     
    	echo 'Quel est le type de vos réponses : <select name=s'.$i.'> <option selected> Text <option> Radio button <option> Select </select><BR><BR>';
     
    	echo 'en cas de question à choix multiple (Radio butto, select), indiquez le nombre de choix :<BR>';
     
    	echo '<input type="text" name="nbrep"'.$i.' value=""><BR>';
     
    	echo
    }
    J'ai un problème pour le choix des réponse multiples. Si on décide de créé un select par exemple, on dispose de plusieurs choix. Comment afficher X zone de texte si l'utilisateur veut X réponses possibles?

  11. #11
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 488
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 488
    Points : 6 037
    Points
    6 037
    Par défaut
    Pour passer un variable dans une autre page il faut passer un parametre.

    <a href="page2.php?nbelement=10">go go go!...</a>

    Dans page2.php tu récupère l'information de cette manière.

    echo $_GET['nbElement']; //Affiche 10 si c'est passé en url.
    echo $_POST['nbElement']; //Affiche 10 si c'est passé via un champs formulaire si method vaut POST.
    Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...

  12. #12
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 177
    Points : 115
    Points
    115
    Par défaut
    J'ai trouvé ca aussi dans des cours php sur le net, pour ma part ca donnerait :

    <a href="mapage2.php?nbquest=<?php echo $nbquest;?>">go go go!!</a>

    mais... comme d'hab... ca marche pas lol!!!

    J'ai essayé en fesant tout simple :
    <a href="mapage2.php?nbquest=10">go go go!!</a>

    avec $nbrquest=$_GET['nbrquest']; dans mapage2.php mais il ne récupère pas la valeur! Ou est l'erreur?

  13. #13
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 177
    Points : 115
    Points
    115
    Par défaut
    En faite c'est bon... désolé j'utilisais pas le bon code source!!!!! Ca marche dans les 2 cas, j'essaye de l'utiliser avec un submit au lieu d'un lien.

  14. #14
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 177
    Points : 115
    Points
    115
    Par défaut
    En utilisant le lien je peux (dois) passer les paramètres utiles dans la page visées dans l'url.
    En utilisant le submit je passe les valeurs des inputs créés dans la pages

    Cependant moi j'ai besoin de passer à la fois la page suivante les valeurs de tous les champs créés et la valeur de nbrquest récupérés dans la page précédente. J'ai cherché un peu partout mais je n'ai pas trouvé le moyen de passer à la fois un paramètre récupéré ET les valeurs des champs.

    Il me faudrait un truc du style

    <FORM action="creerhtml.php?nbrquest=<?php echo $nbrquest; ?>" action=GET>

    mais qui fonctionne!!

    Un indice?

  15. #15
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 488
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 488
    Points : 6 037
    Points
    6 037
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="hidden" name="nbelement" value="<?php echo $NbElement; ?>">
    Ceci est un champs caché qui permet de placer des valeurs ainsi elles seront envoyé comme pour le reste de façon totalement transparente pour l'utilisateur.
    Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...

  16. #16
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 177
    Points : 115
    Points
    115
    Par défaut
    PERFECT!!! Bon bah la j'crois que je sais tout faire sur le projet, quoique j'ai encore un problème à l'heure actuelle :

    comment stocker les chmps récupéré? En effet ken je créer X questions, grosso modo :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    for($i=0;$i<$nbrquest;$i++){
     
    	echo 'Saisisez l\'intitulé de la question : <input type="text" name="intitule'.$i.'" value="" size=50> <BR>';
     
    	echo 'Quel est le type de vos réponses : <select name="s'.$i.'"> <option selected> Text <option> Radio button <option> Select </select><BR>';
     
    	echo 'en cas de question à choix multiples (Radio button, select), indiquez le nombre de choix : ';
     
            echo '<input type="text" name="nbrep"'.$i.' value=""><BR>';
    }
    Je me retrouve en gros avec <select name="s0"> <opt....
    <select name="s1"> <opt....
    <select name="sX"> <opt...
    comme source des "select" de mapage2.php.

    Comment faire pour simuler ça dans mapage3 ?

    $s1=$_GET['s1'];
    $s2=$_GET['s2'];
    ...
    $sX=$_GET['sX'];

    Il faudrait dans une boucle for (à variable $i) concaténé à $s et s $i. C'est possible de construire un nom de variable comme ça??

  17. #17
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 177
    Points : 115
    Points
    115
    Par défaut
    J'pense qu'il faudrait stocker ces variables dans un tableau, la création de variable en incrémentant une partie me parrait impossible à ma connaissance!!

    (je me fais question réponse tout seul lol)

  18. #18
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 488
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 488
    Points : 6 037
    Points
    6 037
    Par défaut
    oui en plaçant $$ma_variable.
    Si je me rappelle bien

    $variable = 'ma_variable';

    $$variable ='toto';
    echo $ma_variable; //affichera "toto"

    Mais je suis pas sur il faut regarder la doc.
    Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...

  19. #19
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    Bonjour,

    Oui le mieux est d'utiliser un tableau.

    Genre pour ton flux html:

    <select name=choix[]>....</select>
    <select name=choix[]>....</select>
    <select name=choix[]>....</select>
    <select name=choix[]>....</select>
    <select name=choix[]>....</select>
    <select name=choix[]>....</select>

    Ne mets pas d'indice pour choix[]
    Une fois soumis, PHP l'interpretera comme un tableau.

    Une fois le formulaire soumis via la method POST, tapes ces ligne dans la page qui est en "action" de ton formulaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    foreach($_POST["choix"] as $cle=>$valeur){
      echo $cle."=>".$valeur."<br>";
    }
    La boucle foreach parcourera ton tableau $_POST["choix"], te donnera les clé avec les valeurs associées.
    A partir de là, tu peux broder ce que tu veux.

    @+

  20. #20
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 177
    Points : 115
    Points
    115
    Par défaut
    merci de ton aide, ca fait plaisir!!! Ca m'a l'air bien comme méthode, c'est en tout cas dans le principe ce dont j'ai besoin.
    J'ai écris pour coller à mon projet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    foreach($_GET['s'] as $cle=>$valeur){
      echo $cle."=>".$valeur."<br>";
    }
    ou "s" est le nom de mes select. cependant j'ai une erreur :
    "Warning: Invalid argument supplied for foreach()"

    J'ai recherché un peu sur le net le foreach() et je l'ai trouvé utilisé de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    foreach($_GET as $cle=>$valeur){
      echo $cle."=>".$valeur."<br>";
    }

    Utilisé comme ca il m'affiche tous les champs de la page précédente, donc ce n'est pas ce que je veux!!!! Le problème ne vient donc pas du foreach(). Une idée??

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. Conception génération dynamique de formulaire
    Par Mooly dans le forum Struts 1
    Réponses: 6
    Dernier message: 20/02/2007, 10h10
  2. [Stratégie] Gérération dynamique de formulaire
    Par stoukou dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 27/09/2005, 09h37
  3. [SQL*Plus] génération dynamique du fichier de spool
    Par lalystar dans le forum Oracle
    Réponses: 3
    Dernier message: 06/12/2004, 10h44
  4. Réponses: 7
    Dernier message: 22/10/2004, 16h18
  5. imprimer graphique croisé dynamique ou formulaire
    Par bossun dans le forum VBA Access
    Réponses: 4
    Dernier message: 23/06/2004, 11h53

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