Problème avec requête et condition IN [MySQL] - SQL/NoSQL - Programmation
Marsh Posté le 29-11-2006 à 10:13:42
En gros, tu commences par concaténer des valeurs individuelles (stockées dans un tableau) avec implode, et ensuite tu voudrais les séparer ?
Je saisis pas la logique...
Marsh Posté le 29-11-2006 à 10:14:55
tu sais ce que tu fais, tu es sur
$secteurs = implode(',' , $_POST["secteurs"]); == là tu recuperes toutes les valeurs d'un array pour les mettres dans une string séparés par une ,
au lieu de faire ca, tu fais une putain de boucle for et tu boucle sur le tableau $_POST["secteurs"];
Code :
|
et au lieu de les mettres dans $secteur_1... (ce qui est stupide)
tu créé ta requete pour générer une string directement
Marsh Posté le 29-11-2006 à 10:26:23
ReplyMarsh Posté le 29-11-2006 à 10:26:51
Ben-o a écrit : C'est vrai que la logique et moi ça fait 2, merci à vous en tout cas. |
Ca viendra avec le temps et la pratique
Marsh Posté le 29-11-2006 à 10:27:56
FlorentG a écrit : Ca viendra avec le temps et la pratique |
+1.
Ben-o, tu seras pas le premier à te rendre compte avec un peu de recul que t'as fait un truc tordu ou illogique, je pense que c'est arrivé à tout le monde
Marsh Posté le 29-11-2006 à 10:59:20
Vous me rassurez
Par contre pouvez-vous m'écrire le code de la boucle en entier, j'ai pas tout saisi en fait.
Je vais avoir:
Code :
|
Je n'ai compris ceci non plus:
"et au lieu de les mettres dans $secteur_1... (ce qui est stupide) tu créé ta requete pour générer une string directement "
J'avais également trouvé ce code sur internet:
Code :
|
Lequel est-il préférable d'utiliser?
Encore merci pour votre aide.
Marsh Posté le 29-11-2006 à 11:23:37
Ben-o, c'était pas la peine de créer 2 topics. Je t'ai déjà dis comment fallait construire ta requête sql...où alors, j'ai mal compris ce que tu voulais faire...
Marsh Posté le 29-11-2006 à 11:27:16
Ok, donc si j'utilise une boucle foreach, comment puis-je faire pour isoler les résultats retournés, car si je fais par exemple:
Code :
|
echo $secteurs[0] me renvoie le premier caractère de chaque résultat, par exemple "11" si les résultats étaient "19,13"
Le problème est que je peux avoir des résultats à 1,2 ou 3 caractères.
Je ne sais pas comment faire.
Marsh Posté le 29-11-2006 à 11:32:00
Ben-o a écrit : Ok, donc si j'utilise une boucle foreach, comment puis-je faire pour isoler les résultats retournés, car si je fais par exemple:
|
Code :
|
Marsh Posté le 29-11-2006 à 11:52:54
Merci et désolé pour la création des 2 topics, mais j'ai du mal avec tout ça. Je vais me pencher sur vos réponses et tâcher de m'en sortir.
Marsh Posté le 29-11-2006 à 14:29:31
La où je bloque en fait, pour reprendre l'autre topic http://forum.hardware.fr/hfr/Progr [...] 8758_1.htm, c'est au niveau de la condition IN.
Pour reprendre, mon formulaire de recherche est donc composé de 2 listes déroulantes et d'une liste déroulante à choix multiple.
1 liste déroulante pour le prix
1 liste déroulante pour la catégorie du bien
et 1 liste à choix multiple donc pour les secteurs
Dans mon fichier de traitement, j'ai ceci:
La première partie de ma requête:
Code :
|
La partie pour le prix:
Code :
|
La partie pour la catégorie:
Code :
|
Et enfin la partie que j'avais avant pour les secteurs:
Code :
|
Ensuite j'assemblais tout ça de cette manière:
Code :
|
Ce n'est certainement pas la meilleure méthode, mais ça fonctionne.
Avec une boucle foreach et la condition IN, je ne peux donc plus utiliser le même système pour construire ma requête, et c'est précisément là que je bloque. Je ne vois pas comment faire.
Encore merci pour votre aide.
Marsh Posté le 29-11-2006 à 18:28:37
tu devrais déjà regarder la syntaxe d'une requête SQL qui contient une clause IN (cf doc de MySQl par ex). Ca va déjà t'orienter sur ce que tu dois faire...
Marsh Posté le 29-11-2006 à 18:50:46
J'ai bien trouvé ça sur la doc http://dev.mysql.com/doc/refman/5. [...] ators.html, mais je n'arrive pas à le mettre en place.
J'ai essayé comme ça:
Code :
|
afin de conserver la structure de ma requête.
J'ai donc toujours comme requête finale:
Code :
|
Ca ne marche pas, je n'ai pas d'erreur, mais voilà ce que me renvoi echo $query_final:
Code :
|
Merci d'avance.
Marsh Posté le 30-11-2006 à 09:56:34
ben devant le IN, faudrait tout de même préciser quel champ doit avoir les valeurs précisées dans le IN. Et vire moi tous ces OR et remplaces les par des IN (ou des EXISTS).
http://www.1keydata.com/sql/sqlin.html
Marsh Posté le 29-11-2006 à 10:10:36
Bonjour, je rencontre un problème avec le traitement d'une chaine de caractères.
Je récupère les données d'une liste déroulante à choix multiples de cette manière:
Le résultat obtenu est de cette forme:
19,13,5,24
je voudrais isoler chaque résultat afin de les intégrer dans une requête.
Par exemple:
Je ne sais pas si c'est possible.
Merci pour votre aide.
Message édité par Ben-o le 01-12-2006 à 14:34:08