8791 sujets

Développement web côté serveur, CMS

Bonjour,

j'ai créé un site et un back-office pour gérer le contenu des pages de ce site ; le contenu est en français. Mon client me demande maintenant d'ouvrir la partie anglaise du site. Je dois donc modifier la structure de ma base de données. Une table typique est composée ainsi :


IDpage => TINYINT
IDcategorie => TINYINT
conditions => VARCHAR
titre => VARCHAR
texte => TEXT


Plutôt que de dupliquer la table (une table pour la version française et une autre pour la version anglaise), je pensais plutôt à cette solution :


IDpage => TINYINT
IDcategorie => TINYINT
conditions => VARCHAR
fr_titre => VARCHAR
fr_texte => TEXT
en_titre => VARCHAR
en_texte => TEXT


et faire apparaître les résultats avec qqchose du genre :


<h2><?= $row[LANG.'_titre'] ?></h2>
<p><?= $row[LANG.'_article'] ?></p>


J'ai le sentiment qu'il y a mieux à faire (au niveau de MySQL), mais je ne vois pas trop comment... Est-ce qu'il existe des conventions efficaces pour ce genre de cas ?

Lionel
Modifié par lionel (28 Apr 2008 - 22:52)
Salut lionel,

je ne sais pas s'il existe des conventions mais personnellement j'aurais plutôt fait comme ça (en supposant que IDpage est unique Smiley cligne ) :

matable
IDpage => TINYINT
IDcategorie => TINYINT
conditions => VARCHAR

traductions
IDpage => TINYINT
IDlangue => TINYINT
titre => VARCHAR
texte => TEXT

Ce qui te permet de ne pas avoir à tout modifier le jour où on te demande de rajouter l'allemand et l'espagnol Smiley langue ...

Une requête type en français :
Select conditions, titre, texte from matable m, traductions t 
where m.IDpage = 33 and m.IDpage = t.IDpage and IDlangue = 1

Une requête type en anglais :
Select conditions, titre, texte from matable m, traductions t 
where m.IDpage = 33 and m.IDpage = t.IDpage and IDlangue = 2

A+