PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 16-02-2014 11:02:43

Jiinn
Membre
Inscription : 06-01-2010
Messages : 22

MYSQL Recherche dans la bdd, mauvais résultat renvoyé

Bonjour,

J'utilise pour pour un projet, un système de catégorie, qui marche ainsi pour ce qui est de la bdd : 1,1_1,1_1_2,1_1_2_1

Donc a chaque fois que _ apparaît il s'agit d'un enfant de catégorie. (1 vehicule > 1_1 voiture > 1_1_1 > marque .. ect... ).

Mon soucis actuelle c'est que je recherche par exemple : 1_1_2_1_1 avec :

AND category LIKE '%1_1_2_1_1%'

Le retour fonctionne mais j'ai des résultat supplémentaire et en voici la cause :

OK 1,1_1,1_1_1,1_1_2,1_1_1_24,1_1_1_24_3,1_1_2_1,1_1_2_2,1_1_2_3,1_1_2_4,1_1_2_1_1,1_1_2_2_1,1_1_2_3_1,1_1_2_4_1

Ok par erreur > 1,1_1,1_1_1,1_1_1_63,1_1_2,1_1_2_1,1_1_2_2,1_1_2_3

Ok par erreur > 1,1_1,1_1_1,1_1_1_24,1_1_2,1_1_2_20,1_1_2_21,1_1_2_22,1_1_2_23,1_1_2_24,1_1_2_25,1_1_2_26,1_1_2_27,1_1_2_28,1_1_2_29,1_1_2_30,1_1_2_31,1_1_2_32,1_1_2_33,1_1_2_34,1_1_2_35

Donc je supose que la virgule remplace _ le tiret bas dans ce cas, et je ne connais pas de solution.

( mise a part celle d'ajouter dans ma recherche une virgule a la fin , mais cela ne m'arrange pas, car je trouve incohérent le fait que cela ne fonctionne pas. )

Merci de vos conseilles !

Dernière modification par Jiinn (16-02-2014 11:06:17)

Hors ligne

#2 17-02-2014 10:07:21

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : MYSQL Recherche dans la bdd, mauvais résultat renvoyé

Saluton,
Si tu veux qu'on puisse essayer de te proposer une piste il faudrait nous fournir un peu plus d'éléments :
Un résultat du SHOW CREATE TABLE sur la table incriminée.
La requête SELECT intégrale et non pas juste un petit morceau de la clause WHERE.
Quant à ta supposition de remplacement du '_' par une virgule ',' elle m'apparaît, à tout le moins, peu vraisemblable.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#3 23-02-2014 08:52:33

Jiinn
Membre
Inscription : 06-01-2010
Messages : 22

Re : MYSQL Recherche dans la bdd, mauvais résultat renvoyé

Bonjour, merci pour cette réponse, désolé pour ma réponse tardive ( travail prenant ).

Voici le résultat du SHOw CREATE TABLE :

CREATE TABLE `icentrale_announce` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `name` text NOT NULL,
 `id_user` text,
 `category` text NOT NULL,
 `announce` text NOT NULL,
 `view` int(11) DEFAULT NULL,
 `price` int(11) DEFAULT NULL,
 `add_option_1` text NOT NULL,
 `add_option_2` text NOT NULL,
 `trade` int(11) DEFAULT NULL,
 `trade_send` int(11) DEFAULT NULL,
 `date_post` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
 `date_out` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
 `img_first` int(11) DEFAULT NULL,
 `cp` int(5) NOT NULL,
 KEY `id` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1

voici la requête entière, même si je ne pense pas qu'elle soit en cause et qu'elle puisse vous aider :

$sql = "SELECT * FROM icentrale_announce WHERE (name LIKE '%$searchText%' OR announce LIKE '%$searchText%' OR add_option_1 LIKE '%$searchText%' OR add_option_2 LIKE '%$searchText%' $printSearchCatSql) $searchSelect $localitySql $optionStatusCheckedSql ORDER BY $rangeValue1Sql $rangeValue2Sql ";

Donc $optionStatusCheckedSql contient la clause en question.
Aucun intérêt que je vous inonde de code, la contenance est bien celle indiqué dans le post n°1.

Je viens de penser aux jeux de caractères, je vais explorer cette possibilité.

merci

Dernière modification par Jiinn (23-02-2014 08:56:34)

Hors ligne

#4 23-02-2014 11:08:43

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : MYSQL Recherche dans la bdd, mauvais résultat renvoyé

Saluton,

Quand je vois ce genre de requête (avec * en outre ) j'ai tendance à dégainer mon KISS.

Comment veux-tu maîtriser une telle usine à gaz, où les AND et les OR se cotoient allègrement, avec l'insidieuse incidence des précédences qu'on connaît ?

Et je ne parle même pas de la lisibilité du code. Bonjour la galère pour qui devra maintenir ça un jour !


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#5 24-02-2014 11:29:33

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : MYSQL Recherche dans la bdd, mauvais résultat renvoyé

Bonjour,

