Base de données de trains

Introduction

Nous sommes passionnés par les trains. Au cours de l’été dernier, nous avons pris un grand nombre de photos de trains. Nous voulions trouver un moyen de répertorier tous les trains que nous croisons et d’indiquer des informations basiques sur chaque train.

Nous appelons « train » tout matériel ferroviaire (locomotives, voitures, automotrice...).

Locomotive BB 27300 Voiture de banlieue à deux niveaux Automotrice Z 50000

De gauche à droite, une locomotive BB 27300, des voitures de banlieue à deux niveaux (VB2N) et une automotrice Z 50000.

La base de données

La base de données est constituée de deux tables :

Structure de la base de données

Structure de la base de données

Fonctionnement

Lorsque l’utilisateur arrive sur la 1ere page, il est invité à entrer une partie ou le nom complet d’un train ou d’un type de train présent dans la base de données. Par exemple, il peut taper « 69 R » pour obtenir la fiche du train 69 R. Mais il peut également taper « 6 » pour obtenir les fiches de tous les trains présents dans la base de données contenant un 6 dans leur nom. L’utilisateur peut également effectuer une recherche rapide avec les boutons situés sous la barre de recherche.

Une fois que l’utilisateur soumet le formulaire, le serveur vérifie dans un premier temps s’il est possible d’accéder à la base de données, si ce n’est pas le cas, une erreur 503 et un message d’erreur sont retournés à l’utilisateur.

S’il est possible d’accéder à la base de données, le serveur effectue un traitement sur les informations entrées par l’utilisateur afin d’éviter les failles html et les injections SQL, puis utilise PDO pour effectuer une requête SELECT avec LIKE.

Le serveur effectue ensuite un traitement sur la réponse SQL afin de pouvoir afficher chaque enregistrement et les manipuler comme des dictionnaires, avec les attributs comme clés.

Enfin, la page html est générée, pour chaque enregistrement, une fiche est créée et les informations y sont ajoutées avec la commande echo. Pour les attributs pouvant être nuls, ils sont affichés seulement s’ils sont définis

Code affichant le titre de chaque fiche

Code affichant le titre de chaque fiche.

Code affichant les photos pour chaque fiche

Code affichant les photos pour chaque fiche.

Une fois la page générée, elle est envoyé au client sous forme d’une page html.

Schéma simplifié des requêtes executées après la validation du formulaire

Schéma simplifié des requêtes executées après la validation du formulaire.