Problème avec un questionnaire

Problème avec un questionnaire - PHP - Programmation

Marsh Posté le 05-05-2003 à 19:47:13    

Bonjour,
 
voilà, j'ai un questionnaire à créer mais j'ai quelques soucis :  
- je n'arrive pas à mettre au point ma base de données parce qu'il y a tout type de questions qui appellent des réponses variées : checkbox, bouton radio, champ texte avec parfois pour chaque question 2 voire 15 réponses possibles. Comment faut-il que je crée ma base, combien de tables ? Sachant que j'ai une bonne dizaine de questions.
- mon second souci, c'est justement, par la suite, pour récupérer le plus simplement les réponses qui s'ajouteront dans la base à partir du formulaire en ligne
 
Merci beaucoup de votre aide car je commence à m'arracher les cheveux.

Reply

Marsh Posté le 05-05-2003 à 19:47:13   

Reply

Marsh Posté le 05-05-2003 à 20:44:10    

il faudrait que tu nous donnes plus de precisions et que tu te renseignes sur les structures de bdd ?
c'est ta première conception ?
du reste, il faut que tu fragmentes l'information au maximum pour la stocké aisement dans ta bdd et determiner plus facilement le type d'info.
 
par exemple, pour une adresse > tu peux créer un champs txt ou varachar(255) qui va recuiellir :
 
25, rue des brouettes
Appt 38, Batiment PHP
85620 TROUDUKUDUMONDE
 
mais tu peux aussi faire  un champs pour chaque info dans le cas ou tu dois exercer des controles de validité sur l'info :
- numerorue : 25
- rue : des brouettes
- appt : 38
- batiment : PHP
- codepostal : 85620  
- ville : TROUDUKUDUMONDE
 
voilà ... une petite contribution. ca pourrait durer des heures mais j'ai des choses a faire alors j'invite tout le monde a t'en verser un peu  [:spamafote]  
 


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 05-05-2003 à 21:09:38    

Merci pour ta réponse. En fait, pour essayer d'être plus claire, j'ai 15 questions : 7 avec des réponses possibles par bouton radio, 5 qui proposent un choix multiple par checkbox et 3 qui sont des questions ouvertes qui doivent permettre à l'internaute d'écrire directemnt dans un champ texte. Je dois constituer une base qui va me permettre de récupérer toutes les réponses de mon questionnaire. C'est le fait qu'il y ait des check box qui me gêne, je ne vois pas comment structurer ma base, la ou les tables.

Reply

Marsh Posté le 05-05-2003 à 21:26:47    

ben si ta BDD gere les boolean, tu peux creer un champs boolean pour stocker l'etat des checkbox (true = coché par exemple)
sinon un champ texte d'un caractere (1 = coché par exemple)

Reply

Marsh Posté le 05-05-2003 à 21:28:37    

D'accord mais au final, il faut que je crée une ou plusieurs tables ? Quels seront les champs par exemple ?

Reply

Marsh Posté le 05-05-2003 à 21:30:06    

d'apres se que j'ai compris, tu ne devrais faire qu'une table avec autant de champs que tu as besoin pour stocker toute les infos pour un formulaire.

Reply

Marsh Posté le 05-05-2003 à 21:34:15    

Donc ça va me faire une table avec environ presque une centaine de champs ! Sans compter tout ce qu'il faudra écrire dans le script pour ajouter chaque réponse dans les champs de la table correspondants !

Reply

Marsh Posté le 05-05-2003 à 21:40:51    

ha oui... 100 champs, ca fait peut etre beaucoup, y'a un pb.
peut etre peux tu regrouper tes questoin par type :
- type champs libre
- type radiobutton
- type checkbox
 
et creer une table par type avec un champs qui identifit la question.
 
sinon, 100 champs...pourquoi pas... apres tout une base de donnée c'est fait pour supporter de gros volumes de données. et ca te simplifiera la tache.
t'as un exemple du formulaire en ligne ? ca pourrait aider

Reply

Marsh Posté le 05-05-2003 à 22:00:45    

Je n'ai pas le modèle définitif mais pour se faire une idée de la structure du formulaire, il devra être de ce type là :
- http://membres.lycos.fr/neziak/test/test.php
 

Reply

Marsh Posté le 05-05-2003 à 22:49:54    

avec ce formulaire, je ferais comme ca :
 
2 champs numerique pour les questions 1 et 2 avec stocké le numero de la question repondu.
2 champs texte pour les questions 3 et 4, pour y concatenné les reponses cochées.
2 champs texte pour les questions 5 et 6
 
1 champs numerique pour stocker l'id de la personne interrogé
 
c'est avec ce formulaire la que tu avais compté 100 champs ?


Message édité par nico168 le 05-05-2003 à 22:51:15
Reply

Marsh Posté le 05-05-2003 à 22:49:54   

Reply

Marsh Posté le 05-05-2003 à 23:00:22    

