Afficher les produits des sous catégories
12 messages • Page 1 sur 1
Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics
Afficher les produits des sous catégories
Bonjour,
j'ai des catégories qui ne contiennent que des sous-categories (pas de produits).
Lorquon est dans une catégorie mère, je souhaiterais afficher 10 produits aléatoirs issus des sous catégories.
C'est un casse tête pour moi, pouvez vous me guider ?
J'ai une table produits (avec id_produit) une table produit (avec id_cat, id_parent) et une table categorie_produits (avec id_produit, id_cat)
merce d'avance.
j'ai des catégories qui ne contiennent que des sous-categories (pas de produits).
Lorquon est dans une catégorie mère, je souhaiterais afficher 10 produits aléatoirs issus des sous catégories.
C'est un casse tête pour moi, pouvez vous me guider ?
J'ai une table produits (avec id_produit) une table produit (avec id_cat, id_parent) et une table categorie_produits (avec id_produit, id_cat)
merce d'avance.
salut ..
Ca sent la requete récursive .. et la t'es pas couché surtout si il faut que je t'en explique le principe
en gros l'idée de la requete c'est ca :
SELECT p.*
FROM produits P
LEFT JOIN categories_produits CP ON P.id_produit = CP.id_produit
LEFT JOIN categories C ON C.id_categorie = CP.id_categorie
WHERE C.id_parent = 5
ORDER BY RAND()
LIMIT 10
La tu aura 10 produits aléatoires parmi les catégories directement en dessôus de ta catégorie mère..
Si tu veux aler en profondeur dans les sous-catégories, ca va etre plus chaud et j'ai meme pas le courage de t'expliquer... tapes récursivité dans google :p
Ca sent la requete récursive .. et la t'es pas couché surtout si il faut que je t'en explique le principe
en gros l'idée de la requete c'est ca :
SELECT p.*
FROM produits P
LEFT JOIN categories_produits CP ON P.id_produit = CP.id_produit
LEFT JOIN categories C ON C.id_categorie = CP.id_categorie
WHERE C.id_parent = 5
ORDER BY RAND()
LIMIT 10
La tu aura 10 produits aléatoires parmi les catégories directement en dessôus de ta catégorie mère..
Si tu veux aler en profondeur dans les sous-catégories, ca va etre plus chaud et j'ai meme pas le courage de t'expliquer... tapes récursivité dans google :p
J'ai une solution propre, mais qui necessite que tu modifie un peut la structure de ta base : il faut utiliser la "Représentation intervallaire des arborescense "comme expliqué ici au chapitre 2 : http://sql.developpez.com/arborescence/ cela permet de garder des bonnes perfs au niveau du traitement de la base de données
Bonjour
Sauf à avoir un nombre énorme de catégories et sous-catégories, en matière de performance il "suffit" de mettre en place un cache.
J'utilise ce système dans une vieille galerie photo avec catégories imbriquées (arborescence) que je suis d'ailleurs sur le point de refaire de A à Z (c'était l'un de mes premiers sites PHP
) et ça marche très bien, sans gros impact au niveau du serveur MySQL.
Si tes catégories ne changent pas toutes les 10mn il suffit de régler le cache sur par ex. 7 jours, et les produits affichés au hasard toutes les minutes (tout dépend de ton trafic, évidemment), et de vider partiellement le cache à chaque ajout/suppression de produit ou catégorie, qui sera reconstruit automatiquement dès la première consultation.
Ainsi les accès BDD seront fortement minimisés et les perfs s'en suivront. Mais bon je parle certainement en l'air car je ne conçois pas un site web faisant des appels BDD sans cache
Sauf à avoir un nombre énorme de catégories et sous-catégories, en matière de performance il "suffit" de mettre en place un cache.
J'utilise ce système dans une vieille galerie photo avec catégories imbriquées (arborescence) que je suis d'ailleurs sur le point de refaire de A à Z (c'était l'un de mes premiers sites PHP
Si tes catégories ne changent pas toutes les 10mn il suffit de régler le cache sur par ex. 7 jours, et les produits affichés au hasard toutes les minutes (tout dépend de ton trafic, évidemment), et de vider partiellement le cache à chaque ajout/suppression de produit ou catégorie, qui sera reconstruit automatiquement dès la première consultation.
Ainsi les accès BDD seront fortement minimisés et les perfs s'en suivront. Mais bon je parle certainement en l'air car je ne conçois pas un site web faisant des appels BDD sans cache
Et le cache justifie de coder une base comme un porc???
Et si après il veut gérer le fait qu'il ne faille que présenter que les produits dispo, entre 2 demandes clients cela peut changer (le client juste avant a déjà pris le dernier article)
Et tu ne semble penser qu'a un usage web de la bdd, mais si plus tard, il decide de faire une appli client lourd pour attaquer sa base, les optimisation de base et de requetes sont très importantes, il faudra alors qu'il revoie toute sa base, si il la conçoit proprement dès le départ, c'est toujours ça de gagné pour plus tard.
Il ne faut jamais negliger les optimisations de bases de données, j'ai eu l'expérience dernièrement d'un client avec une base non optimisée, et dont les traitements étaient d'une lenteur, l'usage d'un cache n'aurait pas plus aider (2mn de traitement de la requete) après optimisation, c'était quasi instantanné
Et si après il veut gérer le fait qu'il ne faille que présenter que les produits dispo, entre 2 demandes clients cela peut changer (le client juste avant a déjà pris le dernier article)
Et tu ne semble penser qu'a un usage web de la bdd, mais si plus tard, il decide de faire une appli client lourd pour attaquer sa base, les optimisation de base et de requetes sont très importantes, il faudra alors qu'il revoie toute sa base, si il la conçoit proprement dès le départ, c'est toujours ça de gagné pour plus tard.
Il ne faut jamais negliger les optimisations de bases de données, j'ai eu l'expérience dernièrement d'un client avec une base non optimisée, et dont les traitements étaient d'une lenteur, l'usage d'un cache n'aurait pas plus aider (2mn de traitement de la requete) après optimisation, c'était quasi instantanné
Je n'ai jamais écrit ou dit cela. Je gère des bases de données toute la journée (je suis spécialisé en analyse décisionnelle en technos Microsoft...) donc je sais ce qu'est une base optimisée, étant accessoirement architecte du système d'information de mon entreprise (centre de gestion agréé, 180 salariés, 3000 clients...)
Je m'inscrivais dans une optique "web", voilà tout
Maintenant, de là à dire qu'il faut coder comme un porc, je ne crois pas. C'est juste une solution pour optimiser les performances côté client et limiter les accès inutiles au serveur
Je m'inscrivais dans une optique "web", voilà tout
Maintenant, de là à dire qu'il faut coder comme un porc, je ne crois pas. C'est juste une solution pour optimiser les performances côté client et limiter les accès inutiles au serveur
Même dans une optique web, la gestion du cache n'est pas toujours pertinente, si dans sa requête il doit tenir compte de la gestion des stocks, il ne peut plus utiliser la technique de cache, c'est dans ce genre d'optique qu'il faut penser. C'est vrai que la sur le coup, cela va optimiser, mais plus tard?
Ah ben tout dépend ce qu'il doit afficher, et où.
Après c'est de la mamaille de gestionnaire (obsolescence des produits, réappros, etc.) ; d'ailleurs le cache peut ne concerner que certaines parties de pages, et en jouant sur les CSS on peut utiliser un même cache pour plusieurs types d'affichages
Après c'est de la mamaille de gestionnaire (obsolescence des produits, réappros, etc.) ; d'ailleurs le cache peut ne concerner que certaines parties de pages, et en jouant sur les CSS on peut utiliser un même cache pour plusieurs types d'affichages
cache ou non-cache, perf ou non-perf la quiestion etait de toute facon ailleurs :p : soitt il fait du recursif pour tenir compte de la profondeur des categories et rappatrier 10 articles parmi toutes les categories enfants..
soit il modifie sa BDD pour connaitre a tout moment TOUTES les categories ancetres de chaques catégorie (ce qui ne serait pas bete.. niveau perf: p)
soit il modifie sa BDD pour connaitre a tout moment TOUTES les categories ancetres de chaques catégorie (ce qui ne serait pas bete.. niveau perf: p)
Fonction recursive, si pas des milliers de catégories, en quelques lignes c'est ok
- Code: Tout sélectionner
function rand_cat($id)
{
$sql="SELECT id FROM categorie WHERE parent_cat='$id' order by rand()";
$rt=mysql_query($sql);
while ($data= mysql_fetch_array($rt))
{
$sql1="SELECT * FROM produit where cat='$data[id]' order by rand() limit 0,1"; // 1 produit par sous cat
$rt1=mysql_query($sql1);
$dataprod= mysql_fetch_array($rt1);
rand_cat($data['id']); // recursivite
}
}
//depart mentionne parent_cat
rand_cat($depart);
12 messages • Page 1 sur 1
Formation recommandée sur ce thème :
Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- WebRankInfo sélectionné aux Abondance d'or
- Des RSS rémunérés ça existe !
- Annuaire de sites sur Google
- Classement Interbrand 2006 : la percée de Google
- Référencement Yahoo France (yahoo.fr)
- Parts de marché des produits et services Google
- L'annuaire de Voila.fr ferme ses portes
- L'annuaire DMOZ (Open Directory) : www.dmoz.org
- Google rachète Trendalyser de gapminder.org
- Liste complète des produits et services de Google
Consultez la description détaillée des produits ou services de Google suivants : Google Local Business Ads
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités







le forum