Prévoyez aussi des ressources supplémentaires à votre serveur, car dès que vous aurez un certain nombre d'enregistrements avec une table comme celle-là avec une requête qui fait du full scan à tire larigot vous risquez de mettre votre serveur à genoux.
Quand à votre système de codification de catégories, que vous en fassiez un ainsi pour passer les valeurs à une procédure stockée, je comprendrais, mais dans une requête c'est tout sauf pertinent et performant.

++


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#6 24-02-2014 14:40:20

Jiinn
Membre
Inscription : 06-01-2010
Messages : 22

Re : MYSQL Recherche dans la bdd, mauvais résultat renvoyé

Bonjour,

Merci pour les conseilles, pour la codification, vue que le serveur doit pouvoir les créé je n'ai pas trouvé d'autre solution, a vrai dire celle ci me va pour le moment a défaut de mieu.

Pour les ressources supplémentaires, qu'entendez vos par la ?

Effectivement j'utilise *,  je vais modifier ça selon les utilisations.

Le code en lui même est commenté.

Voilà, sinon a part l'évaluation de mon code, vous ne semblez pas avoir de solution ou de début de piste.

dans tous les cas quand j'aurais le temps de régler ça, je vous tiendrais au courant.

Hors ligne

#7 24-02-2014 17:17:13

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : MYSQL Recherche dans la bdd, mauvais résultat renvoyé

Voilà, sinon a part l'évaluation de mon code, vous ne semblez pas avoir de solution ou de début de piste.

Requête SQL : .........   $printSearchCatSql) $searchSelect $localitySql $optionStatusCheckedSql ......

Bien voyez-vous sur ce forum, s'il y a plein de gens de bonne volonté, il n'y a pas de devins. Or votre requête en l'état ne peut en dire plus sur l'origine de votre problème car nous ne savons pas ce que vous passez dans ces variables pour construire votre requête, d'autant plus que la partie concernant les catégories est sensée se trouver dans $printSearchCatSql. Peut être comprendriez-vous ce que vous avez écrit, vous vous en seriez rendu compte, et peut être que, le cas échéant, si vous estimez que le code que vous nous avez fourni est suffisant pour comprendre l'origine du problème, peut être justement que votre problème réside là...

A + donc quand vous aurez le temps.


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#8 24-02-2014 19:12:41

Jiinn
Membre
Inscription : 06-01-2010
Messages : 22

Re : MYSQL Recherche dans la bdd, mauvais résultat renvoyé

Bon vous étes sûrement super calé dans le domaine, mais il ne faut pas non plus sous-estimé autrui.

L'information était suffisante, a partir du moment ou j'ai testé la requête, en virant les autres clauses et en insérant uniquement celle-ci, contrôlé évidement puis sans variable afin de tester une éventuelle erreur.

Donc a partir du moment ou tous ce qui vous intéressent est de juger le code de votre prochain afin de justifier vos qualité personnelle, je ne pense pas que cela fera avancer le chmilblic.

Trouvons une solution, puis ameliorons nos compétences et nos informations respective dans le domaine, ou boudons dans notre coin.

Bisous

Hors ligne

#9 24-02-2014 20:00:50

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : MYSQL Recherche dans la bdd, mauvais résultat renvoyé

Je crois que la messe est dite.

Ce forum n'a pas pour vocation de soigner la paranoïa ou l'autisme.

Laissons donc Jiinn avec ses fantasmes et ses suppositions quant au comportement du SGBD.

Et comme il n'est de pire sourd que celui qui ne veut pas entendre, inutile de nous égosiller davantage du clavier.

Sa dernière incantation lui soit salutaire et, comme le dit le toutologue : "le ciel vous tienne en joie !"


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#10 25-02-2014 02:41:31

Jiinn
Membre
Inscription : 06-01-2010
Messages : 22

Re : MYSQL Recherche dans la bdd, mauvais résultat renvoyé

Vous m'avez ouvert les yeux, je suis bouche bée.

Merci pour cette aide précieuse.

Hors ligne

#11 25-02-2014 11:28:40

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : MYSQL Recherche dans la bdd, mauvais résultat renvoyé

Bonjour,

Entre nous, la réponse de MK, vous l'avez bien mérité.
Ensuite si vous êtes très compétent et certain de vos dires et conclusions, trouvez la réponse par vous-même et ne demandez rien à personne. Par contre, si vous posez une question car vous avez besoin d'aide, il serait avisé et pertinent de rester humble et d'en accepter la réponse ou pour le moins, nous laisser le bénéfice du doute et voir ce que donne le résultat de nos réponses. Sinon lors d'une journée où vous vous sentez disposé, je vous laisse consulter la définition d'un effet de bord en programmation sur Wikipédia, ainsi que la notion d'index "sargeable".
J'avais d'autres choses à dire, mais désolé, je n'ai plus envie, la conclusion de MK me plaisant assez, je dois bien l'avouer.

Bonne continuation.


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#12 25-02-2014 13:34:56

Jiinn
Membre
Inscription : 06-01-2010
Messages : 22

Re : MYSQL Recherche dans la bdd, mauvais résultat renvoyé

En meme tant si j'avais été compétant je ne serais pas la.

De toute façon ce n'est pas grave en soi, et donc je vous remercie de votre non réponse.

Sinon merci pour la petite information qui va bien, c'est une super information je trouve.

Cdlt

Hors ligne

Pied de page des forums