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 :

Afficher un questionnaire stocké dans une base [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 38
    Par défaut Afficher un questionnaire stocké dans une base
    Bonsoir,

    voila, j'ai commencé a programmer un générateur de formulaire. Chaque question créée est stocké dans une base de donnée.

    Voici mes tables:
    Formulaire: numForm (en auto_increment), intituleForm, dateForm

    Question: numQuest (auto_increment), intituleQuest, typeQuest, nbChoix, dateQuest, numForm# (cle etrangere)

    Choix: numChoix (auto_increment), intituleChoix, numQuest#(cle etrangere)

    A partir de la, jvoudrais savoir comment fait-on, a partir d'une requete, pour recuperer les données sur plusieurs tables.

    je m'explique (c'est pas très clair dsl^^):
    je voudrais afficher un formulaire a partir de son numero ou son intitulé et qu'il puisse m'afficher tout ce formulaire avec ses questions et ses choix. par exemple: page 1
    Quel formulaire voulez vous afficher? (je saisie) 1

    affichage: page 2
    Formulaire n°1
    Question 1: Quel est votre nom?
    Question 2: Vos compétences?
    option 1: Reseaux
    option 2: Programmation
    option 3: base de donnee
    Question 3: etc...

    pour la premiere page, y'a pas de soucy ^^, mais la 2eme page je seche completement.

    je pense qu'il me faudrait:
    1) creer ma requete sql:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $var= "select ... from ... where ...";
    2) j'envoi ma requete avec controle des erreurs:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req = mysql_query($var) or die('Erreur SQL !<br>'.$var.'<br>'.mysql_error());
    3) je fait une boucle qui va faire un tour pour chaque enregistrement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    while($data = mysql_fetch_assoc($req)) {
        // j'affiche les informations de l'enregistrement en cours
        // le numero de question ainsi que l'intitulé de la question
        echo $data['nomQuest'].'<br>'.$data['intituleQuest'].'<br>';
     
        /* et la, vu qu'une question peut avoir plusieurs choix, 
    il me faudrait un while qui puisse comparer le numQuest de la table choix, 
    si le numQuest est identique alors on affiche intituleChoix 
    sinon je m'arrete là et on passe a la question suivante du formulaire. 
    quel fonction doit-je utiliser?*/
        }
    je sais pas si j'étais très clair...

    en tt cas merci a tous ceux qui me filerons un coup de main!

    (jcommence avoir mal au cheveux...^^)

  2. #2
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut
    Comme ça, sans grande reflexion, je dirais que tu devrais gérer le type de réponse pour l'affichage du champ. Si tu as des choix de réponses il va falloir faire la différence entre choix multiples (checkbox ou select), et simple choix (radio ou select). Pour les questions n'ayant pas de choix, ajouter directement un champ texte pour la saisie.

    Mais c'est sur qu'il va falloir faire des tests. Sinon, stocker en base de données, le type de champ associé à la réponse. puis créer en fonction

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 38
    Par défaut
    Citation Envoyé par Kerod
    Comme ça, sans grande reflexion, je dirais que tu devrais gérer le type de réponse pour l'affichage du champ. Si tu as des choix de réponses il va falloir faire la différence entre choix multiples (checkbox ou select), et simple choix (radio ou select). Pour les questions n'ayant pas de choix, ajouter directement un champ texte pour la saisie.

    Mais c'est sur qu'il va falloir faire des tests. Sinon, stocker en base de données, le type de champ associé à la réponse. puis créer en fonction
    C'est ce que je comptais faire...
    L'affichage du champ texte pr la saisie, ou les types de questions pr les choix multiples c'est un autre probleme :p

    Pour l'instant, je me comptente juste de recuperer les questions et les choix... mais je n'y arrive pas

    Une fois ce probleme resolu, j'ajouterai l'affichage du type de questions.

    A moins, que j'attaque directement sur le 2eme probleme, mais je n'ai pas de piste, je sais pas par quoi commencer...

  4. #4
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut
    Ce que je te conseillerai ce serait :

    1. Récupération de toutes les questions appartenant au QCM. (id, titre, question, etc...)
    2. Une fois toutes les questions récupérées (je suppose que tu as un tablea questions et une table réponse) tu fais une nouvelle requete sur la table réponse avec l'id de la question, ce qui te permettra de récupérer toutes les possibilités de réponse.
    Pour un début c'est déjà pas mal, je pense. Après pour distinguer le mode de réponse (checkbox, radio, text) on verra après

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 38
    Par défaut
    voici ma premiere page:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <form method="GET" action="affForm.php">
      <br><br><br>
    	Quel formulaire voulez-vous afficher?  <input type="text" name="num_form">
    <br><br>
    voici ma deuxieme page:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <? if ($_GET['num_form'] == $_GET['numForm']) {
            $result = "SELECT numQuest,intituleQuest FROM question";
    	$req = mysql_query($result) or die('Erreur SQL !<br>'.$result.'<br>'.mysql_error());
    	while($data = mysql_fetch_assoc($req)) {
    		echo '<b>'.$data['numQuest'].'  '.$data['intituleQuest'].'<b><br>';
    		}	
    	}
    ?>

    Pour l'instant dans cette 2eme page je veux afficher, toute les questions qui correspond au meme formulaire.

    Mais j'ai une erreur de syntaxe à $_GET['numForm']
    numForm correspond a l'attribut de la table formulaire, c'est la clé primaire.

    Quel est la syntaxe pour utiliser l'attribut de la table?

    dsl j'ai trop du mal avec le php...

  6. #6
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut
    Déjà c'est faux : $_GET['numForm']

    Tu dois utiliser $_GET et $_POST lorsque tu soumets un formulaire. Or ton numForm appartient à ta base de données. Donc tu dois faire une requête pour voir si elle existe ou pas et affiché les éléments.

    EN gros,
    1. Tu retires le test ou tu le remplaces par un isset(préférable) :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      if (isset($_GET['num_form']) and !empty($_GET['num_form']))
    2. Ensuite tu modifies ta requête pour sélection que les éléments dont tu as besoin :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      'SELECT numQuest, intituleQuest FROM question' . $_GET['num_form']

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 38
    Par défaut
    Merci Kerod

    Voila, l'étape 1 est achevé ^^(Récupération de toutes les questions appartenant au QCM (id, titre, question, etc..)

    A l'étape 2: (recuperation de ttes les possibilités de réponse)

    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
    if (isset($_GET['num_form']) and !empty($_GET['num_form'])) {
       $result = "SELECT numQuest,intituleQuest, nbchoix FROM question, formulaire 
       WHERE question.numForm = formulaire.numForm AND formulaire.numForm='".$_GET['num_form']."' ";
     
       $req = mysql_query($result) or die('Erreur SQL !<br>'.$result.'<br>'.mysql_error());
     
       $result2 = "SELECT numChoix, intituleChoix FROM question, choix WHERE question.numQuest = choix.numQuest";
     
     $req2 = mysql_query($result2) or die('Erreur SQL !<br>'.$result2.'<br>'.mysql_error());
     
      while($data = mysql_fetch_assoc($req) and ($data2 = mysql_fetch_assoc($req2))) {
    		echo '<b>'.$data['numQuest'].'  '.$data['intituleQuest'].'<b><br>';
    		echo $data2['intituleChoix'].'<br><br>';	
    		} fin while
    } //fin if
    voila mon probleme, alors j'arrive a afficher toutes les questions du meme formulaire (etape 1), maintenant ça m'affiche qu'une seule possibilité de reponse pour chaque question et en plus, cette possibilité de reponse ne correspond pas a la question.

    Je pense que l'erreur vient soit de la requete $result2, et/ou, qu'il necessite une boucle de test avant le "echo $data2['intituleChoix']"


    jcrois que ce n'est meme pas la peine que je precise que jsuis un debutant en php

  8. #8
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut
    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
    if (isset($_GET['num_form']) and !empty($_GET['num_form'])) 
        {  
            $result = "SELECT * FROM question WHERE formulaire.numForm='".intval($_GET['num_form'])."' ";
            $req = mysql_query($result) or die('Erreur SQL !<br>'.$result.'<br>'.mysql_error());   
            while($data = mysql_fetch_assoc($req))
            {
                $result2 = "SELECT * FROM choix WHERE numQuest = " . $data['numQuest'];   
                $req2 = mysql_query($result2) or die('Erreur SQL !<br>'.$result2.'<br>'.mysql_error());   
                while($data2 = mysql_fetch_assoc($req2)) 
                {  
                    echo '<b>'.$data['numQuest'].' '.$data['intituleQuest'].'<b><br>'; 
                    echo $data2['intituleChoix'].'<br><br>'; 
                } 
            }    
        } //fin if
    Ca devrait être mieux ainsi

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 04/07/2008, 12h00
  2. Réponses: 4
    Dernier message: 22/02/2007, 10h01
  3. [ODBC] [SQL-Server] affichage d'une image stockée dans une base sql server
    Par ahlemag dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 29/06/2006, 15h45
  4. [MySQL] Afficher une image stockée dans une base de données
    Par LuckySoft dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 22/04/2006, 12h57
  5. Contenu fichier stocké dans une base de données
    Par t_om84 dans le forum Général Python
    Réponses: 20
    Dernier message: 02/03/2006, 11h45

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