Personnel Full-stack PHP ✓ Terminé

Movie DB — PHP

Application full-stack PHP + Bootstrap connectée à l'API TMDb. Recherche de films par titre, genre ou acteur, avec rendu serveur et affichage des résultats via Bootstrap.

Contexte
Personnel
Période
2025
Back-end
PHP
Front-end
Bootstrap
01

Description du projet

Movie DB PHP est une application full-stack développée en PHP côté serveur et Bootstrap 5 côté interface. Elle se connecte à l'API The Movie Database (TMDb) pour permettre la recherche de films par titre, par genre ou par acteur, avec affichage des résultats en temps semi-réel.

Contrairement au projet Films TMDb en JavaScript pur, ce projet met en œuvre un traitement côté serveur : PHP effectue les appels API avec cURL, traite les données JSON, puis génère le HTML qui est envoyé au client. Cela illustre la différence fondamentale entre rendu client (JS) et rendu serveur (PHP).

L'interface s'appuie sur Bootstrap 5 pour une mise en page responsive soignée avec cards films, notation par étoiles et modal de détail.

02

Technologies utilisées

PHP 8
Bootstrap 5
API TMDb v3
cURL (appels HTTP serveur)
JSON (decode/encode)
HTML5 / CSS3
Apache / XAMPP
GitHub
03

Architecture full-stack

Client
Bootstrap 5 — Rendu HTML
CSS3 — Styles personnalisés
Formulaire HTML (GET)
Serveur PHP
index.php — Point d'entrée
api.php — Appels cURL TMDb
functions.php — Helpers
API externe
TMDb API v3 — /search/movie
TMDb API v3 — /discover/movie
TMDb API v3 — /movie/{id}
04

Extrait de code — Appel API en PHP (cURL)

<?php // api.php — Classe pour les appels à l'API TMDb class TmdbApi { private $apiKey = 'VOTRE_CLE_API'; private $baseUrl = 'https://api.themoviedb.org/3'; public function searchMovies($query): array { $url = $this->baseUrl . "/search/movie?api_key=" . $this->apiKey . "&query=" . urlencode($query) . "&language=fr-FR"; return $this->fetchJson($url)['results'] ?? []; } private function fetchJson($url): array { $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $response = curl_exec($ch); curl_close($ch); return json_decode($response, true) ?? []; } } // index.php — Utilisation dans la page principale $api = new TmdbApi(); $query = htmlspecialchars($_GET['search'] ?? ''); $movies = $query ? $api->searchMovies($query) : []; ?>
05

Flux de recherche

Étape 1
Saisie utilisateur
L'utilisateur remplit le formulaire HTML (méthode GET). La page est rechargée avec le paramètre ?search=... dans l'URL.
Étape 2
Traitement PHP + cURL
PHP récupère $_GET['search'], construit l'URL TMDb, effectue l'appel cURL, décode le JSON et prépare les données.
Étape 3
Rendu HTML Bootstrap
PHP génère dynamiquement les cards Bootstrap avec les données films (affiche, titre, note, résumé) et envoie le HTML complet au navigateur.
06

Compétences BTS SIO mobilisées

CodeCompétenceMise en œuvre dans le projet
B1.1Recenser et identifier les ressources numériquesLecture de la documentation API TMDb, gestion de la clé API, utilisation de cURL pour les requêtes HTTP depuis PHP.
B2.2Concevoir une solution applicativeArchitecture MVC simplifiée, séparation des fichiers (api.php, functions.php, index.php), conception des vues Bootstrap.
B2.3Développer, documenter et déployerDéveloppement PHP (classes, fonctions, superglobales $_GET), cURL, json_decode, rendu HTML dynamique, sécurisation htmlspecialchars.
B2.4Travailler en mode projetVersionnage GitHub, organisation en fichiers distincts par responsabilité, README documentant l'installation et configuration.
B1.3Développer la présence en ligneInterface responsive Bootstrap 5, cards films avec affiches, notation visuelle, modal Bootstrap pour le détail d'un film.
07

Résultats & apprentissages

🖥️
PHP serveur maîtrisé
Développement back-end PHP avec classes, appels cURL, traitement JSON et rendu HTML dynamique côté serveur.
🔄
Client vs Serveur
Compréhension concrète de la différence entre rendu client (JS/Fetch) et rendu serveur (PHP/cURL).
🔐
Sécurité PHP basique
Protection XSS via htmlspecialchars(), validation des entrées $_GET, gestion sécurisée de la clé API.
🏗️
Architecture MVC simplifiée
Séparation des responsabilités en plusieurs fichiers PHP — première approche d'une architecture MVC.