Ha allemaal,

Ik ben bezig een site te vernieuwen en ik wil er graag een cms achter hangen zodat de site door meerdere mensen onderhouden kan worden.

Alle tekst moet dus uit de database gehaald worden. Geen probleem. Alleen nu moet alle content in minimaal 2 talen gepubliceerd worden.

Nu heb ik zitten denken hoe ik de tabellen het beste kan indelen alleen ik ben er nog niet over uit. Qua overzicht is dit het makkelijkst:

id|nltitel|nlcontent|detitel|decontent|entitel|encontent

maar is het toch verstandig om te kiezen voor iets anders? en zoja, dat dan precies?

Ik ben benieuwd naar jullie suggesties
ik zou de talen als ik jou was in apparte tabbelen houden...
dus een tabel nl, een tabel de en bijvoorbeeld een tabel en?

Dan ook nog een speciale tabel om de boel te linken? menu-item en bijbehorend taal id voor de betreffende content?
Wat het gemakkelijkst te doen is, is voor elke taal een andere tabel aanmaken, waarom -> Stel dat je ooit Frans als taal toe wilt voegen, dat is niet gemakkelijk bij de huidige opzet.

Stel je hebt een pagina nieuws.php, die uit de tabel nieuws wat op zou halen, de gebruiker heeft als taal Engels (en) ingesteld, de taalsessie variabele heb je opgeslagen in $taal. (bevat dus en)

<?
$table=$taal.'nieuws';
$query = "SELECT * from $table";
?>

Qua onderhoud is het gemakkelijker, je houd nog veel meer overzicht, omdat niet alle talen bij elkaar in die 1e tabel staan.

(wanneer je wilt gaan bewerken, kan je ook voor elke taal een tekstvak maken, als je de talen in een array hebt staan:
<?php
$talen=array("nl","en","de");
$editpage=$_GET['edit'];//bevat de naam van de te bewerken tabel
foreach($talen as $tekstlang){
$createlang=$tekstlang.$editpage;
echo '<textarea name="'.$createlang.'"></textarea>';
}
?>

Snap je het?

[edit]typo[/edit]

Ik snap het. Alleen dit niet:


(wanneer je wilt gaan bewerken, kan je ook voor elke taal een tekstvak maken, als je de talen in een array hebt staan:

<?php
$talen=array("nl","en","de");
$editpage='$_GET['edit'];//bevat de naam van de te bewerken tabel
foreach($talen as $tekstlang){
$createlang=$tekstlang.$editpage;
echo '<textarea name="'.$createlang.'"></textarea>';
}
?>


Snap je het?


En: Ik moet er dan dus wel op een een of andere manier voor zorgen dat altijd de juiste tekst wordt opgehaald wanneer een menuitem gekozen wordt. Ik MOET er dus voor zorgen dat de id's van de content van elke taal hetzelfde is, of moet ik dit nog netjes aan elkaar koppelen met een aparte tabel?
het scriptje wat je niet snapt, maakt op je edit pagina, waar je in je url de naam hebt van de te bewerken tabel, bijvoorbeeld [taalnaam]."nieuws". (alleen nieuws staat dan in de url, omdat die alle talen moet kunnen bewerken he ;)

Stel je hebt http://url.nl/?edit=nieuws

Dan maakt die voor elke taal een aparte textarea aan, waarin je dan nieuws kan toevoegen in een taal. ;)

(hoop dat dat wat duidelijker is)


VRAAG 2:
Neej, niks geen gekoppel, je tabelopzet is voor de talen overal hetzelfde (in nieuws verwacht ik bijv wel een datumveld)
Elke tabel, is dan hetzelfde als het origineel, alleen bevat het een andere taal..

Jouw voorbeeld er even bij pakkende:

id|nltitel|nlcontent|detitel|decontent|entitel|encontent

zou dan zo worden (caps -> tabeltitel):
NLTITEL
id|titel|content

ENTITEL
id|titel|content

DETITEL
id|titel|content
Hmmm, oke. Ik kan dan dus ook per taal een UPDATE query uitvoeren en kijken wie wanneer het laatst geupdate heeft.

Dat heeft voordelen inderdaad. Wel is het dan noodzaak dat elke content hetzelfde id heeft maar dat tegen te gaan/op te lossen.

Bedankt Robert! Ik ga even wat opzetten!
om op je site bij te houden welke taal hij steeds moet gebruiken kan je gebruik maken van $_SESSION['lang'] waarin je de taal zet.
en als je van taal wil switchen vervang je dan simpelweg de waarde in die session
Crispijn schreef op 27.09.2006 23:56
Hmmm, oke. Ik kan dan dus ook per taal een UPDATE query uitvoeren en kijken wie wanneer het laatst geupdate heeft.

Dat heeft voordelen inderdaad. Wel is het dan noodzaak dat elke content hetzelfde id heeft maar dat tegen te gaan/op te lossen.

Bedankt Robert! Ik ga even wat opzetten!


Wat is dat toch met de ID? Als je ervoor zorgt dat je bij een aantal dingen een datum hebt staan.. en als je voor de links wil, zorg dan dat je overal een naam hebt voor die link (bijvoorbeeld home, of pics) die in elke tabel weer hetzelfde is, dat scheelt onderhoud.. VEEL onderhoud..
Overigens:

Als je na de 1e update dit doete

$id=last_insert_id();
(ik geloof dat het zo was)
dan kan je $id gebruiken om die andere tabellen te maken ;)
Robert schreef op 28.09.2006 00:05
Overigens:

Als je na de 1e update dit doete

$id=last_insert_id();
(ik geloof dat het zo was)
dan kan je $id gebruiken om die andere tabellen te maken ;)


Volgens mij heet het

<?php
mysql_insert_id() 
?>

Reageren