requete select pour un multichoix

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : requete select pour un multichoix

par Truc » 19 nov. 2007, 16:20

Aller tant qu'on y est "Normalisation".
Faut voir s'il s'agit de ralations n-n ou 1-n ...

Je ne sais pas où tu es allé chercher cette idée de tout stocker dans un même champ :?

par Berzemus » 19 nov. 2007, 16:13

C'est ce qu'on appelle la normalisation.

Il serait plus intéressant d'avoir une table | PERSONNE | FRUIT | avec à chaque fois une personne et un fruit, une relation entre les deux. Une telle table indexée est bien plus rapide que de rechercher à chaque fois dans une liste de valeurs.

Re: re

par Truc » 19 nov. 2007, 15:53

SI SQL n'a rien prévu c'est que cela ne devrait pas ralentir la requete
C'est vrai quoi pourquoi avoir plein de rangements (tiroirs, placards...) dans une cuisine alors qu'il est beaucoup plus pratique de tout laisser trainer au beau milieu de celle-ci :roll:

Ce n'est pas SQL qui n'a rien prévu mais toi qui à mal modélisé ton schéma de BD :?
Les requêtes seront gourmandes dans ton cas de figure (ce que mysql à prévu est FIND_IN_SET)

re

par max.onyx » 19 nov. 2007, 15:31

Désolé pour le multi postage.

Merci de vos réponses.
Je vais me résoudre à faire une requete longue. SI SQL n'a rien prévu c'est que cela ne devrait pas ralentir la requete

Bonne journée

par Truc » 19 nov. 2007, 13:28

Modération :
max.onyx, le multipostage est interdit sur le forum !

Soit tu es en PHP5 et tu postes ici soit tu es en PHP4 et dans ce cas tu postes dans ce forum (voire même Débuter en PHP si tel est ton niveau)

Merci de prendre le temps de lire les règlements.

par Gargan21 » 19 nov. 2007, 13:27

Bonjour,

Tu ne peux pas faire autrement que ce que tu as écris. Si tu as peur que ta requête soit trop longue et que tu veux l'optimiser, il faut commencer par optimiser ton système d'enregistrement en passant par une 2e table liée.

Re: requete select pour un multichoix

par Truc » 19 nov. 2007, 13:27

Voyez vous un autre moyen de traiter cette question ?
Oui revoir la structure de ta BD pour ne pas enregistrer plusieurs données dans un même champ !

Tu peux commencer par nous expliquer ce que tu veux réaliser.

requete select pour un multichoix

par max.onyx » 19 nov. 2007, 13:13

foreach($_POST['fruits'] as $valeur)
{
.....
..... INSERT ........ VALUES (....,$valeur,.....)....
....
}
Si tu veux enregistrer toutes les valeurs dans un seul champ je te conseille d'utiliser implode ou ce qui est indiqué ici : Comment insérer un tableau (array) dans une table avec la fonction serialize?
Après avoir stocké les résultats multichoix dans un seul champ , comment est-il possible de faire une requête sql multichoix sur ce champ

Exemple: une personne a choisi 'pomme' 'orange' 'banane' et je voudrais récuprérer toutes les personnes ayant choisi 'pomme' OU 'banane'

Si j'ai stocké mon résultat sous forme d'un tableau dans un seul champ, la requete WHERE fruits IN ('banane','pomme') ne fonctionnera pas.

Et la requete WHERE fruits LIKE '%pomme%' ne me permet de tester qu'une seule possibilité.

Je voudrais éviter d'utiliser une requete WHERE fruits LIKE '%pomme%' OR fruits LIKE '%banane%' car ma requete risque d'être très longue.

Voyez vous un autre moyen de traiter cette question ?

Merci par avance si vous pouvez faire quelque chose pour moi

MAx