Je suis en train de construire un CMS pour l'édition du contenu des pages. J'aimerais qu'il soit aussi flexible que possible, car chaque page contiendra un nombre variable de sections.
Actuellement, j'ai les éléments suivants :
Table page:
===========
id
name
Table page_section:
===================
id
page_id
name
display_order
Table page_section_sub:
=======================
id
page_section_id
name
content
Je pensais que cette structure fonctionnerait bien, jusqu'à ce que je réalise qu'il y a beaucoup de données répétitives et que ce n'est pas la manière idéale d'extraire des données spécifiques.
Par exemple, le name
champ dans la table page_section_sub
est destiné à stocker l'étiquette du champ du formulaire. Voici un exemple de données :
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 ...
Maintenant, sur l'interface principale, je veux afficher les 3 diaporamas et leur contenu. content
du tableau ci-dessus. Cela s'avère être très fastidieux.
Je sais que je peux créer un autre tableau avec des colonnes séparées pour "Titre", "Premier paragraphe" et "Deuxième paragraphe", mais comme je l'ai mentionné, j'ai besoin que ce système soit flexible et prenne en compte un nombre quelconque de colonnes.
Comment puis-je améliorer la structure de cette base de données afin de pouvoir facilement sortir ces données sur le front-end et aussi les modifier sur le back-end ?
EDIT : C'est ce que je veux faire dans ma partie avant :
<?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 } ?>
Mais bien sûr, ces colonnes $row n'existent pas dans la table Dans le back-end, cependant, j'ai besoin de pouvoir modifier les 11 lignes ci-dessus sur une page.