Accueil > Forum > > > > Menu Multilingue en base de donnée à 2 ou 3 niveaux
Menu Multilingue en base de donnée à 2 ou 3 niveaux
mercredi 5 décembre 2007 à 12:36:15 |
Menu Multilingue en base de donnée à 2 ou 3 niveaux

Bringdal
|
Bonjour, Je veux créer un menu multilingue en base de donnée à 2 ou 3 niveaux présenté sous cette forme : -Catégorie1 -Catégorie2 -Sous_Catégorie1
-Sous_Catégorie2
-Présentation
-Documentation
-Sous_Catégorie3
-Présentation
-Documentation
-Sous_Catégorie4
-Présentation
-Documentation -Sous_Catégorie5 -Catégorie3 ...etc... J'ai un peu de mal avec le procédé à utiliser... - Faut-il créer une seule table avec un niveau hierarchique pour chaque catégorie et un "parentId" référent ? - Ou une table pour chaque niveau hierarchique en faisant une jointure ? - Comment on gère le multilingue dans ce cas ? ex:
id | libelé | level_id | position-id | parent_id | EN | ES |
1 | Catégorie1 | 1 | 1 | 0 |.......................|.......................| 2 | Catégorie2 | 1 | 2 | 0 |.......................|.......................| 3 | Sous_Catégorie1 | 2 | 1 | 2 |.......................|.......................| 4 | Sous_Catégorie2 | 2 | 2 | 2 |.......................|.......................| 5 | Présentation | 3 | 1 | 4 |.......................|.......................| 6 | Documentation | 3 | 2 | 4 |.......................|.......................| Merci pour vos réponses.
|
|
jeudi 6 décembre 2007 à 04:02:01 |
Re : Menu Multilingue en base de donnée à 2 ou 3 niveaux

yoman64
|
Salut, moi je ferais une table avec: id | Label | ParentID | lang 1 | Categorie1 | 0 | EN
2 | Categorie2 | 0 | EN
3 | Sousmenu1 | 1 | EN
4 | Sousmenu2 | 1 | EN
5 | Soussousmenu1 | 3 | EN
6 | Soussousmenu2 | 3 | EN
7 | Categorie3 | 0 | EN
8 | sousmenu1 | 7 | EN ce qui donnerais un menu du genre: | |-->Catégorie 1 |-->Sousmenu1|-->soussousmenu1 | | |-->Sousousmenu2 | |-->Sousmenu2 | |--> Catégorie2 | |-->Catégorie3 |-->Sousmenu1 | Ou une autre façon de voir: Catégorie 1 --Sous menu 1 ----Sousousmenu 1
----Sousousmenu 2
--Sous menu 2 Catégorie 2 Catégorie 3 --Sousmenu 1 Le parent 0 étant le root. Mais évidement a la main on s'y perderais vite, donc je te recommenderais de faire un petit script d'admin ------------------- Vous cherchez un hebergement Php/MySQL Gratuit et sans publicités ?? Et bien c'est la : www.e3b.org 
|
|
jeudi 6 décembre 2007 à 16:07:37 |
Re : Menu Multilingue en base de donnée à 2 ou 3 niveaux

Bringdal
|
Bonjour,
Ta proposition me va tout à fait mais j'ai encore un petit doute pour le multilingue. Si je pouvais avoir un autre avis sur la question, ca m'aiderais.
Merci
|
|
jeudi 6 décembre 2007 à 23:00:12 |
Re : Menu Multilingue en base de donnée à 2 ou 3 niveaux

neigedhiver
|
Salut,
J'vais donner mon avis...
J'suis d'accord avec yoman64. Stocker l'id de la catégorie parente est probablement la meilleure solution. Cela permet en outre de construire l'arbre du menu avec une seule requête SQL et une seule boucle, sans récursivité.
Pour la traduction, par contre, deux façons de voir les choses.
Soit tu stockes les traductions dans une table séparée, ce qui te permet de traduire ton menu dans autant de langues que tu le veux, soit tu peux, comme tu le pensais, stocker la traduction dans la même table, à la condition que tu n'aies qu'un nombre bien déterminé de langues.
La première façon de faire permet de rajouter des langues à tout moment très facilement.
La seconde est plus facile à mettre en oeuvre, mais est beaucoup moins souple, puisqu'elle nécessite une modification de la structure de la table pour ajouter une langue. Moins souple, mais plus performante si tu n'as que deux langues. Il te suffit de choisir le nom du champ à récupérer en fonction de la langue.
|
|
jeudi 6 décembre 2007 à 23:47:18 |
Re : Menu Multilingue en base de donnée à 2 ou 3 niveaux

yoman64
|
Salut, neigedhivers> Moi je pensais plus a une colonne nomé lang de type ENUM('EN','FR','ES') Je sais pas si tu me suis, pour construire le menu en français suffis de rajouté un WHERE lang='EN' ou lang='FR' selon la langue! Comme ça on récupère seulement les éléments relatif à la langue, comme si on avait plusieurs tables differentes, mais on gagne encore en performance et en simplicité. Donc au lieu d'avoir une table par langue tu peux avoir autant de langues que tu veux dans la meme table. ------------------- Vous cherchez un hebergement Php/MySQL Gratuit et sans publicités ?? Et bien c'est la : www.e3b.org 
|
|
vendredi 7 décembre 2007 à 00:09:36 |
Re : Menu Multilingue en base de donnée à 2 ou 3 niveaux

