Mysql Case a cocher multiple

[Résolu/Fermé]
Signaler
Messages postés
57
Date d'inscription
samedi 6 juin 2009
Statut
Membre
Dernière intervention
14 août 2009
-
Messages postés
2557
Date d'inscription
samedi 21 juillet 2007
Statut
Membre
Dernière intervention
30 mai 2015
-
Bonjour,
voila je suis un peu perdue et je m'embrouille sur un choix a faire et j'aurai aimé votre avis.

Pour faire le plus simple possible dans mon explication, j'ai un formulaire basique avec plusieurs questions qui comporte plusieurs champ (liste déroulante, case a cocher, etc...).

Les champs qui m'interresse ce sont les cases a cocher multiples.

En effet dans ce formulaire je vais me retrouver avec au moins 5 questions qui auront chacune entre 1 et 25 réponses possible en sachant que l'utilisateur pourra choisir seulement une réponse ou 2 ou 10 ou même 25 ou encore une.. en gros il sera libre.
bah oui les internautes sont ch.... :)
Et donc me voila confronté a une question
sachant que je stock toutes les réponses dans une base MySql.. que dois je faire pour faire au mieux?

Dois je créer une table par question comportant jusqu'a 25 champs (puisque 25 réponses possibles) ou une table avec autant de champ que mon formulaire comporte de question et dans ce cas mettre le resultat de mes cases a cocher mulitple dans un champ pour ensuite faire un "explode()".

Sachant que le but apres et de pouvoir effectuer des requetes multicriteres basé sur les réponses des visiteurs.

Y'a p'tre une autre solution mais la je nage, bref votre avis serais le bienvenue, merci par avance ;)

12 réponses

Messages postés
57
Date d'inscription
samedi 6 juin 2009
Statut
Membre
Dernière intervention
14 août 2009
3
Soit je m'exprime mal soit personne n'a eu d'idée, quoi qu'il en soit j'ai trouvé pour ceux que ça interresse.

On créer une table de cette façon :