Pour ce formulaire (http://membres.lycos.fr/neziak/test/test.php) ta table est assez simple.
Question 5 et 6: un champ varchar(255) ou text (si nécessaire longtext, ?)
Question 1 et 2: un champ varchar(1) ou tu met le numéro de la case cochée
Question 3 et 4: un champ varchar(x) ou tu mets le numéro des cases cochées séparé par , ou ? ou ?. (ex: 1-2-3)
Quand tu lit la valeur avec une query tu travail sur la réponse en lisant les numéros et on oubliant le séparateur (, ou ? ou ?.).
 
Ça peut paraître peu optimal mes c'est mieux qu'une table de 100 (voir +)champs.


Message édité par spoon25 le 05-05-2003 à 23:00:48
Reply

Marsh Posté le 05-05-2003 à 23:12:58    

Merci, je vais voir tout ça. Non ce n'est pas avec ce script bien sûr que je vais avoir 100 champs, c'était juste un modèle.

Reply

Marsh Posté le 06-05-2003 à 07:07:14    

Je ne trouve nulle part de tut concernant l'ajout des champs d'un formulaire de type bouton radio et check box dans une base nulle part, quelqu'un pourrait-il m'éclairer sur la façon de procéder? On trouve partout des exemples de formulaire de base (nom, prenom etc.) mais pas de type questionnaire.

Reply

Marsh Posté le 06-05-2003 à 07:35:59    

plusieurs facon de proceder :
 
si ton radio est  
 

Code :
  1. <input type="radio" name="nb_de_lapins" value=1 />
  2. <input type="radio" name="nb_de_lapins" value=2 />
  3. <input type="radio" name="nb_de_lapins" value=3 />
  4. <input type="radio" name="nb_de_lapins" value=4 />
  5. prevoit un champs nb_lapins de type Enum('1','2','3','4') par exemple
  6. - ce qui signifie que la valeur stocké sera 1,2,3,4
  7. // !!! : attention enum() est typique à mysql il me semble


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 06-05-2003 à 08:01:21    

simogeo a écrit :

plusieurs facon de proceder :
 
si ton radio est  
 

Code :
  1. <input type="radio" name="nb_de_lapins" value=1 />
  2. <input type="radio" name="nb_de_lapins" value=2 />
  3. <input type="radio" name="nb_de_lapins" value=3 />
  4. <input type="radio" name="nb_de_lapins" value=4 />
  5. prevoit un champs nb_lapins de type Enum('1','2','3','4') par exemple
  6. - ce qui signifie que la valeur stocké sera 1,2,3,4
  7. // !!! : attention enum() est typique à mysql il me semble
  8. D'aprés le bookin, oui, enum, text, set ne sont pas a la norme SQL :)




---------------
AfterEnd: Batissez un nouveau monde
Reply

Marsh Posté le 06-05-2003 à 08:05:12    

;)  c'est ce qu'il me semblait ... mais c'est pratique  :D


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 06-05-2003 à 08:08:28    

Par rapport au questionnaire d'exemple, j'ai crée la table suivante :
 
CREATE TABLE question  
(id INT not null AUTO_INCREMENT,  
quest1 VARCHAR (1) not null ,  
quest2 VARCHAR (1) not null ,  
quest3 VARCHAR (50) not null ,  
quest4 VARCHAR (50) not null ,  
quest5 VARCHAR (50) not null ,  
quest6 VARCHAR (50) not null ,  
PRIMARY KEY (id))  
 
Ma question est, comment écrire le script PHP pour récupérer et insérer les réponses dans les champs sachant donc qu'il y a ces checkbox et bouton radio.

Reply

Marsh Posté le 06-05-2003 à 13:06:44    

J'arrive à rien, je désespère, en plus le formulaire du questionnaire doit être sur plusieurs pages. Quelqu'un peut-il venir à mon aide, s'il vous plaît !!! Je suis sur Paris, je peux même me déplacer pourvu qu'on m'explique !!! Merci !!! :-))

Reply

Marsh Posté le 06-05-2003 à 13:22:00    

ben si tu viens a strasbourg je peux te donner un p'tit cours entre 19h et 20h  [:spamafote]  ( :whistle: )
 
du reste, ca serait vraiment cool que tu trouves kk'un parce que tu es très demandeur .... et c'est consommateur de bcp de temps pour les forumeurs  ;)


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 06-05-2003 à 13:40:51    

ksandre a écrit :

J'arrive à rien, je désespère, en plus le formulaire du questionnaire doit être sur plusieurs pages.


 
c'est quoi ton pb ?
tu n'arrives pas a recuperer les données du formulaire ?
http://www.commentcamarche.com/php/phpform.php3
 
tu n'arrives pas a inserer ces données dans la table ?
http://www.commentcamarche.com/php/phpbdd.php3
 
soit plus precis sur tes problemes si tu veux qu'on puisse t'aider.
 

Reply

Marsh Posté le 06-05-2003 à 14:24:14    

Je vais être plus précise (ben oui je suis une fille). Je veux insérer dans une table le résultat des réponses du questionnaire qui se trouve, pour l'exemple, à l'url que j'ai mentionnée au dessus. Sachant que les réponses se font soit par bouton radio, soit par check box.

Reply

Marsh Posté le 06-05-2003 à 14:35:03    

