Code source du fichier table-gen.php

<?php
    // constantes numériques
    require ("constantes.php");

    // fonctions d'affichage de portions de pages HTML
    require ("acces_page.php");

    // génération du menu en colonne de gauche
    require ("genmenu.php");


    // modèle de page html
    $ficpage = DIR_PAGES."/table-gen.html";

    // ouvrir le fichier contenant la page à afficher
    $descfic = fopen ($ficpage, "r");

    // si l'ouverture s'est bien passée
    if ($descfic)
    {
        // recopier le début de l'entête html en remplaçant noindex par index
        copmaj ($descfic, "noindex,", "index,");

        // recopier le début du fichier html jusqu'à la zone contenu
        copie_jusque_chaine ($descfic, "contenu", 1);

        // l'ouvrir en lecture
        $ficcsv = DIR_CSV."/vacsi-totgen-fra.csv";
        $descscv = fopen ($ficcsv, "r");

        // si l'ouverture s'est bien passée
        if ($descscv)
        {
            // lire la date mémorisée (format aaaa/mm/jj)
            $datefic = trim (fgets ($descscv, 20));

            // la retourner au format jj/mm/aaaa
            $datefic = substr ($datefic, 8, 2)."/".substr ($datefic, 5, 2)."/".substr ($datefic, 0, 4);

            // recopier le début de fichier html en mettant la date dans le titre
            copmaj ($descfic, "XXXDATE", $datefic);

            // recopier le fichier html jusqu'au contenu de la table
            copie_jusque_chaine ($descfic, "XXXTABLE");

            // lire l'âge minimum de la première ligne du fichier csv local
            $agemin = fgets ($descscv, 2);

            // classes d'âge pour la première ligne
            $cl_ages = "Tous âges";

            // répéter
            do
            {
                // lire la suite de la ligne
                $ligne = trim (fgets ($descscv, LG_MAX_CSV));

                // population
                $finpop = strpos (substr ($ligne, 1), ";") + 2;
                $popul = substr ($ligne, 0, $finpop);

                // et la suite de la ligne
                $suite = substr ($ligne, $finpop);

                // séparer les nombres de vaccins des pourcentages
                $suite = str_replace ("-", "<br>", $suite);

                // franciser les . décimaux
                $suite = str_replace (".", ",", $suite);

                // rajouter les pourcentages
                $suite = str_replace (";", "%;", $suite)."%";

                // mettre en forme la ligne
                $ligne = str_replace (";", "</td><td>", $cl_ages.$popul.$suite);

                // blanc insécable avant le symbole %
                $ligne = str_replace ("%", "&nbsp;%", $ligne);

                // générer une ligne dans la table
                echo "          <tr align=\"center\">\n";
                echo "              <td>".$ligne."</td>\n";
                echo "          </tr>\n";

                // lire l'âge minimum de la ligne suivante
                $agemin = fgets ($descscv, 3);

                // classes d'âge pour la ligne suivante
                $cl_ages = $agemin." ans";
            }
            // jusque fin de fichier
            while ($agemin);

            // terminé avec ce fichier
            fclose ($descscv);
        }
        // sinon
        else
        {
            // la date de mise à jour du fichier est inconnue
            copmaj ($descfic, "XXXDATE", "??/??/??");

            // message d'erreur
            echo '        <font color = "#FF0000">';
            echo "Fichier contenant les données inaccessible</font>\n";

            // sauter la table
            sauter_jusque_chaine ($descfic, "</table>");
        }

        // copie la suite du fichier html jusqu'à la section du menu
        copie_jusque_chaine ($descfic, "XXXMENU");

        // générer le menu
        genmenu (basename ($_SERVER ['SCRIPT_NAME']));

        // copier la fin de la page html
        copie_jusque_fin ($descfic);

        // terminé avec le fichier html
        fclose ($descfic);
    }
    // sinon message d'erreur
    else
        echo "Page ".basename ($ficpage)." manquante";
?>