Code source du fichier bargraphe-dom.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."/bargraphe-dom.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);

        // chemin d'accès au fichier csv
        $ficcsv = DIR_CSV."/vacsi-tot-dom.csv";

        // ouvrir en lecture le fichier 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));

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

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

            // recopier le fichier html jusqu'à la liste
            copie_jusque_chaine ($descfic, "XXXLISTE");

            // lire la ligne de la première région
            $ligne = trim (fgets ($descscv, LG_MAX_CSV));

            // trouver le nombre de doses mémorisées
            $args = explode (";", $ligne, 20);
            $nb_doses = count ($args) - 2;

            // tant que non fin de fichier
            while ($ligne)
            {
                // récupérer les différents champs de la ligne
                $args = explode (";", $ligne, 20);

                // ligne de titre
                echo "      <h2>".$args [0]."</h2>\n      ";

                // pour chaque dose de vaccin
                for ($dose = 1; $dose <= $nb_doses; $dose++)
                {
                    // position du séparateur entre le nombre de vaccinés et le taux
                    $sep = strpos ($args [$dose + 1], "-");

                    // extraire le taux de vaccination
                    $taux = substr ($args [$dose + 1], $sep + 1);

                    // si première dose
                    if ($dose == 1)
                        // calculer le taux de non vaccinés
                        $nonvacc = str_replace (".", ",", 100 - $taux);

                    // le franciser
                    $taux = str_replace (".", ",", $taux)." %";

                    // l'afficher
                    echo "Dose ".$dose." : ".$taux;

                    // passage à la ligne toutes les 4 doses
                    if ($dose % 4)
                        echo " &nbsp; &nbsp; ";
                    else
                        echo "<br>\n";
                }

                // l'afficher aussi
                echo "Non vacciné : ".$nonvacc." %<br><br>\n";

                // récupération du code du DOM utilisé pour le fichier bmp
                $regdom = strtolower ($args [0]);

                // si le nom commence par "st"
                if (substr ($regdom, 0, 2) == "st")
                    // on prend les caractères 1, 4 et 5 du nom
                    $code = substr ($regdom, 0, 1).substr ($regdom, 3, 2);
                // sinon
                else
                    // on prend les 3 premiers caractères en remplaçant les é par e
                    $code = substr (str_replace ("é", "e", $regdom), 0, 3);

                // afficher le bargraphe en 5 couleurs
                echo '      <img src="'.DIR_IMAGES."/barre-dom-".$code.".bmp\"><br>\n";

                // séparation entre 2 dom
                echo "      <br>\n";

                // lire la ligne suivante du fichier csv local
                $ligne = trim (fgets ($descscv, LG_MAX_CSV));
            }

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

            // recopier le fichier html jusqu'à la liste
            copie_jusque_chaine ($descfic, "XXXLISTE");

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

        // 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";
?>