8791 sujets

Développement web côté serveur, CMS

Bonjour tous le monde,
Je suis présentement entrain de faire un site web bilingue. Je voudrais pouvoir mettre tous mon texte dans une base de donnée pour pouvoir ajouter une langue si je le veux par la suite. Mon problème est surtout dans la structure de la base de donnée. J'ai pensé de faire une première table appelé PAGES qui contiendrais :

id_page
nom


ensuite, j'airais une autre table appelé TEXT qui contiendrais :

id
id_page
nom_champ
langue
texte


Enfin, je ferais une jointure entre ces deux tables avec le id_page. J'ai pensé a cette structure parce que en faite aucune page à le même nombre de champ et faire une table avec des champs vide j'essaye d'éviter. Connaissez-vous une manière plus efficace, je suis près à tous changer si ça fonctionne.

Comment faire une requête avec cette structure ?

SELECT t.texte , t.nom_champ
FROM text t
INNER JOIN pages p
ON p.id_page = t.id_page
WHERE t.langue = 'fr' 
AND p.id_page = 1

et puis encore là, si jamais je veux mettre des numéro, il va me falloir une table NOMBRE

id
id_page
nom_champ
langue
nombre


Merci de bien vouloir me démêler Smiley sweatdrop

Alexandcote
Modifié par alexandcote (19 Dec 2011 - 04:47)
Bonjour...

Dans la logique multilingue j'utilise depuis longtemps un seul système efficace en bdd

table "Labels"

id, id_label, text_label, id_langue

Une table "contenus"

id,id_contenu, text_contenu, id_langue

Voilà 2 tables bien séparées.. label pour tout ce qui est court genre Votre email, votre mot de passe.. Contenu pour tout les textes longs...

Evolutif puisqu'il y a un id langue

le id_label ou id_contenu doit être identique pour chaque langue...

exemple rapide de remplissage de label

1 1 Bonjour 1
2 1 Hello 2
3 1 Bonjourno 3

ensuite peu importe où.. dans le texte tu fais une requète pour afficher l'id_label 1
dans la bdd tu assigne un id_label

et bien sur pareil pour contenu...

seul truc, il faut bien suivre les id_label et id_contenu...
Bonjour à tous et merci pour vos réponse rapide Smiley smile
Mon texte sera modifiable via une section administration. Je veux pourvoir modifier le texte facilement sois moi on mon collège non-programmeur. j'aime bien l'idée proposé par pchlj. Mais va t'il falloir faire un requête pour chaque label de la page et chaque texte ?

SELECT l.text_label
FROM labels l
WHERE id_langue = $lang 
AND id_label = 1


Merci d'avance Smiley smile
@alex

Oui malheureusement il faut une requète..

moi j'ai une fonction... qui s'en occupe... et ça ne ralenti pas le site

c'est coté serveur pendant la création de la page par php..

sinon tu peux aussi fabriquer un array en entête de page avec tout tes labels de ta page...
Ok,
pour se côté c'est moins pratique, lorsque je vais vouloir modifier ma page ou le texte de ma page, ma requête UPDATE va me demander aussi de faire une requête pour chaque. Personne ne connais aucune autre façon plus simple de faire ceci? la manière la plus simple serais de le mettre dans un fichier : vars.fr.php. Mais je dois absolument pouvoir modifier le texte n'importe quand par n'importe qui.

Merci pour l'idée pchlj.

Quelqu'un a une autre idée ? Smiley biggrin
Bonjour,
Pour mes sites j'ais les deux méthodes
1) un php fr_xxxx et un en_xxx
2) un include conditionnel (ou BDD) selon langue

En fait l'ossature est modifiable que par moi, mes amis (clients) on pour
modifier le corp de la page (compris img) un éditeur ZCODE comme sur tout forum.
Modifié par Christele (20 Dec 2011 - 09:16)