neigedhiver
|
Réponse acceptée !
Oui, je comprends ton idée. Mais ça veut dire que dans la même table, le menu est dupliqué pour autant de langues existantes. Les données sont redondantes. C'est pas ce que j'appelle de l'optimisation. Un MCD MERISE n'aboutirait sûrement pas à cette méthode de stockage des données, puisqu'on évite, en général, de stocker une information en double.
On a alors les titre dans chaque langue stockés dans une table séparée, avec une jointure. C'est performant une jointure. Peut-être même plus qu'un WHERE (à bencher pour voir).
Avoir une table séparée n'est vraiment justifié que si on projette d'avoir d'autres langues. Si on n'en a que deux (ou trois, peu importe, un nombre fixe quoi, et qui n'est pas voué à évoluer, JAMAIS) on peut stocker les traductions dans la même table. Ca évite le where et la jointure : c'est encore plus performant, puisqu'on choisit tel ou tel champ suivant la langue (une simple variable php).
Une autre solution est de donner aux items du menu des noms qui seront des clés de traduction (qu'on utilise un tableau, une classe ou autre).
Ca rend la traduction indépendante de la base de données, ça permet d'ajouter autant de langues qu'on veut, ça mange moins de ressources SQL...
|
|
vendredi 7 décembre 2007 à 00:23:12 |
Re : Menu Multilingue en base de donnée à 2 ou 3 niveaux

yoman64
|
Ouais tu as raison une jointure j'y avais pas penser. C'est plus propre et peut être plus performant, et surtout, plus facile de s'y retrouvé. Pour ce qui est de la performance , comme tu dis, c'est a bencher! Mais bon si tu n'as que deux langues, utilise simplement deux colonnes. Je pense donc que mon idée modifié avec les conseils de neigedhiver quant'au multilingue serait la solution la plus approprié. Sur ce je laisse neigedhiver, ou d'autres, améliorer l'idée si jamais il y a lieu. ------------------- Vous cherchez un hebergement Php/MySQL Gratuit et sans publicités ?? Et bien c'est la : www.e3b.org 
|
|
vendredi 7 décembre 2007 à 09:58:20 |
Re : Menu Multilingue en base de donnée à 2 ou 3 niveaux

Bringdal
|
Il est vrai que je doutais sur la duplication de donnée. Je vais prendre la solution de "neigedhiver" pour le multilingue. merci pour le reste des infos "yoman". 
|
|
Cette discussion est classée dans : présentation, documentation, multilingue, catégorie1, catégorie2
Répondre à ce message
Sujets en rapport avec ce message
Bonne documentation [ par DJag ]
--->DJagDébutantSalut.Je cherche une bonne documentation pour débuter dans le php. J
Script de gestion de documentation [ par kowak ]
Bonjour, Je suis à la recherche d'un scripts complet ou à compléter sur la gestion de la documentation (thème et arborescence). Quelqu'un peut-il me r
config phpmyadmin [ par ouiskie ]
Salut, J'ai installé phpMyAdmin 2.5.1-rc1 sur WinXP pro et ken j'ouvre une base, g un message en bas ki dit : Erreur Certaines fonctionnalités ayant t
Erreur de configuration PhpMyAdmin [ par apz ]
salut,lorsque j'ouvre phpmyadmin version 2.5.2-rc1, une erreur est signalee dans la configuration :---------------------------------------------------
Un petit questionnaire !!! [ par perig ]
Bonjour !!! Je ne suis pas webmaster de métier mais dans le but d'améliorer la présentation de mes sources, je cherche à savoir comment vous utilisez
souci de présentation [ par nanie64 ]
comment fait-on pour programmer ce qui s'affiche dans la barre en bas à gauche de la barre de progression dans ie?merci de m'aider
Probleme de debutant... [ par RUUUDEBOY ]
Salut...Apres plusieurs jours de galeres je m en remets aux erudits du php...Je tente actuellement de créer une gallerie de présentation pour des fich
site multilingue avec les sessions [ par rastagnol ]
bonjour ! je souhaiterais faire un site multilingue avec les sessions mais je ne sais pas trop comment m'y prendre.mon index est une page ou on peut c
Documentation sur phplib [ par poupoly5 ]
Salut à tousJ'ai un outil à faire qui doit utiliser la librairie phplib. La documentation que j'ai trouvé sur cette librairie est en anglais et j'aime
SITE MULTILINGUE...Je suis à la dérive !!! [ par kenny18 ]
salut,Dans le cadre d'un test, je dois créer un site multilingue. J'ai modifié à ma sauce le script retrouvé sur phpdebutant.org. Le code qui est prop
Livres en rapport
|
Derniers Blogs
ROSLYN FLUENT APIS: ROSLYNHELPER NUGET PACKAGEROSLYN FLUENT APIS: ROSLYNHELPER NUGET PACKAGE par Matthieu MEZIL
Si vous utilisez Roslyn et que vous vous voulez vous simplifier le code du code rewriter, je vous conseille d'installer mon NuGet package RoslynHelper ....(read more) ...
Cliquez pour lire la suite de l'article par Matthieu MEZIL POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|