oui, la tu m'as repeté l'ennoncé du probleme, mais tu ne m'as pas dis ou tu en etais, et ou tu bloquais.
 
en html
1) faire le formulaire
 
en php
2) recuperer les données du formulaire
3) injecter ces données dans la table.
 
 

Reply

Marsh Posté le 06-05-2003 à 14:35:07    

nico168 a écrit :


 
c'est quoi ton pb ?
tu n'arrives pas a recuperer les données du formulaire ?
http://www.commentcamarche.com/php/phpform.php3
 
tu n'arrives pas a inserer ces données dans la table ?
http://www.commentcamarche.com/php/phpbdd.php3
 
soit plus precis sur tes problemes si tu veux qu'on puisse t'aider.
 
 


+1

Reply

Marsh Posté le 06-05-2003 à 14:36:45    

j'ai le formulaire en html mais maintenant je veux les injecter dans la base

Reply

Marsh Posté le 06-05-2003 à 14:37:46    

Il faut que les réponses s'inscrivent directement dans la base quand l'utilisateur valide le formulaire

Reply

Marsh Posté le 06-05-2003 à 14:39:40    

je te fais un script vite fait pour te montrer  
 
ta base est une base MySQL ?
tu sais programmer en PHP ?

Reply

Marsh Posté le 06-05-2003 à 14:42:12    

oui c'est une base mysql et bof le php

Reply

Marsh Posté le 06-05-2003 à 14:47:52    

voila une page php qui traite les resultats des ton formulaire
 

Code :
  1. <html>
  2. <head>
  3. <head>
  4. <body>
  5. <?php
  6. //Récuperation des données du formulaire
  7. $q1=$_POST['q1']
  8. $q2=$_POST['q2']
  9. $q3=$_POST['q3']
  10. $q4=$_POST['q4']
  11. $q5=$_POST['q5']
  12. $q6=$_POST['q6']
  13. // Déclaration des paramètres de connexion
  14. $host = la_machine; 
  15. // c'est-a-dire la machine sur laquelle le script est hébergé
  16. $user = votre_login;
  17. $bdd = Nom_de_la_base_de_donnees;
  18. $passwd  = Mot_de_passe;
  19. // Connexion au serveur
  20. mysql_connect($host, $user,$passwd) or die("erreur de connexion au serveur" );
  21. mysql_select_db($bdd) or die("erreur de connexion a la base de donnees" );
  22. // Creation et envoi de la requete
  23. $query = "INSERT INTO question (quest1,quest2,quest3,quest4,quest5,quest6) VALUES ($q1,$q2,$q3,$q4,$q5,$q6)";
  24. $result = mysql_query($query);
  25. // Deconnexion de la base de donnees
  26. mysql_close();
  27. ?>
  28. </body>
  29. </html>


 
C'est fait vite fait mais "normalement" ça marche  :D


Message édité par ratibus le 06-05-2003 à 14:49:01
Reply

Marsh Posté le 06-05-2003 à 14:49:42    


Merci, je teste et je te dis ça

Reply

Marsh Posté le 06-05-2003 à 14:53:14    

tu auras compris qu'il faut mettre les bonnes valeurs pour $user, $passwd et $bdd
 
faut ensuite que l'attribut action de ta balise form de ton forumulaire soit le nom de ta page php qui fait le traitement (ça peut être la meme bien sur mais le traitement est pas tout a fait pareil)

Reply

Marsh Posté le 06-05-2003 à 14:57:53    

Comment je fais si mon formulaire doit tenir sur plusieurs pages avec des suivants ?

Reply

Marsh Posté le 06-05-2003 à 14:59:56    

alors là ça se complique  :D  
parce que tu dois passer les réponses des pages précédentes à la page actuelle
 
c'est pas possible une page unique ?

Reply

Marsh Posté le 06-05-2003 à 15:03:12    

le probleme qui va se poser c'est pour les checkbox car plusieurs réponses peuvent être sélectionnées pour une question

Reply

Marsh Posté le 06-05-2003 à 15:09:59    

Et comment on fait dans ce cas là si je dois vraiment le faire sur trois pages ?

Reply

Marsh Posté le 06-05-2003 à 15:26:32    

dans ce cas, moi je ferais une table par page. donc fais le pour une page, et ca sera le meme principe pour les 2 autres.

Reply

Marsh Posté le 06-05-2003 à 15:40:09    

nico168 a écrit :

dans ce cas, moi je ferais une table par page. donc fais le pour une page, et ca sera le meme principe pour les 2 autres.
 


sauf que ça permet aux utilisateurs de faire une seule page de questionnaire par exemple
 
s'il faut que toutes les questions aient une réponse c pas la bonne méthode de faire 3 tables

Reply

Marsh Posté le 06-05-2003 à 15:42:30    

ratibus a écrit :


sauf que ça permet aux utilisateurs de faire une seule page de questionnaire par exemple
 
s'il faut que toutes les questions aient une réponse c pas la bonne méthode de faire 3 tables


ben...lors du traitement du resultat, on peut supprimer les enregistrement des utilisateurs qui ne sont pas dans les 3 tables.


Message édité par nico168 le 06-05-2003 à 15:43:19
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed