- Posts: 2696
- Thank you received: 74
boite de recherche ne retourne pas tout
avec
SELECT *
FROM `sacfr_hikashop_product`
WHERE `product_name` LIKE '%noir%'
AND `product_published` =1 je retourne 140 produits
la boite de recherche Joomla sur HikaShop products search plugin activé avec Search Limit = 50 sur product_name m'en retourne 6 !
savez vous pourquoi et comment changer ça ?
merci
Please Log in or Create an account to join the conversation.
Par exemple, il y a cette condition:
a.product_type=\'main\'
pour que la recherche ne retourne que des produits principaux, pas des variantes.
Ou cette condition:
'b.category_id IN (XXX,YYY)
pour que la recherche ne retourne que des produits étant dans des catégories publiées.
Ou encore celle ci:
a.product_quantity!=0
pour que la recherche ne retourne que des produits avec du stock.
Bref, c'est plus complexe qu'il n'y parait.
Vous devriez regarder la requête qui est executée par la recherche en activante le mode débug de joomla.
Ca vous permettra de comparer avec la votre histoire de comprendre pourquoi vous n'avez pas le même nombre de résultats.
Please Log in or Create an account to join the conversation.
votre requete -->
SELECT a.product_id AS id, a.product_name, a.product_created AS created , a.product_description, "2" AS browsernav, b.category_id as category_id
FROM sacfr_hikashop_product AS a
INNER JOIN sacfr_hikashop_product_category AS b
ON a.product_id=b.product_id
WHERE a.product_published=1
AND a.product_type='main'
AND a.product_quantity!=0
AND (a.product_access = 'all' OR a.product_access LIKE '%,2,%')
AND b.category_id IN (50,75,300,68,65,58,57,56,55,53,54,51,52,320,79,243,244,245,246,247,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,265,266,267,268,269,310,330,340,350,360,370,380,390,400,441,442,443,444,445,446,447,448)
AND ((((a.product_name LIKE '%noir%'))) OR (((a.product_description LIKE '%noir%'))))
ORDER BY a.product_modified DESC
LIMIT 0, 50
une requete qui ne tient pas compte des categories et qui en retourne bien 50 -->
SELECT a.product_id AS id, a.product_name, a.product_created AS created , a.product_description, "2" AS browsernav
FROM sacfr_hikashop_product AS a
WHERE a.product_published=1
AND a.product_type='main'
AND a.product_quantity!=0
AND (a.product_access = 'all' OR a.product_access LIKE '%,2,%')
AND (a.product_name LIKE '%noir%' OR a.product_description LIKE '%noir%')
LIMIT 0, 50
il faudrait aussi pouvoir modifier cette liste des IN et lui dire où chercher dans quelles categories en parametres du plugin
AND b.category_id IN (50,75,300,68,65,58,57,56,55,53,54,51,52,320,79,243,244,245,246,247,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,265,266,267,268,269,310,330,340,350,360,370,380,390,400,441,442,443,444,445,446,447,448)
dans mon cas IN (51,52,53,54,55,56,57,87) est suffisant
Please Log in or Create an account to join the conversation.
il faut faire un GROUP BY
SELECT DISTINCT a.product_id AS id, a.product_name, a.product_created AS created , a.product_description, "2" AS browsernav, b.category_id as category_id
FROM sacfr_hikashop_product AS a
LEFT JOIN sacfr_hikashop_product_category AS b
ON a.product_id=b.product_id
WHERE a.product_published=1
AND a.product_type='main'
AND a.product_quantity!=0
AND (a.product_access = 'all' OR a.product_access LIKE '%,2,%')
AND b.category_id IN (50,75,300,68,65,58,57,56,55,53,54,51,52,320,79,243,244,245,246,247,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,265,266,267,268,269,310,330,340,350,360,370,380,390,400,441,442,443,444,445,446,447,448)
AND ((((a.product_name LIKE '%noir%'))) OR (((a.product_description LIKE '%noir%'))))
GROUP BY (a.product_id)
ORDER BY a.product_modified DESC
LIMIT 0, 50
donne le bon resultat
./plugins/search/hikashop_products/hikashop_products.php ligne 169
$query = ' SELECT DISTINCT '.$select.' FROM '.hikashop_table('product') . ' AS a '.$leftjoin.' WHERE '.implode(' AND ',$filters).' GROUP BY (a.product_id) ORDER BY '.$order;
Please Log in or Create an account to join the conversation.
ajout dans le xml
dans le php
Please Log in or Create an account to join the conversation.
Nous allons changer cela de notre coté comme vous proposez.
La modification pour les catégories n'est du coup pas nécessaire non ?
J'ai le sentiment que ce serait une option assez obscure pour les utilisateurs...
Please Log in or Create an account to join the conversation.
au lieu de IN (50,75,300,68,65,58,57,56,55,53,54,51,52,320,79,243,244,245,246,247,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,265,266,267,268,269,310,330,340,350,360,370,380,390,400,441,442,443,444,445,446,447,448)
j'ai IN (51,52,53,54,55,56,57,58)
ça allege la requete de recherche et c'est peu de choses un field name="categories_id" dans le xml
avec une bulle-survol assez explicite et un !attention peut etreJ'ai le sentiment que ce serait une option assez obscure pour les utilisateurs...
Please Log in or Create an account to join the conversation.
Please Log in or Create an account to join the conversation.
nicolas wrote: Je suis d'accord que ca allège la requête mais ca n'est pas problème. Ca ne change rien à la rapidité d'execution et ca rajoute une option qui ne sert à rien pour le commun des mortels (aka les non développeurs). Je préfère plutot rajouter des options sur l'affichage des filtres
ok pas de probleme et je peux toujours bricoler mon propre plugin comme par exemple ajouter un champ ORDER BY dans le XML
pour des options sur les filtres Nicolas c'est une excellente (et urgente) idée :whistle:
impératif je trouve de pouvoir afficher le filtre dans une position sans qu'il s'affiche dans la liste des produits , des identifiants bien séparés, et un bouton pour le champ de type texte qui fait office de recherche
si d'ailleurs cette partie là est faite avant la prochaine version d'Hikashop je suis preneur
Please Log in or Create an account to join the conversation.
Please Log in or Create an account to join the conversation.