Ich baue ein CMS zur Bearbeitung von Seiteninhalten auf. Ich möchte es so flexibel wie möglich gestalten, da jede Seite eine variable Anzahl von Abschnitten enthalten wird.
Derzeit habe ich Folgendes:
Table page:
===========
id
name
Table page_section:
===================
id
page_id
name
display_order
Table page_section_sub:
=======================
id
page_section_id
name
content
Ich dachte, diese Struktur würde gut funktionieren, bis ich feststellte, dass es eine Menge sich wiederholender Daten gibt und dass es nicht der ideale Weg ist, um bestimmte Daten herauszuziehen.
Zum Beispiel, die name
Feld in Tabelle page_section_sub
dient der Speicherung der Feldbezeichnung für das Formular. Hier ist ein Beispiel für Daten:
Table page_section:
===================
id page_id name
-----------------------------------------
1 1 Slideshow Slide 1
2 1 Slideshow Slide 2
3 1 Slideshow Slide 3
4 1 Middle Box
5 1 Bottom Box
Table page_section_sub:
=======================
id page_section_id name content
------------------------------------------------------
1 1 Heading ...
2 1 First Paragraph ...
3 1 Second Paragraph ...
4 2 Heading ...
5 2 First Paragraph ...
6 2 Second Paragraph ...
7 3 Heading ...
8 3 First Paragraph ...
9 3 Second Paragraph ...
10 4 Image URL ...
11 5 Image URL ...
Nun möchte ich im Frontend die 3 Diashows und die dazugehörigen content
aus der obigen Tabelle. Dies erweist sich als sehr mühsam.
Ich weiß, dass ich eine weitere Tabelle mit separaten Spalten für "Überschrift", "Erster Absatz" und "Zweiter Absatz" erstellen kann, aber wie ich schon sagte, muss dieses System flexibel sein und eine beliebige Anzahl von Spalten berücksichtigen können.
Wie kann ich die Struktur dieser Datenbank so verbessern, dass ich diese Daten problemlos am Frontend ausgeben und auch am Backend ändern kann?
EDIT: Dies ist, was ich in meinem Frontend tun möchte:
<?php while($row = mysql_fetch_array($slideshow)) { ?>
<div class="slideshow">
<h1><?php echo $row['heading']; ?></h1>
<p class="first"><?php echo $row['first']; ?></p>
<p class="second"><?php echo $row['second']; ?></p>
</div>
<?php } ?>
Aber natürlich existieren diese eigentlichen $row-Spalten nicht in der Tabelle Im Backend muss ich jedoch in der Lage sein, die oben genannten 11 Zeilen auf einer Seite zu bearbeiten.