Code source du fichier bargraphe-age1.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-age1.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-tot-a-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'à la liste
            copie_jusque_chaine ($descfic, "XXXLISTE");

            // sauter les classes d'âge jusqu'à 4 ans
            do
            {
                // lire une ligne du fichier csv local
                $ligne = trim (fgets ($descscv, LG_MAX_CSV));

                // récupérer l'âge maximum sans 0 à gauche du chiffre
                $agemax = (substr ($ligne, 0, 2) + 0);
            }
            while ($ligne && $agemax < 4);

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

            // répéter
            do
            {
                // âge de début de la prochaine classe d'âge
                $agemin = $agemax + 1;

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

                // récupérer les différents champs de la ligne
                $args = explode (";", $ligne, 20);

                // extraire l'âge maximum (sans 0 sur les des dizaines)
                $agemax = $args [0] + 0;

                // générer la tranche d'âge
                if ($agemin < 80)
                    $ages = "De ".$agemin." à ".$agemax." ans";
                else
                    $ages = "À partir de ".$agemin." ans";

                // ligne de titre
                echo '          <tr><td align="center">'.$ages."</td></tr>\n";

                // génération des deux bargraphes
                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);

                    // calculer la largeur en pixels nécessaire pour le bargraphe
                    $largeur = round ($taux * 5);

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

                    // générer la ligne html avec un bargraphe et le taux indiqué
                    echo '          <tr><td><img src="'.DIR_IMG_REF."/barre_dose".$dose.'.bmp" ';
                    echo 'height="40px" width="'.$largeur.'px"> &nbsp;';
                    echo "<sup>".$taux."</sup></td></tr>\n";
                }

                // séparation entre 2 classes d'âge
                echo "          <tr><td><br></td></tr>\n";
            }
            // jusqu'à ce que toutes les classes d'âge soient traitées
            while ($ligne && $agemax < 80);

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

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

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