Apprendre le PHPCréation de la structure

Télécharger la vidéo

Les bases
Travaux pratiques
L'objet
Exercices
Travaux Pratique 2
Le routeur
18 min
Listing d'articles23-08-2019 12:00:00, ou devenir premium
24 min
Pagination24-08-2019 12:00:00, ou devenir premium
16 min
Simplifions la gestion de l'URL25-08-2019 12:00:00, ou devenir premium
20 min
Page article26-08-2019 12:00:00, ou devenir premium
23 min
Page catégorie27-08-2019 12:00:00, ou devenir premium
10 min
Réorganisation de la pagination28-08-2019 12:00:00, ou devenir premium
29 min
Affichage des catégories sur le listing29-08-2019 12:00:00, ou devenir premium
30 min
Création de la classe Table31-08-2019 12:00:00, ou devenir premium
34 min
Administration du site01-09-2019 12:00:00, ou devenir premium
23 min
Edition d'un article02-09-2019 12:00:00, ou devenir premium
30 min
Gestion des formulaires03-09-2019 12:00:00, ou devenir premium
24 min
Valider les données04-09-2019 12:00:00, ou devenir premium
23 min
Création d'un article05-09-2019 12:00:00, ou devenir premium
19 min
Gestion des catégories06-09-2019 12:00:00, ou devenir premium
35 min
Liaison article catégorie07-09-2019 12:00:00, ou devenir premium
31 min
Authentification08-09-2019 12:00:00, ou devenir premium
32 min

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)
)