Page de recherche

13 messages dans ce sujet

Posté(e) · Signaler ce message

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !


Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.


Connectez-vous maintenant

Twitter Advisto ecommerce

Facebook PEEL Shopping