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

Conception Web Discussion :

[Web] - sondage avec une 20aine de questions


Sujet :

Conception Web

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de ShinJava
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    413
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 413
    Par défaut [Web] - sondage avec une 20aine de questions
    Bonjour tout le monde,
    Vous allez bien ?

    On m'a demandé si c'était possible de faire un sondage avec une 20aine de questions ( avec des checkbox, liste deroulante, etc... )
    J'ai repondu que je ne voyais pas pourquoi ca ne serait pas possible.

    Du coup je vais peut être devoir en developper un, utilisant php/mysql afin de faire des statistiques sur les résultats ensuite.

    Tout d'abord, mettre les resultats dans une BDD ne pose aucun problème.
    Par contre la seule solution que je vois pour stocker les reponses c'est de faire une table avec une vingtaine de colonne (une par question donc).
    Trouvez-vous ca abuser ? Ou bien y'a t'il des manières plus douces et plus simples à faire (peut etre qu'une BDD est une erreur dans ce cas précis, mais comment faire des statistiques alors ?)

    En plus les questions à choix multiple risquent de corser l'affaire et donc il faut rajouter encore des colonnes pour une question.
    Voila un exemple que j'ai en tete pour la table sondage :

    chaque chiffre correspont à une colonne

    1/ Question 1 (Age)
    2/ Question 2 (Sexe)
    3/ Question 3 (reponse a)
    4/ Question 3 (reponse b)
    5/ Question 3 (reponse c)
    6/ Question 4 (reponse a)
    7/ Question 4 (reponse b)
    8/ Quesiton 5
    9/ Question 6
    etc...
    On pourrais aussi faire une table par question , mais ca ferait beaucoup trop de table !
    Voila je connais pas toutes les solutions possibles, j'ai cherché pas mal de tuto qui proposent la meme solution mais seulement pour 2 à 5 questions.

    Merci d'avance

    ++
    ShinJava

  2. #2
    Membre émérite
    Avatar de Kioob
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Par défaut
    Hello,

    Trouvez-vous ca abuser ?
    oh oui.

    A chaque fois que je suis tombé sur un modèle de données de ce genre au taf, ça a été une vraie galère.
    Imagine que du jour au lendemain on te sors que ton "quizz/sondage" doit maintenant avoir une centaine de questions, tu fais comment ?

    Il vaut mieux mettre les choses "proprement" dans la base :
    *) une table avec la liste des questions. 1 ligne = 1 question.
    *) éventuellement une autre table contenant les "réponses" possibles à ces questions (dans le cas d'un QCM). 1 ligne = 1 réponse.
    *) une table avec la liste des participants. 1 ligne = 1 participant
    *) une table contenant les réponses de chaque participants. 1 ligne = 1 réponse.

    Bien sûr il y a d'autres possibilités.

  3. #3
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Pour info il y avait une ébauche de sondage ici : http://www.developpez.net/forums/vie...442615#2519622

  4. #4
    Membre éclairé Avatar de ShinJava
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    413
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 413
    Par défaut
    Rebonjour,
    Tout d'abord merci à vous 2 pour vos réponses, cela m'a bien aidé et j'y vois deja plus clair !
    Donc j'ai essayé de suivre vos modèles et si j'ai bien compris, voila ce à quoi ca devrait ressembler mes tables :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Q_Table (Q pour Question)				
    
    ID_Q   Question
    
    1	   Age 	
    2		Sexe
    3		Question3
    4		Question4
    5		Question5
    6		Question6

    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
    R_Table (R pour Réponse)
    
    ID_R	Reponse
    
    1		 "Defini par l'utilisateur"
    2		 Homme
    3		 Femme
    4       Choix A de la question 3 
    5		 Choix B de la question 3
    6		 Choix C de la question 3
    7       Choix A de la question 4 
    8		 Choix B de la question 4
    9		 Choix A de la question 5
    10      Choix B de la question 5
    11		Choix A de la question 6
    12		Choix B de la question 6
    13		Choix C de la question 6
    14      Choix D de la question 6
    15		Choix E de la question 6
    16		Choix F de la question 6
    17		Choix G de la question 6
    18		Choix H de la question 6
    19		Choix I de la question 6
    20		Choix J de la question 6
    21		Choix K de la question 6
    22		Choix L de la question 6
    
    etc...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    P_Table ( P pour Participant )
    
    ID_P	AGE			SEXE			
    	
    1		ID_R (1)	ID_R (2 ou 3)
    2		ID_R (1)	ID_R (2 ou 3)
    3		ID_R (1)	ID_R (2 ou 3)
    4		ID_R (1)	ID_R (2 ou 3)
    5		ID_R (1)	ID_R (2 ou 3)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    QR_TABLE (Derniere table qui traite les questions-reponses du participant)
    
    ID_QR 	ID_P	ID_Q	ID_R	
    	
    1
    Est-ce que j'ai bon ?
    Si oui, j'ai une petite question : est-ce que le ID_P (id du participant) doit s'incrementer automatiquement ?
    Car je fais comment pour le recuperer et ensuite le mettre dans la QR_TABLE ?

    Parce qu'avec ce modèle-ci les requetes seront les suivantes :
    _Remplir la P_TABLE selon ID_R (1,2 et 3)
    _Remplir la QR_TABLE selon l'ID_P , l'ID_Q et ID_R (et je n'ai pas l'ID_P car il vient juste d'être creer dans la requete précedente)

    Voila voila,
    Merci d'avance pour vos réponses et éclaircissements.

    ++
    ShinJava

  5. #5
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Je comprend pas la structure de P_Table

  6. #6
    Membre émérite
    Avatar de Kioob
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Par défaut
    re,

    *) pour la table "R_Table", il te manque un champ faisant le lien avec la question... sinon ça ne sert pas à grand chose.

    *) table "QR_TABLE" : à quoi te sert le champ "ID_QR" ? La clé est ici déterminée par l'ID_P et ID_Q ; donc pas besoin d'une autre clé.

    *) "R_TABLE", "QR_TABLE", etc, ce n'est quand même pas les noms de tes tables ? Si c'est le cas, je ne vois pas l'interet : à quoi bon mettre "TABLE" dans le nom de ta table ? Et pourquoi ne pas utiliser un nom plus parlant que "Q", "QR", etc ?
    Au moins si tu as une table qui s'appelle "participant", tu devines de suite ce qu'il y a dedans... (d'ailleurs pas la peine de mettre un nom de table au pluriel... si tu crée une table on se doute bien que c'est pour mettre pas mal de données...)

    *) pour les AUTO_INCREMENT, c'est toi qui voit. En tous cas c'est très pratique. Et pour le récupèrer, tu peux par exemple utiliser la fonction mysql_insert_id.

    Edit :

    *) pourquoi avoir un traitement spécifique pour l'age et le sexe ?

  7. #7
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    id de participant en autoincremant + last insert id (mysql_insert_id)

  8. #8
    Membre éclairé Avatar de ShinJava
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    413
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 413
    Par défaut
    Re,

    Mr N. : en fait la structure de la P_Table va me permettre de stocker les participants selon leur age et leur sex.
    Cela devrait me permettre de faire des statistiques du style : "8 Personnes de 25 ans et qui sont des hommes ont répondu aux choix B de la question 4" ou bien "12 Femmes ont repondu A à la question 3"

    Kioob :
    _Effectivement le ID_QR ne sert à rien. merci !
    _ Pas d'inquietude pour les noms de tables, ils seront plus explicites sinon je vais pas m'en sortir
    _Concernant l'age et sexe, cela va me permettre de faire des statistiques (voir ma reponses à Mr .N)
    _Donc pour la table réponse, il serait preferable de faire comme ce qui suit :

    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
    R_Table
    
    ID_R	ID_Q	Reponse
    1		 1		"Defini par l'utilisateur"
    2		 2		Homme
    3		 2		Femme
    4       3		Choix A 
    5		 3		Choix B 
    6		 3		Choix C 
    7       4		Choix A  
    8		 4		Choix B 
    9		 5		Choix A 
    10      5		Choix B 
    11		6		Choix A 
    12		6		Choix B 
    13		6		Choix C 
    14      6		Choix D 
    15		6		Choix E 
    16		6		Choix F 
    17		6		Choix G 
    18		6		Choix H 
    19		6		Choix I 
    20		6		Choix J 
    21		6		Choix K 
    22		6		Choix L

    Mr N. et Kioob : Merci pour le mysql_insert_id, je ne connaissais pas du tout. Et merci aussi pour votre patience et de prendre un peu de temps pour m'éclairer sur ce point.

    Donc voila voila, est-ce que la P_Table pose vraiment un probleme (et le reste?), car pour faire des statistiques je vous trouve que ce modèle peut être un bon compromis non ?

    Merci encore d'avance

    ++
    ShinJava

  9. #9
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Personnellement, P_Table, j'en ferait une requête. Car là il y a redondance d'informations dans ta base, et c'est pas top quand il y a redondance.

    Puis pour l'age, qcm (non multiple) avec fourchette plutot que texte libre, plus simple pour faire les stats après.

  10. #10
    Membre éclairé Avatar de ShinJava
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    413
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 413
    Par défaut
    Citation Envoyé par Mr N.
    Personnellement, P_Table, j'en ferait une requête. Car là il y a redondance d'informations dans ta base, et c'est pas top quand il y a redondance.

    Puis pour l'age, qcm (non multiple) avec fourchette plutot que texte libre, plus simple pour faire les stats après.
    Ok, c'est vrai qu'avec une fourchette pour l'age ca sera plus simple à gérer.
    Par contre je ne comprend pas la première partie de ton message, que veux-tu dire par : "j'en ferais une requête" ?

    Merci d'avance
    ++
    ShinJava

    PS : c'était ton 3000eme message ^^

  11. #11
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Pour les stats, pourquoi pas créer une structure suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RAPPORT(id_rapport, intitulé)
    FILTRE(id_rapport, id_question, id_reponse)
    Et ainsi pour le rapport "Hommes de moins de 25 ans" on a
    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
    QUESTION
    --------
    ...
    10   "Vous êtes un homme ou une femme"
    ...
    23   "Quel est votre âge ?"
    24   "Quelle est votre couleur de cheveux ?"
    ...
    
    REPONSE
    -------
    ...
    10   1   "Homme"
    10   2   "Femme"
    10   3   "Les deux"
    ...
    23   1   "< 25 ans"
    23   2   "> 25 ans et < 50 ans"
    23   3   "> 50 ans"
    ...
    24   1   "Roux"
    24   2   "Blond"
    24   3   "Brune"
    ...
    
    RAPPORT
    -------
    1   "Hommes de moins de 25 ans"
    2   "Femmes qui ont les cheveux blonds"
    3   ...
    
    FILTRE
    ------
    1   10   1
    1   23   1
    2   10   2
    2   24   2
    ...
    
    PARTICIPATION
    -------------
    ...
    id_participant    id_question    id_reponse
    ...
    Ainsi, si ton supérieur veut avoir les stats du sondage en filtrant les hommes de - de 25 ans (rapoort id n°1), l'idée serait de construire la requete dynamiquement en fonction des questions/réponses des filtres pour le rapport.

  12. #12
    Membre éclairé Avatar de ShinJava
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    413
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 413
    Par défaut
    Bonjour,
    J'ai bien analysé ce que tu proposes, et je trouve ca genial.
    En gros le filtre me servira à faire des statistiques plus facilement si j'ai bien tout saisi.

    Par contre y'a un truc qui me fait peur, ca va être les requetes vers la base de données :

    Quand le sondage sera rempli, il va y avoir + d'une vingtaine de INSERT à la fois dans la BDD (vu que chaque ligne d'entrée equivaut à une question/réponse).
    Cela ne risque-t'il pas de poser quelques ennuis vis à vis d'hebergeur ?
    Du coup vaudrait-il mieux espacer les INSERT d'une à 2 secondes ? (si oui , comment ?)

    Merci d'avance pour votre patience.

    ++
    ShinJava

  13. #13
    Membre émérite
    Avatar de Kioob
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Par défaut
    Au contraire, il vaut mieux regrouper les INSERT en une seule requete, comme ça MySQL ne verrouille la table qu'une seule fois, puis fait toutes les écritures d'une traite. Ce qui est beaucoup plus rapide.

  14. #14
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Oui, tu peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    INSER INTO ma_table&#40;champ1, champ2&#41;
    VALUES &#40;val_1_1, val_1_2&#41;,
    &#40;val_2_1, val_2_2&#41;,
    &#40;val_3_1, val_3_2&#41;,
    ...

  15. #15
    Membre éclairé Avatar de ShinJava
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    413
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 413
    Par défaut
    Houlala la honte pour moi, dire que c'était l'un des premiers truc que j'avais vu avec MySQL, et que je n'avais plus jamais utilisé ensuite. Merci

    Sinon concernant ma table participant, je peux tres bien la remplir selon la table Filtre si j'y met toute les possibilité concernant le profil du participant ?

    En tout cas merci encore de partager vos experience, c'est super interessant et tres formateur.

    ++
    ShinJava

  16. #16
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Citation Envoyé par ShinJava
    Sinon concernant ma table participant, je peux tres bien la remplir selon la table Filtre si j'y met toute les possibilité concernant le profil du participant ?
    Euh, j'ai l'impression que tu mélange un peu tout. Si j'ai une suggestion à te faire, c'est de travailler par étapes. Le remplissage du sondage est différent de la partie statistique.
    Donc dans un premier temps, travaille sur la partie sondage (participant-question-réponse), fait en sorte que ca marche, cette étape est assez complete : architecture logicielle, schéma db, interface utilisateur (lambda+admin pour la création des sondages/questions/réponses)

    Une fois cette étape accomplie et validée par ton client -- qui peut être toi-même ou ton supérieur --, passe à la partie statistiques. Si tu fais tout d'un coup, tu risque de t'emmeler les pinceaux, et ton appli sera bancale. Tu auras peut-etre des stats customisable avec camemberts et tout, mais ton interface de création de sondages ne sera pas en conformité avec ce qu'attendait ton client...


    Citation Envoyé par ShinJava
    En tout cas merci encore de partager vos experience, c'est super interessant et tres formateur.
    N'oublie pas que même si certains principes reviennent souvent, une conception est propre à celui qui la pond. Kioob aura surement imaginé un schéma différent, une autre personne un autre schéma. Donc à toi d'adapter ce qu'on te propose à tes besoins et surtout ne pas prendre au pied de la lettre nos suggestions. Que je ne te vois pas t'amener vers ton chef et dire : "c'est les gars de developpez.com qui m'ont dis de faire comme ça"

  17. #17
    Membre émérite
    Avatar de Kioob
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Par défaut
    +1 Mr N.

  18. #18
    Membre éclairé Avatar de ShinJava
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    413
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 413
    Par défaut
    Citation Envoyé par Mr N.
    Que je ne te vois pas t'amener vers ton chef et dire : "c'est les gars de developpez.com qui m'ont dis de faire comme ça"
    hihihi quand meme pas

    Je pense avoir tout ce qu'il faut maintenant (a part le questionnaire hehe, qui ne serait tarder).

    En tout cas un grand merci à vous 2, c'est sympa de m'avoir orienter (car je trouve qu'il est plus interessant de developper ceci au lieu de telecharger un script deja fait). Ca fait les dents
    Je vous remerci pour votre patience et votre sympathie !

    Bonne journée

    ++
    ShinJava

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

Discussions similaires

  1. Communication d'une application web J2EE avec une base de données
    Par wafabrj dans le forum Développement Web en Java
    Réponses: 3
    Dernier message: 23/05/2012, 16h45
  2. Erreur d'appel à un Web Service avec une authentification HTTP basic
    Par Lordsephiroth dans le forum Services Web
    Réponses: 3
    Dernier message: 28/09/2011, 16h53
  3. créer un web service avec une ui en silverlight
    Par pansoul dans le forum Silverlight
    Réponses: 6
    Dernier message: 14/08/2010, 03h38
  4. Réponses: 1
    Dernier message: 03/08/2010, 09h31
  5. Ouvrir un site web local avec une autre machine en intranet
    Par Auxtown-Son dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 07/09/2006, 11h15

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