navigation entre catégories

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics

yann214
WRInaute impliqué
WRInaute impliqué
 
Messages: 366
Inscription: Jeu Nov 17, 2005 8:59

navigation entre catégories

Message le Lun Avr 10, 2006 9:23

Voilà

imaginons une table dans laquelle on stocke les différentes catégories.
Chaque catégorie a un nom, un id et l'id de sa catégorie parente.
Comment peut-on faire pour afficher en haute de la page en cours une série de liens présentant toutes les catégories parentes de la catégorie affichée, sans avoir à faire une requete pour chaque recherche de parent :

Automobile >> Renault >> Twingo

Faut-il adapter la table (ajout d'un autre champ) ou y a-t-il una autre astuce ?

Merci !!!!


mamat-
WRInaute impliqué
WRInaute impliqué
 
Messages: 360
Inscription: Lun Oct 18, 2004 14:12

Message le Lun Avr 10, 2006 10:08

Il faut que tu fasse une requete avec INNER JOIN, c'est à dire une requete sur deux tables ou tu fais correspondre un champ id du parent avec le champ id-parent de la table fille, ainsi tu remonte les infos autant de fois que nécessaire en fait pour bien faire il faut créer des clés sur les champs d'id qui auront une relation 1 à plusieurs, suis-je clair ? (http://www.w3schools.com/sql/sql_join.asp [En])

yann214
WRInaute impliqué
WRInaute impliqué
 
Messages: 366
Inscription: Jeu Nov 17, 2005 8:59

Message le Lun Avr 10, 2006 10:37

si je comprends bien il faut faire 2 tables :

CATEGORIE :

ID_CAT
NOM
...

LIENS_CATEGORIE :

ID_CAT
ID_CAT_FILLE

et ensuite une jointure entre ces tables.

Mais comme ça je vais devoir faire une requete à chaque fois que je veux remonter d'un niveau de catégorie non ?


mamat-
WRInaute impliqué
WRInaute impliqué
 
Messages: 360
Inscription: Lun Oct 18, 2004 14:12

Message le Lun Avr 10, 2006 10:55

Oui mais tu peux faire les requetes en "cascades" donc pour ton fil d'ariane faire simplement une requete "générale" avec autant de jointures que nécessaire... à valider tout de même pour pas stresser le serveur

yann214
WRInaute impliqué
WRInaute impliqué
 
Messages: 366
Inscription: Jeu Nov 17, 2005 8:59

Message le Lun Avr 10, 2006 12:10

Merci pour ces eclaircissements mamat-!

... et en admettant que j'ai jusqu'à une dizaine de niveaux de catégories, vaut-il mieux que je lance 10 fois une requete qui va me chercher la catégorie parente pour remonter jusqu'à la racine ou 1 requête qui va alors faire 10 jointures.... ?

spidetra
WRInaute accro
WRInaute accro
 
Messages: 1500
Inscription: Lun Juil 07, 2003 13:06

Message le Lun Avr 10, 2006 12:17

yann214 a écrit:Merci pour ces eclaircissements mamat-!

... et en admettant que j'ai jusqu'à une dizaine de niveaux de catégories, vaut-il mieux que je lance 10 fois une requete qui va me chercher la catégorie parente pour remonter jusqu'à la racine ou 1 requête qui va alors faire 10 jointures.... ?


Passe par une fonction récursive. Ne vas pas faire 10 jointures.
Met ton fil d'ariane en cache, histoire de ne pas surcharger ton serveur.


mamat-
WRInaute impliqué
WRInaute impliqué
 
Messages: 360
Inscription: Lun Oct 18, 2004 14:12

Message le Lun Avr 10, 2006 12:24

Oui fonction récursive, mais si ta version de SQL te le permet, je ne sais plus la quelle il faut..

spidetra
WRInaute accro
WRInaute accro
 
Messages: 1500
Inscription: Lun Juil 07, 2003 13:06

Message le Lun Avr 10, 2006 12:30

mamat- a écrit:Oui fonction récursive, mais si ta version de SQL te le permet, je ne sais plus la quelle il faut..


Je ne parlais pas en SQL, mais dans le langage hôte.
Il n'existe pas de version récursive SQL ( dans le standard SQL ).

La proposition "RECURSIVE UNION" a été abandonné en 1996.

Certains outils propriétaire ont implémenté des fonctionalités supplémentaires :
ORACLE : START WITH et CONNECT BY PRIOR
DB2 : WITH

Il me semble que la dernière version de MS-SQL Server a aussi implémenté des fonctions récursives. Il faudrait que je vérifie.

Mais encore une fois, toutes ces fonctions sont propriétaires et ne sont pas dans la norme SQL

spidetra
WRInaute accro
WRInaute accro
 
Messages: 1500
Inscription: Lun Juil 07, 2003 13:06

Message le Lun Avr 10, 2006 12:38

Aprés vérification :
le T-SQL de Ms-SQL Server 2005 a bien intégré des fonctions récursives avec gestion du niveau.

yann214
WRInaute impliqué
WRInaute impliqué
 
Messages: 366
Inscription: Jeu Nov 17, 2005 8:59

Message le Lun Avr 10, 2006 12:58

le système de fonction récursive me plait mieux effectivement.

Peux-tu me donner plus de détails sur la manière de faire et de gérer le cache.

Admettons qu'un utilisateur arrive via un moteur de recherche sur une page quelconque de l'annuaire, il faut que je construise le fil d'ariane en en-tête de page.
Je dois donc lancer ma fonction récursive qui va lancer une requête pour chaque niveau de catégorie jusqu'à arriver à la racine.

Commnet intégrer un cache à tout ça pour ne pas surcharger le serveur ?

Merci encore pour toutes ces infos !!!

spidetra
WRInaute accro
WRInaute accro
 
Messages: 1500
Inscription: Lun Juil 07, 2003 13:06

Message le Lun Avr 10, 2006 13:03

yann214 a écrit:Commnet intégrer un cache à tout ça pour ne pas surcharger le serveur ?

Merci encore pour toutes ces infos !!!


Tu trouveras plein de post sur le forum
http://www.webrankinfo.com/forums/viewtopic_46703.htm
http://www.webrankinfo.com/forums/viewtopic_48137.htm
http://www.webrankinfo.com/forums/viewtopic_47942.htm

et surement plein d'autres

yann214
WRInaute impliqué
WRInaute impliqué
 
Messages: 366
Inscription: Jeu Nov 17, 2005 8:59

Message le Lun Avr 10, 2006 13:37

merci Spidetra,

Je vais jeter un oeil à tout ça.

Après une première lecture, j'en déduis que tu me conseilles d'utiliser la class PEAR pour placer en cache un bloc qui contiendrait ma zone html "fil d'ariane" ?

Si le cache du bloc n'existe pas : je lance ma procedure recursive.
S'il existe, j'affiche le cache.

Je commence à mieux comprendre =)

Merci !!!

spidetra
WRInaute accro
WRInaute accro
 
Messages: 1500
Inscription: Lun Juil 07, 2003 13:06

Message le Lun Avr 10, 2006 13:39

Tu as compris le principe.
Ensuite tu utilises PEAR ou un autre système de cache PHP existant.
PEAR a l'avantage d'être simple.

yann214
WRInaute impliqué
WRInaute impliqué
 
Messages: 366
Inscription: Jeu Nov 17, 2005 8:59

Message le Mar Avr 11, 2006 8:09

Merci !
je vais mettre tout ça en pratique !

Dois-je insatller obligatoirement Pear pour pouvoir utiliser Cache Lite ?


mamat-
WRInaute impliqué
WRInaute impliqué
 
Messages: 360
Inscription: Lun Oct 18, 2004 14:12

Message le Mar Avr 11, 2006 8:49

Oui il faut que pear soit présent, c'est lui qui "implémente" cache lite.

navigation entre catégories

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 :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités