Page de recherche

13 posts in this topic

Posted · Report post

Bonjour,

J'ai été confronté à un problème sur la page de recherche.

Quand on fait une recherche sur un terme, il liste tous les produits qui sont en état actif sans se préocuper de l'état de la catégorie dans laquelle ces produits se trouvent.

Dans les faits, nous avons des produits qui sont en état en ligne et pour éviter qu'ils s'affichent, nous avons mis la catégorie en attente.

Jusque là tout parait normal.

Mais si on fait une recherche, ces produits ressortent. J'ai donc modifié le formulaire de recherche pour qu'il n'affiche que les produits en ligne dont la catégorie est également en ligne.

Si cela vous intérresse faite le moi savoir et je vous donnerai toutes les modifications que j'ai effectué.

Cordialement

jcdhl

Share this post


: post
Share on other sites

Posted · Report post

Bizarre j'ai fait la même modif sur premium en debut de semaine :D

A faire également sur la recherche par marque sur premium.

Willy

Share this post


: post
Share on other sites

Posted · Report post

je comprend pas pourquoi mettre la catégorie à off au lieu du produit car si la catégorie est a off et le produit a on ben le produit s'affichera toujours d'apres la onfig actuelle du script

Share this post


: post
Share on other sites

Posted · Report post

je comprend pas pourquoi mettre la catégorie à off au lieu du produit car si la catégorie est a off et le produit a on ben le produit s'affichera toujours d'apres la onfig actuelle du script

C'est juste pour "effacer" xxx produits en même temps.

Ils ne seront plus visibles, mais c'est vrai que ca n'est pas propre.

Willy

Share this post


: post
Share on other sites

Posted · Report post

L'avantage de cette solution, c'est qu'on peut préparer une catégorie avec un grand nombre de produits et quand on veut la mettre en ligne, on n'est pas obligé de passer sur chaque produit pour le mettre en ligne.

On a juste à mettre la catégorie en ligne et hop le tour est joué. :D

jcdhl

Share this post


: post
Share on other sites

Posted · Report post

Bonjour,

Je suis interressé par tes modifications sur la page de recherche, si tu peux me les envoyer en MP ou en public, comme tu veux ;)

Merci beaucoup par avance

Cdlt

Fabrice

www.etroc-mode.fr

Bonjour,

J'ai été confronté à un problème sur la page de recherche.

Quand on fait une recherche sur un terme, il liste tous les produits qui sont en état actif sans se préocuper de l'état de la catégorie dans laquelle ces produits se trouvent.

Dans les faits, nous avons des produits qui sont en état en ligne et pour éviter qu'ils s'affichent, nous avons mis la catégorie en attente.

Jusque là tout parait normal.

Mais si on fait une recherche, ces produits ressortent. J'ai donc modifié le formulaire de recherche pour qu'il n'affiche que les produits en ligne dont la catégorie est également en ligne.

Si cela vous intérresse faite le moi savoir et je vous donnerai toutes les modifications que j'ai effectué.

Cordialement

jcdhl

Share this post


: post
Share on other sites

Posted · Report post

il faut regarder l'etat de la catégorie à laquelle est attachée le produit et donc modifier un p'ti peu la requete dans recherche.php

Share this post


: post
Share on other sites

Posted · Report post

Bonjour,

Je suis interressé par tes modifications sur la page de recherche, si tu peux me les envoyer en MP ou en public, comme tu veux ;)

Merci beaucoup par avance

Cdlt

Fabrice

www.etroc-mode.fr

Bonjour,

Voici l'ancienne requete utilisée pour la recherche :

//$resultat = mysql_query("SELECT id, reference, nom FROM peel_produits WHERE etat = '1' AND nom LIKE '%" . addslashes($_GET['motclef']) . "%' OR descriptif LIKE '%" . addslashes($_GET['motclef']) . "%' LIMIT $start,$nb");

et il faut la remplacer par celle-ci :