CREATE TABLE IF NOT EXISTS `test` (
`text_form1` text CHARACTER SET utf8,
`test_form2` text CHARACTER SET utf8,
`test_form3` text CHARACTER SET utf8,
FULLTEXT KEY `text_form1` (`text_form1`),
FULLTEXT KEY `text_form2` (`text_form2`),
FULLTEXT KEY `text_form3` (`text_form3`),
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

(je travaille en utf8, donc enlevez si vous travailler différemment).
l'important étant pour les requêtes d'avoir un champ au format "FULLTEXT KEY".

une fois fait vous faites vos requêtes comme bon vous semble et les remplissez via vos formulaire.

par exemple le questionnaire 1 contient 10 questions, le visiteur peu cocher les 10 questions ce qui donnera dans votre table sur le champ "text_form1":
"mer bateau plage voilier bain piscine serviette tuba planche boite rond sable"
ou pour les puristes :

INSERT INTO `test` (`text_form1`) VALUES
( 'mer bateau plage voilier bain piscine serviette tuba planche boite rond sable');

et ensuite pour les recherches une simple requête comme celle-ci dessous fera le reste :

SELECT *
FROM `test`
WHERE `styl_film` LIKE '%piscine%'
LIMIT 0 , 30



Voila ... Good luck
Messages postés
57
Date d'inscription
samedi 6 juin 2009
Statut
Membre
Dernière intervention
14 août 2009
3
.
Messages postés
2557
Date d'inscription
samedi 21 juillet 2007
Statut
Membre
Dernière intervention
30 mai 2015
351
j'aurais plutot employé la methode des array, cad, stocké tes reponses dans un array unique que j'aurais serializé pour ne faire qu'a 2 champ dans ta BD ,un pour l'id du questionnaire et un pour le tableau serailsé (eventuelement un autre pour la date et/ou l'id du membre)
Messages postés
57
Date d'inscription
samedi 6 juin 2009
Statut
Membre
Dernière intervention
14 août 2009
3
ah bah lol oui mais honnetement je debute alors...
lol l'array ok apres .. je suis perdue
Messages postés
2557
Date d'inscription
samedi 21 juillet 2007
Statut
Membre
Dernière intervention
30 mai 2015
351
lol! evidemment enfin c'est une piste que je te donnais
si ca t'interesse
http://www.manuelphp.com/php/function.serialize.php
Messages postés
57
Date d'inscription
samedi 6 juin 2009
Statut
Membre
Dernière intervention
14 août 2009
3
ca a l'air effectivement pas mal.. mince j'etais toute contente avec mon truc
tu ma gaché mon truc mdrrrr

sérieusement je vais regarder attentivement car comme je vais ensuite faire pas mal de requêtes sur cette table qui contient 4 champ contenant chacun entre 0 et 25 mots .. ca va etre tendu.

Donc si cela me simplifie le travail et surtout n'alourdis pas le temps de traitement ca vaut le coup.
Messages postés
2557
Date d'inscription
samedi 21 juillet 2007
Statut
Membre
Dernière intervention
30 mai 2015
351
j'ai pas dis quez ca allait te simplifier le travail j'ai dis que ca te faisait moins de champs et donc des requetes pus simples donc moins de charge sur le serveur.

Par contre il te faudra surement changer ton ou tes scripts.

et bien sur quand tu recupere le contenu pense a faire un unzerialise.
l'autre avantage de cette methode c'est que tu la passer en get le cas echeant

c'etait pas mon intention de te gacher ton idée ;-)
Messages postés
57
Date d'inscription
samedi 6 juin 2009
Statut
Membre
Dernière intervention
14 août 2009
3
lol non je plaisante ton idée a l'air interressante et juste comme ca plus facile effectivement au niveau de mes requetes car je vais me retrouver avec des recherches du style

"j'aime la choucroute mais verte avec du sel mais sans poivre et beaucoup de pain sans oublier le jambon"

sachant que la choucroute et dans la table "plats" ,verte, sel, jambon dans un des champs ci-dessus (donc format texte) et le reste dans encore une autre table.

Déja je vois les requetes a jointure (euh? j'y connais rien mais je pense que ca va etre ca) donc ton idée me semble plus simple

En gros j'ai pas fini de posté lol
Messages postés
2557
Date d'inscription
samedi 21 juillet 2007
Statut
Membre
Dernière intervention
30 mai 2015
351
e viens de percuter tu n'avais pas dans un autre post un probleme d'upload d'image ???

si tu veut je te file unscript qui marche que j'ai fait.

pour en revenir a ton pb mon metiier est le php et honnetement les jointures je ne M'EN SERT PAS...lol!!! ou alors tres tres rarement une base bien conçue n'a pas besoin de jointure.
je suis a ta dispo si ta besoin t'aide
Messages postés
57
Date d'inscription
samedi 6 juin 2009
Statut
Membre
Dernière intervention
14 août 2009
3
oui c'est moi l'upload!!!
lol non c'est bon j'ai toruvé je suis toute contente :)
j'upload, je renomme, je redimensionne, je supprime xD

pour les tables avec grand plaisir ca va etre bien casse tete

Ah bon tu ne t'en sert pas?? mais euh? bon je vais relire la doc alors je pensais que cela permettais de faire des requetes sur plusieurs tables.. decidement
Messages postés
2557
Date d'inscription
samedi 21 juillet 2007
Statut
Membre
Dernière intervention
30 mai 2015
351
et oui tu consulte plusieurs table mais mal conçue. il faut jamais oublier que le nerf de la guerre en phph/mysql c'est la table.

Vaut mieux faire plusieurs petites requetes simples qu'une seule super compliquée
tu y gagne en debogagge et en charge, si tu debute je voudrais pas te gaver, mais regarde du coté de la programmation objet (POO )
un site tout simple pour te faire une idée
http://sebsauvage.net/comprendre/objet/objet_heritage.html

et la on rentre dans le vif du sujet
https://hdd34.developpez.com/cours/artpoo/

je file au dodo si t'a besoin c'est avec plaisir que je t'offre mon aide
Messages postés
57
Date d'inscription
samedi 6 juin 2009
Statut
Membre
Dernière intervention
14 août 2009
3
lol j'ai juste regarder le debut!
ah bah oui va dormir!
je comprend ca use lol
plus serieusement je vais regarder tout cela demain et me faire une idée, quoi qu'il en soit j'essaie de faire au mieux pour pas que cela se transforme en usine a gaz.

Mais la aie! programmation objet.. oula deja que je commence avec php et que j'evite tout les trucs avec classe, les "this" etc.. lol
j'en suis au fonctions et aux bases mysql je vais y aller doucement :)
Si mon projet marche alors pourquoi pas mais deja que je le realise ... faisons pas ordre

en tout cas je note le "je t'offre mon aide"

Merchi :)
Messages postés
2557
Date d'inscription
samedi 21 juillet 2007
Statut
Membre
Dernière intervention
30 mai 2015
351
y'a pas de soucis n'hesite pas bonne journée à toi