Dans ce premier chapitre nous allons poser la structure de base de notre application et créer nos 2 premières pages.
Structure du code
Comme nous l'avons vu dans la formation nous allons mettre en place un système de router afin de pouvoir gérer et contrôler les URLs depuis notre application. Nous allons utiliser la librairies AltoRouter comme base pour notre système. L'objectif est de faire en sorte que notre application réponde aux URLs suivantes :
- /blog, en affichant le titre "Mon Blog"
- /blog/category, en affichant le titre "Ma catégorie"
Dans ce chapitre on se focalise sur la logique et on ne cherchera pas pour le moment à organiser notre code à l'aide de classes.
Structure de la base de données
Pour la base de données nous allons commencer par créer une table qui permettra de sauvegarder les articles.
CREATE TABLE post (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
slug VARCHAR(255) NOT NULL,
content TEXT(650000) NOT NULL,
created_at DATETIME NOT NULL,
PRIMARY KEY (id)
)
On ajoutera une table pour gérer les catégories :
CREATE TABLE category (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
slug VARCHAR(255) NOT NULL,
PRIMARY KEY (id)
)
Maintenant on veut associer les articles aux catégories et on souhaite qu'un article puisse avoir plusieurs catégories et inversément une catégorie peut être associée à plusieurs articles. On est ici en présence d'une relation de type n-n, relation qui nécessite l'utilisation d'une table de liaison.
CREATE TABLE post_category (
post_id INT UNSIGNED NOT NULL,
category_id INT UNSIGNED NOT NULL,
PRIMARY KEY (post_id, category_id),
CONSTRAINT fk_post
FOREIGN KEY (post_id)
REFERENCES post (id)
ON DELETE CASCADE
ON UPDATE RESTRICT,
CONSTRAINT fk_category
FOREIGN KEY (category_id)
REFERENCES category (id)
ON DELETE CASCADE
ON UPDATE RESTRICT
)
On ajoute des clefs étrangères au niveau de notre base de données afin de s'assurer de la suppression en cascade de nos contenus.
Enfin, on finira par la création d'une table pour gérer l'identification de l'espace d'administration.
CREATE TABLE user (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
username VARCHAR(255) NOT NULL,
password VARCHAR(255) NOT NULL,
PRIMARY KEY (id)
)