$resultat = mysql_query("SELECT peel_produits.id, peel_produits.reference, peel_produits.nom FROM peel_produits LEFT JOIN peel_produits_categories ON peel_produits.id=peel_produits_categories.produit_id

LEFT JOIN peel_categories ON peel_categories.id=peel_produits_categories.categorie_id WHERE peel_produits.etat = 1 AND peel_categories.etat = 1 AND (peel_produits.nom LIKE '%" . addslashes($_GET['motclef']) . "%' OR peel_produits.descriptif LIKE '%" . addslashes($_GET['motclef']) . "%') LIMIT $start,$nb");

Explications :

La catégorie du produit n'est pas directement disponible. Il faut donc passer par l'intermédiaire de 2 jointures succéssives pour trouver l'état de la catégorie du produit.

La requête suivante sert pour faire la pagination:

- Ancienne requete :

//$result=mysql_query("SELECT COUNT(*) FROM peel_produits WHERE nom LIKE '%" . addslashes($_GET['motclef']) . "%' ");

- Nouvelle requete :

$result = mysql_query("SELECT COUNT(*) FROM peel_produits LEFT JOIN peel_produits_categories ON peel_produits.id=peel_produits_categories.produit_id

LEFT JOIN peel_categories ON peel_categories.id=peel_produits_categories.categorie_id WHERE peel_produits.etat = 1 AND peel_categories.etat = 1 AND (peel_produits.nom LIKE '%" . addslashes($_GET['motclef']) . "%' OR peel_produits.descriptif LIKE '%" . addslashes($_GET['motclef']) . "%')");

N'hésite pas à aller voir sur mon site tu verras que le fonctionnement est OK.

exemple de recherche : fais une recherche sur le terme feuille. Alors que j'ai plusieurs sous-catégories pour les feuilles de scrapbooking dans la catégorie "scrapbooking" qui ne sont pas encore en ligne, tous les produits de ces catégories sont en lignes mais ils n'apparaitront pas dans les résultats de la recherche.

Cordialement

Jcdhl

Share this post


: post
Share on other sites

Posted · Report post

Bonsoir,

Merci beaucoup pour ton code, je vais essayer rapidement

Cdlt

Fabrice

Bonjour,

Voici l'ancienne requete utilisée pour la recherche :

//$resultat = mysql_query("SELECT id, reference, nom FROM peel_produits WHERE etat = '1' AND nom LIKE '%" . addslashes($_GET['motclef']) . "%' OR descriptif LIKE '%" . addslashes($_GET['motclef']) . "%' LIMIT $start,$nb");

et il faut la remplacer par celle-ci :

$resultat = mysql_query("SELECT peel_produits.id, peel_produits.reference, peel_produits.nom FROM peel_produits LEFT JOIN peel_produits_categories ON peel_produits.id=peel_produits_categories.produit_id

LEFT JOIN peel_categories ON peel_categories.id=peel_produits_categories.categorie_id WHERE peel_produits.etat = 1 AND peel_categories.etat = 1 AND (peel_produits.nom LIKE '%" . addslashes($_GET['motclef']) . "%' OR peel_produits.descriptif LIKE '%" . addslashes($_GET['motclef']) . "%') LIMIT $start,$nb");

Explications :

La catégorie du produit n'est pas directement disponible. Il faut donc passer par l'intermédiaire de 2 jointures succéssives pour trouver l'état de la catégorie du produit.

La requête suivante sert pour faire la pagination:

- Ancienne requete :

//$result=mysql_query("SELECT COUNT(*) FROM peel_produits WHERE nom LIKE '%" . addslashes($_GET['motclef']) . "%' ");

- Nouvelle requete :

$result = mysql_query("SELECT COUNT(*) FROM peel_produits LEFT JOIN peel_produits_categories ON peel_produits.id=peel_produits_categories.produit_id

LEFT JOIN peel_categories ON peel_categories.id=peel_produits_categories.categorie_id WHERE peel_produits.etat = 1 AND peel_categories.etat = 1 AND (peel_produits.nom LIKE '%" . addslashes($_GET['motclef']) . "%' OR peel_produits.descriptif LIKE '%" . addslashes($_GET['motclef']) . "%')");

N'hésite pas à aller voir sur mon site tu verras que le fonctionnement est OK.

exemple de recherche : fais une recherche sur le terme feuille. Alors que j'ai plusieurs sous-catégories pour les feuilles de scrapbooking dans la catégorie "scrapbooking" qui ne sont pas encore en ligne, tous les produits de ces catégories sont en lignes mais ils n'apparaitront pas dans les résultats de la recherche.

Cordialement

Jcdhl

Share this post


: post
Share on other sites

Posted · Report post

par contre pour les left join, ya quand meme moins bourin à faire n'est ce pas?

Share this post


: post
Share on other sites

Posted · Report post

par contre pour les left join, ya quand meme moins bourin à faire n'est ce pas?

Bonsoir,

Si tu trouves une solution moins lourde, je suis preneur ;)

Pour ma requête, j'ai été contraint de faire 2 left join de suite parce que les infos concernants l'état de la catégorie ne sont pas directement accessibles depuis la table "peel_produits".

Il faut donc joindre les tables "peel_produits" et "peel_produits_categorie" pour savoir dans quelle catégorie est le produit et joindre en même temps les tables "peel_produits_categorie" et "peel_categorie" pour vérifier que l'état de la catégorie est "en ligne".

Cordialement

Jcdhl

Share this post


: post
Share on other sites

Posted · Report post

Hello,

J'ai eu enfin le temps de m'y remettre, ta modification marche super bien !! De plus pas de ralentissement même avec une grosse base ! ;)

Sinon, j'ai vu sur ton site que tu as fait des modifications pour prendre en compte le poids avec les frais de ports associés, peut-tu m'en dire un peu plus ?

Comment, tu t'y es pris ?

Encore merci pour ton code ;)

Cdlt

Fabrice

www.etroc-mode.fr

Bonsoir,

Merci beaucoup pour ton code, je vais essayer rapidement

Cdlt

Fabrice

Share this post


: post
Share on other sites

Posted · Report post

Sinon, j'ai vu sur ton site que tu as fait des modifications pour prendre en compte le poids avec les frais de ports associés, peut-tu m'en dire un peu plus ?

Comment, tu t'y es pris ?

Bonjour,

un peu de recherche sur le forum vous aidera.

Willy

Share this post


: post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now

Twitter Advisto ecommerce

Facebook PEEL Shopping