← Tous les projets

P—05 · Étude de cas

Lecteur de résultats

Pour la Fédération Française d’Escrime, un outil web qui lit l’export brut d’une compétition et en sort poules, matchs, classements et statistiques, prêts à partager avec les entraîneurs.

RôleDéveloppeur web (stage)
ClientFédération Française d’Escrime
PériodeJuin – Juil. 2024 · Paris
StackPHP · SimpleXML · HTML/CSS
Code sur GitHub ↗ État des besoins (PDF) ↗
01 — Contexte

Après chaque compétition, Excel.

À la fin d’une compétition, le logiciel d’arbitrage produit un fichier XML qui contient tout : les poules, chaque assaut, les tableaux d’élimination directe, le classement, les arbitres.

Le problème, c’est que personne ne lit du XML. Les responsables ouvraient le fichier à la main pour retrouver qui avait battu qui, recopiaient les scores dans Excel et reconstruisaient les classements avant de les envoyer aux entraîneurs. À chaque compétition, tout était refait, et ça dépendait de qui était disponible ce week-end-là.

02 — La demande

Rapide, fiable, utilisable sans être développeur.

Avant d’écrire du code, j’ai rédigé un état des besoins qui décrit chaque page attendue, les données affichées et la navigation. Concrètement, j’ai joué le rôle de chef de produit avant celui de développeur.

PageContenu
index.phpNom de la compétition, lieu, date, formule (poules → élimination directe).
inscrits.phpTireurs engagés : nom, club, catégorie, arme, avec recherche.
arbitre.phpArbitres affectés à l’événement, avec club et niveau.
poules.phpChaque poule et chaque assaut : touches données/reçues, victoires, arbitre.
classement_f.phpClassement final, médailles, tour atteint par chaque tireur.
match.phpVue détaillée d’un match pour l’analyse avec l’entraîneur.
03 — Architecture

Un fichier en entrée, des pages en sortie.

Le choix principal : pas de base de données. Tout est calculé en mémoire à partir du XML à chaque chargement. Pour une nouvelle compétition, on remplace le fichier et le site est à jour, sans rien reprogrammer ni migrer.

EntréeExport XML

Logiciel d’arbitrage (ex. lille.xml)

TraitementPHP + SimpleXML

Extraction, calcul des indicateurs

SortiePages HTML

Une URL par vue, simple à partager

04 — Le code

Lire une poule.

Extrait simplifié de poules.php : on charge l’export, on parcourt chaque poule, puis chaque match avec son score. Le même schéma sert pour le classement, les arbitres et les inscrits.

poules.phpPHP
// Charger les données de la compétition
$xml = simplexml_load_file("lille.xml");
$pools = [];

foreach ($xml->Poule as $poule) {
    $num = (string) $poule['Num'];
    $pools[$num] = ["referee" => (string) $poule['Arbitre'], "matches" => []];

    foreach ($poule->Match as $m) {
        $pools[$num]["matches"][] = [
            "a"  => (string) $m->TireurA['Nom'],
            "b"  => (string) $m->TireurB['Nom'],
            "sa" => (int) $m['ScoreA'],
            "sb" => (int) $m['ScoreB'],
        ];
    }
}
// … puis rendu HTML de chaque poule sous forme de tableau
05 — Itération

Démo, retours, deuxième version.

J’ai présenté l’outil en direct au responsable fédéral. Ses retours ont surtout porté sur quels indicateurs comptent vraiment pour un entraîneur : j’ai retravaillé les statistiques affichées et la présentation en conséquence.

L’état des besoins prévoyait aussi des évolutions : suivi des cartons par tireur, statistiques d’arbitrage, mise en avant des surprises (un tireur mal classé qui bat un favori).

06 — Résultat

Des minutes au lieu d’heures.

Minutespour produire un récapitulatif, contre une reconstruction à la main
1 versiondes résultats, la même pour tous les entraîneurs
0 basede données : déposer le XML suffit

Surtout, j’ai appris à traduire « on veut des stats » en indicateurs calculables, et à présenter l’information comme les gens en ont besoin sur le terrain.