<?
/*
Copyright (C) 2002 Loc Dayot
EPNadmin - Version 0.7
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
http://epnadmin.pierrefitte93.fr/
*/
require_once("header.inc.php");
require_once("constantes.inc.php"); // dfinition des constantes
if (!defined("FCT_STATISTIQUES"))
{
echo $fctnonactive;
require("basdepage.inc.php");
echo "</body></html>\n";
require("footer.inc.php");
exit;
}
//require_once("fonctions.inc.php"); // concernant des fonctions transversales inclassables
require_once("mysql.inc.php"); // concernant mysql
//require_once("sessions.inc.php"); // concernant les sessions et initiations
require_once("usagers.inc.php"); // concernant la gestion des usagers
//require_once("reservations.inc.php"); // concernant les rservations des postes en accs individuel par des usagers
require_once("tableaux.inc.php"); // Concernant l'affichage transpos d'un tableau
//require_once("siteweb.inc.php"); // concernant les pages perso des usagers et les sites web des structures
require_once("dateheure.inc.php"); // concernant la manipulation des heures et des dates, formulaire, conversion...
require_once("structures.inc.php"); // concernant les structures
//require_once("initiations.inc.php"); // concernant les initiations et les thmes
require_once("parcours.inc.php"); // concernant les parcours des usagers et leur positionnement
include("camembert.inc.php");
//include("histogramme.inc.php");
$ptitr="statistiques";
$titr = "Statistiques";
$datemaj="21 juillet 2003";
define("COULEUR", COULEUR_STATISTIQUES);
require("entete.inc.php");
if (! defined("STATISTIQUES") || STATISTIQUES<"~")
{
echo $pasledroit;
require("basdepage.inc.php");
echo "</body></html>\n";
require("footer.inc.php");
exit;
}
// rends un traits d'une taille proportionnelle la valeur (0 100) de l'argument
function traitp($utp)
{
return " <img src=\"images/noire.png\" height=\"10\" width=\"$utp\" border=\"0\">";
}
function traitu($utp)
{
return " <img src=\"images/noire.png\" height=\"$utp\" width=\"20\" border=\"0\">";
}
// Date de dbut
if($djour==""||$dmois==""||$dannee=="")
$datedeb = date("Y")."-01-01";
else
$datedeb = date("Y-m-d", strtotime($dmois."/".$djour."/".$dannee));
// Date de fin
if($fjour==""||$fmois==""||$fannee=="")
$datefin = date("Y-m-d");
else
$datefin = date("Y-m-d", strtotime($fmois."/".$fjour."/".$fannee));
// Affichage du formulaire de choix des tableaux statistiques
echo "<form method=\"post\" action=\"$PHP_SELF\">";
echo "
<table border=\"1\" align=\"center\">
<tr>
<td><h3 align=\"center\">Période</h3></td>
<td><h3 align=\"center\">Choix du tableau</h3></td>
</tr>
<tr>
<td rowspan=\"2\">";
echo " <table><tr><td>Du : </td><td>"; echo ChoixDate($datedeb, "d"); echo "</td></tr>";
echo " <tr><td>Au : </td><td>"; echo Choixdate($datefin, "f"); echo "</td></tr>
</table>";
echo "</td>
<td>
<select name=\"operation\">
<option></option>
<option value=\"4\"";
if ($operation==4) echo " selected";
echo ">Cumuls des heures (sessions et accès individuels)</option><br>
<option value=\"5\"";
if ($operation==5) echo " selected";
echo ">Evolution mensuelle</option><br>
<option value=\"7\"";
if ($operation==7) echo " selected";
echo ">Rpartition de la frquentation par usager</option>
<option value=\"2\"";
if ($operation==2) echo " selected";
echo ">Les sessions par structure</option><br>
<option value=\"3\"";
if ($operation==3) echo " selected";
echo ">Les sessions d'initiation</option><br>
<option value=\"1\"";
if ($operation==1) echo " selected";
echo ">Les usages en accs individuels</option><br>
<option value=\"6\"";
if ($operation==6) echo " selected";
echo ">Frquentation par jours et heures</option><br>
</select></td>
</tr>\n";
// Choix des lieux et de l'organisateur
echo "
<tr>
<td>
Lieu : ";
echo choix_lieu($lieuv);
echo "</td>
</tr>\n";
echo "
<tr>
<td align=\"center\" colspan=\"2\">
<input type=\"submit\" name=\"Submit\" value=\"Envoyer\">
</td>
</tr>
</table>
</form>\n";
if (isset($operation))
{
echo "<hr>\n";
switch ($operation)
{
case 4 : $t="Cumuls des heures (sessions et accs individuels)"; break;
case 5 : $t="Evolution mensuelle"; break;
case 7 : $t="Rpartition de la frquentation par usagers<br><font size='-1'>(Combien d'usagers utilisent beaucoup le lieu)</font>"; break;
case 2 : $t="Les sessions par structure"; break;
case 3 : $t="Les sessions d'initiation"; break;
case 1 : $t="Les usages en accs individuels"; break;
case 6 : $t="Frquentation par jours et heures"; break;
default : break;
}
$t.=" entre le ".datetodate($datedeb)." et le ".datetodate($datefin);
echo cadre_debut($t);
}
switch ($operation)
{
//-----------------------------------------------------------------------------------------/
// USAGES /
//-----------------------------------------------------------------------------------------/
case 1 :
// Vrification de l'intrt de la slection
if (! defined("USAGES"))
{
echo "La fonctionnalit usages n'est pas active";
break;
}
$req = "SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(fin)-TIME_TO_SEC(debut))) AS nbheure
FROM utilisation_postes
WHERE etat IN ('rservation', 'impromptue')
AND DATE_ADD(date, INTERVAL 0 DAY)>=\"$datedeb\"
AND DATE_ADD(date, INTERVAL 0 DAY)<=\"$datefin\" ";
$res = executeRequete($req);
$stat = fetch_object($res);
$nbtotal = $stat->nbheure;
if ($nbtotal==0)
{
echo "<p>Dsol, mais il ne semble pas qu'il y ait eu aucune utilisation rpondant aux critres slectionns.</p>\n";
break;
}
echo "<p>Tableau des usages en nombre d'heures</p>\n";
$req = "SELECT usages.nom AS usag,
SEC_TO_TIME(SUM(TIME_TO_SEC(fin)-TIME_TO_SEC(debut))) AS nbheure,
id_tarif,
INTERVAL(YEAR(CURDATE())-YEAR(naissance), 20, 40, 60) as age "
. "FROM usages "
. "LEFT JOIN utilisation_postes ON usages.id=utilisation_postes.id_usage "
. "LEFT JOIN usagers ON utilisation_postes.id_usager=usagers.id
LEFT JOIN credits ON credits.id_usager=usagers.id
WHERE etat IN ('rservation', 'impromptue') "
. "AND DATE_ADD(utilisation_postes.date, INTERVAL 0 DAY)>=\"$datedeb\"
AND DATE_ADD(utilisation_postes.date, INTERVAL 0 DAY)<=\"$datefin\" "
. "GROUP BY usag, id_tarif, age ORDER BY usages.nom, id_tarif";
$res = executeRequete($req);
//debug($req);
echo "<table border='1' align='center' bgcolor='#CCFFFF'>\n
<tr><th>Usages</th>";
$i=0;
while ($i<=1000)
{
if ($tarifs[$i])
{
echo "<th bgcolor=\"".$couleurtarif[$i]."\">$tarifs[$i]</th>";
$tuptarif[$i]=0;
}
$i++;
}
echo "\n<th>- de 20 ans</th><th>20 40 ans</th><th>40 60 ans</th><th>+ de 60 ans</th><th>ge<br>inconnu</th>\n
<th>Totaux</th><th>%</th></tr>\n";
$stat=fetch_object($res);
/*
$tuptr=0; // total usagers pierrefittois tarif rduit
$tuptn=0; // total usagers pierrefittois tarif normal
$tunp=0; // total usagers non pierrefittois
*/
$tut=0; // total usagers
$tupinconnu=0; // total usagers ge inconnu
$tup60ans=0; // total usagers + de 60 ans
$tup40ans=0; // total usagers + de 60 ans
$tup20ans=0; // total usagers entre 20 et 60 ans
$tupjeune=0; // total usagers - de 20 ans
while ($stat)
{
$us=$stat->usag;
/*$uptr=0;
$uptn=0;
$unp=0;*/
for ($i=0; $i<=1000; $i++) $uptarif[$i]=0;
$ut=0;
$upinconnu=0;
$up60ans=0;
$up40ans=0;
$up20ans=0;
$upjeune=0;
while ($stat->usag==$us)
{
$uptarif[$stat->id_tarif]+=$stat->nbheure;
/*switch ($stat->id_tarif)
{
case '0' : $unp+=$stat->nbheure; break;
case '1' : $uptn+=$stat->nbheure; break;
case '2' : $uptr+=$stat->nbheure; break;
}*/
switch ($stat->age)
{
case 3 : $up60ans+=$stat->nbheure; break;
case 2 : $up40ans+=$stat->nbheure; break;
case 1 : $up20ans+=$stat->nbheure; break;
case 0 : $upjeune+=$stat->nbheure; break;
default : $upinconnu+=$stat->nbheure; break;
}
$ut+=$stat->nbheure;
$stat=fetch_object($res);
}
echo "<tr>";
// usage
echo "<td>$us</td>\n";
// par tarif
/*
echo "<td>$unp</td>\n";
echo "<td>$uptn</td>\n";
echo "<td>$uptr</td>\n";
*/
for ($i=0; $i<=1000; $i++)
if ($tarifs[$i])
echo "<td>".$uptarif[$i]."</td>";
// par age
echo "<td>$upjeune</td>\n";
echo "<td>$up20ans</td>\n";
echo "<td>$up40ans</td>\n";
echo "<td>$up60ans</td>\n";
echo "<td>$upinconnu</td>\n";
// totaux et %
echo "<th>$ut</th>\n";
$utp = round($ut / $nbtotal * 100,1);
if ($utp>1) $stats1[$us]=$utp;
echo "<td>$utp%"."</td>\n"; //traitp($utp).
echo "</tr>\n";
/*
$tuptr+=$uptr;
$tuptn+=$uptn;
$tunp+=$unp; */
for ($i=0; $i<=1000; $i++) $tuptarif[$i]+=$uptarif[$i];
$tut+=$ut;
$tupinconnu+=$upinconnu;
$tup60ans+=$up60ans;
$tup40ans+=$up40ans;
$tup20ans+=$up20ans;
$tupjeune+=$upjeune;
}
echo "<tr bgcolor=\"#2B95FF\">";
echo "<th>Totaux</th>\n";
for ($i=0; $i<=1000; $i++)
if ($tarifs[$i])
echo "<th>".$tuptarif[$i]."</th>";
/*
echo "<th>$tunp</th>\n";
echo "<th>$tuptn</th>\n";
echo "<th>$tuptr</th>\n";
*/
echo "<th>$tupjeune</th>\n";
echo "<th>$tup20ans</th>\n";
echo "<th>$tup40ans</th>\n";
echo "<th>$tup60ans</th>\n";
echo "<th>$tupinconnu</th>\n";
echo "<th>$tut</th>\n";
$tutp = round($tut / $nbtotal * 100,1);
echo "<th>$tutp%</td>\n";
echo "</tr>\n";
echo "<tr>";
echo "<td>%</td>\n";
for ($i=0; $i<=1000; $i++)
if ($tarifs[$i])
{
$temp=round($tuptarif[$i] / $nbtotal * 100,1);
if ($temp>0) $stats3[$tarifs[$i]]=$temp;
echo "<td>$temp% "."</td>\n"; //traitp($temp).
}
$tupjeune = round($tupjeune / $nbtotal * 100,1);
if ($tupjeune>0) $stats2["- de 20 ans"]=$tupjeune;
echo "<td>$tupjeune% "."</td>\n"; //.traitp($tupjeune)
$tup20ans = round($tup20ans / $nbtotal * 100,1);
if ($tup20ans>0) $stats2["20 a 40 ans"]=$tup20ans;
echo "<td>$tup20ans% </td>\n"; //".traitp($tup20ans)."
$tup40ans = round($tup40ans / $nbtotal * 100,1);
if ($tup40ans>0) $stats2["40 a 60 ans"]=$tup40ans;
echo "<td>$tup40ans%</td>\n"; //".traitp($tup40ans)."
$tup60ans = round($tup60ans / $nbtotal * 100,1);
if ($tup60ans>0) $stats2["+ de 60 ans"]=$tup60ans;
echo "<td>$tup60ans%</td>\n"; // ".traitp($tup60ans)."
$tupinconnu = round($tupinconnu / $nbtotal * 100,1);
if ($tupinconnu>0) $stats2["age inconnu"]=$tupinconnu;
echo "<td>$tupinconnu%</td>\n"; // ".traitp($tupinconnu)."
$tutp = round($tut / $nbtotal * 100,1);
echo "<th>$tutp%</th>\n";
$tutp = round($tut / $nbtotal * 100,1);
echo "<td>$tutp%</td>\n";
echo "</tr>\n";
echo "</table>\n";
// Essai d'affichage d'un camembert pour ces donnes
//print_r($stats1);
/* $stats : tableau de valeurs
* $x : largeur de l'image crer
* $y : hauteur de l'image crer
* $margin : marge entre le bord, le cercle et la legende
* $filename : nom donner de l'image */
$x=600; $y=300;
$margin=8;
$filename=$dir_tmp_images.'camembert1.png';
if (is_array($stats2))
{
arsort($stats1);
if (draw_camembert($stats1, $x, $y, $margin, $filename))
{
//debug("ok");
echo "<h3 align=center>Part de chacun des usages<br>
<img src='image.inc.php?filename=$filename' alt='Camembert' border='0'></h3>\n";
}
else
debug("Graphique pas ok !");
}
$filename=$dir_tmp_images.'camembert3.png';
if (is_array($stats3))
{
arsort($stats3);
if (draw_camembert($stats3, $x, $y, $margin, $filename))
{
//debug("ok");
echo "<h3 align=center>Utilisation des postes par tarifs<br>
<img src='image.inc.php?filename=$filename' alt='Camembert' border='0'></h3>\n";
}
else
debug("Graphique pas ok !");
}
$filename=$dir_tmp_images.'camembert2.png';
if (is_array($stats2))
{
arsort($stats2);
if (draw_camembert($stats2, $x, $y, $margin, $filename))
{
//debug("ok");
echo "<h3 align=center>Utilisation des postes par ges<br>
<img src='image.inc.php?filename=$filename' alt='Camembert' border='0'></h3>\n";
}
else
debug("Graphique pas ok !");
}
break;
//-----------------------------------------------------------------------------------------/
// SESSIONS PAR STRUCTURES /
//-----------------------------------------------------------------------------------------/
case 2 :
// On met jour le nombre de participants pour les initiations qui ont fait
// l'objet d'insciptions (ie les initiations du parcours)
$req = "SELECT id_session, COUNT(parcours.id_usager) as nbpart "
// SEC_TO_TIME(TIME_TO_SEC(fin)-TIME_TO_SEC(debut))*COUNT(parcours.id_usager) AS nbheurepart "
. "FROM sessions LEFT JOIN parcours ON sessions.id=parcours.id_session "
. "WHERE sessions.id_initiation>'' AND sessions.etat<>'annule' "
. " AND DATE_ADD(sessions.date, INTERVAL 0 DAY)>=\"$datedeb\"
AND DATE_ADD(sessions.date, INTERVAL 0 DAY)<=\"$datefin\" "
. "GROUP BY sessions.id";
$res = executeRequete($req);
while ($stat=fetch_object($res))
{
if ($stat->id_session!=0)
{
$req2="UPDATE sessions SET nbparticipants=$stat->nbpart
WHERE id=$stat->id_session";
$res2=executeRequete($req2);
}
}
// On recherche les statistiques
$req = "SELECT structure,
COUNT(sessions.id) as nbsessions,
SUM(TIME_TO_SEC(fin)-TIME_TO_SEC(debut))/60 AS nbheures,
SUM(nbparticipants) as nbparticip,
SUM(nbparticipants*(TIME_TO_SEC(fin)-TIME_TO_SEC(debut))/60) as nbhp"
. " FROM sessions
LEFT JOIN structures ON sessions.id_structure=structures.id "
. " WHERE DATE_ADD(sessions.date, INTERVAL 0 DAY)>=\"$datedeb\"
AND DATE_ADD(sessions.date, INTERVAL 0 DAY)<=\"$datefin\"
AND sessions.etat<>'annule'"
. " GROUP BY structures.id";
$res = executeRequete($req);
echo "<table border='1' align='center' bgcolor='#CCFFFF'>\n
<tr><th>Structures</th><th>Nombre de<br>sessions</th><th>Nombre de<br>participants</th><th>Nombre<br>d'heures-sessions</th><th>Nombre de <br>participants-<br>sessions-heures</th></tr>\n";
while ($stat=fetch_object($res))
{
echo "<tr>";
echo "<td>$stat->structure</td>\n";
echo "<td>$stat->nbsessions</td>\n";
echo "<td>$stat->nbparticip</td>\n";
echo "<td>".datetoheure(minute2heure($stat->nbheures))."</td>\n";
echo "<td>".datetoheure(minute2heure($stat->nbhp))."</td>\n";
echo "</tr>\n";
$stats[$stat->structure]=round($stat->nbhp);
}
echo "</table>\n";
// Essai d'affichage d'un camembert pour ces donnes
//print_r($stats);
/* $stats : tableau de valeurs
* $x : largeur de l'image crer
* $y : hauteur de l'image crer
* $margin : marge entre le bord, le cercle et la legende
* $filename : nom donner de l'image */
$x=600; $y=300;
$margin=8;
$filename=$dir_tmp_images.'camembert.png';
arsort($stats);
if (draw_camembert($stats, $x, $y, $margin, $filename))
{
//debug("ok");
echo "<center><img src='image.inc.php?filename=$filename' alt='Camembert' border='0'></center>\n";
}
else
debug("nok");
break;
//-----------------------------------------------------------------------------------------/
// SESSIONS D'INITIATIONS /
//-----------------------------------------------------------------------------------------/
case 3 : // -
$req = "SELECT initiations.id AS id, theme, url_image, initiation, COUNT(sessions.id) AS nbses
FROM initiations
LEFT JOIN themes ON initiations.id_theme=themes.id
LEFT JOIN sessions ON initiations.id=sessions.id_initiation
WHERE (sessions.inscriptionauto='oui' AND sessions.etat<>'annule')
AND (sessions.date>='$datedeb' AND sessions.date<='$datefin')
OR (sessions.id IS NULL)
GROUP BY id_theme, initiation";
$res = executeRequete($req);
echo "<table border='1' align='center' bgcolor='#FFA8AA'>\n
<tr><th>Thme</th><th>Initiation</th>
<th>Nombre de<br>sessions<br>effectues</th><th>Nombre de<br>participants<br>passs</th>
<th>Nombre de<br>participants<br>potentiels</th><th>Nombre de<br>sessions<br>prvues</th></tr>\n";
while ($stat=fetch_object($res))
{
echo "<tr>";
echo "<td bgcolor=\"white\">";
if ($stat->url_image!="")
echo "<img src=\"./$stat->url_image\" alt=\"$stat->theme\" border=0 height=15>";
echo "$stat->theme</td>\n";
echo "<td bgcolor=\"white\"><a href=\"initiations.php?id_initiation=$stat->id\">$stat->initiation</a></td>\n";
echo "<td bgcolor=\"#FFFF80\"><a href=\"session.php?operation=5&id_initiation=$stat->id\">$stat->nbses</a></td>\n";
// nombre de participants passs
$req3 = "SELECT COUNT(parcours.id_usager) AS nbpart
FROM parcours
LEFT JOIN sessions ON sessions.id=parcours.id_session
WHERE parcours.id_initiation=$stat->id
AND sessions.date>=\"$datedeb\" AND sessions.date<=\"$datefin\"
AND (parcours.etat=\"effectu\" OR parcours.etat=\"conseill\" OR parcours.etat=\"indispensable\")
GROUP BY parcours.id_initiation";
$res3 = executeRequete($req3);
$stat3 = fetch_object($res3);
echo "<td bgcolor=\"#FFFF80\"><a href=\"parcours.php?operation=9&id_initiation=$stat->id&datedeb=$datedeb&datefin=$datefin\">$stat3->nbpart</a></td>\n";
// nombre de participants potentiels
$req4 = "SELECT id_usager, id_initiation
FROM parcours
WHERE parcours.id_initiation=$stat->id
AND parcours.etat IN (\"conseill\", \"indispensable\", \"retard\", \"problme\", \"absent\")";
$res4 = executeRequete($req4);
$nb=0;
while ($stat4 = fetch_object($res4))
if (accessible($stat4->id_usager, $stat4->id_initiation))
$nb++;
echo "<td bgcolor=\"#80FF80\"><a href=\"parcours.php?operation=8&id_initiation=$stat->id\">$nb</a></td>\n";
// nombre de sessions dans le futur
$req2 = "SELECT COUNT(id) AS nbses
FROM sessions
WHERE id_initiation=$stat->id
AND DATE_ADD(sessions.date, INTERVAL 0 DAY)>=\"$datefin\"
GROUP BY id_initiation";
$res2 = executeRequete($req2);
$stat2 = fetch_object($res2);
echo "<td bgcolor=\"#80FF80\"><a href=\"session.php?operation=4&id_initiation=$stat->id\">$stat2->nbses</a></td>\n";
echo "</tr>\n";
}
echo "</table>\n";
break;
//-----------------------------------------------------------------------------------------/
// CUMULS DES HEURES /
//-----------------------------------------------------------------------------------------/
case 4 : // HEURES -
echo "<table border='1' align='center'><tr><td></td>";
// Affichage de la ligne d'entte
for ($i=0; $i<1000; $i++)
if ($tarifs[$i])
echo "<th bgcolor=\"".$couleurtarif[$i]."\">$tarifs[$i]</th>";
echo "<th>ge<br>inconnu</th><th>- de 20 ans</th><th>20 40 ans</th><th>40 60 ans</th><th>+ de 60 ans</th><th bgcolor=\"#FFFF80\">Totaux ou<br>moyennes</th></tr>\n";
// Ligne nombre
echo "<tr><td>Nombre</td>";
$where = "WHERE DATE_ADD(usagers.date, INTERVAL 0 DAY)<=\"$datefin\"";
$req = "SELECT COUNT(*) AS nb, id_tarif
FROM usagers
LEFT JOIN credits ON credits.id_usager=usagers.id
$where GROUP BY id_tarif ORDER BY id_tarif";
$res = executeRequete($req);
$i=0;
while ($stat = fetch_object($res))
{
while ($i<$stat->id_tarif)
{
if ($tarifs[$i])
echo "<td></td>";
$i++;
}
echo "<td>$stat->nb</td>";
$i=$stat->id_tarif;
$i++;
}
for ($j=$i; $j<1000; $j++)
if ($tarifs[$j]>0)
echo "<td></td>";
$req = "SELECT COUNT(*) AS nb,
INTERVAL(YEAR(CURDATE())-YEAR(naissance), 20, 40, 60) as age
FROM usagers $where
GROUP BY age ORDER BY age"; //
//debug($req);
$res = executeRequete($req);
$i=-1;
while ($stat = fetch_object($res))
{
while ($i<$stat->age)
{
echo "<td></td>";
$i++;
}
echo "<td>$stat->nb</td>";
$i=$stat->age;
$i++;
}
for ($j=$i; $j<4; $j++) echo "<td></td>";
$req = "SELECT COUNT(*) AS nb
FROM usagers
$where"; //
$res = executeRequete($req);
while ($stat = fetch_object($res))
echo "<td>$stat->nb</td>";
// Ligne nombre d'h sessions
echo "</tr>\n<tr><td>Nb d'heures d'initiation</td>";
$where = "LEFT JOIN parcours ON usagers.id=parcours.id_usager
LEFT JOIN sessions ON parcours.id_session=sessions.id
WHERE parcours.etat IN ('effectu', 'en retard', 'problme')"
. " AND (DATE_ADD(sessions.date, INTERVAL 0 DAY)>=\"$datedeb\"
AND DATE_ADD(sessions.date, INTERVAL 0 DAY)<=\"$datefin\") ";
$req = "SELECT SUM(TIME_TO_SEC(sessions.fin)-TIME_TO_SEC(sessions.debut))/60 AS nb, id_tarif
FROM usagers
LEFT JOIN credits ON credits.id_usager=usagers.id
$where
GROUP BY id_tarif ORDER BY id_tarif";
$res = executeRequete($req);
$i=0;
while ($stat = fetch_object($res))
{
while ($i < $stat->id_tarif)
{
if ($tarifs[$i])
echo "<td></td>";
$i++;
}
echo "<td>".datetoheure(minute2heure($stat->nb))."</td>";
$i++;
}
for ($j=$i; $j<1000; $j++)
if ($tarifs[$j] > " ")
echo "<td></td>";
$req = "SELECT SUM(TIME_TO_SEC(fin)-TIME_TO_SEC(debut))/60 AS nb,
INTERVAL(YEAR(CURDATE())-YEAR(naissance), 20, 40, 60) as age
FROM usagers
LEFT JOIN credits ON credits.id_usager=usagers.id
$where
GROUP BY age ORDER BY age"; //
$res = executeRequete($req);
$i=-1;
while ($stat = fetch_object($res))
{
while ($i<$stat->age)
{
echo "<td></td>";
$i++;
}
echo "<td>".datetoheure(minute2heure($stat->nb))."</td>";
$i=$stat->age;
$i++;
}
for ($j=$i; $j<4; $j++) echo "<td></td>";
$req = "SELECT SUM(TIME_TO_SEC(fin)-TIME_TO_SEC(debut))/60 AS nb FROM usagers $where";
$res = executeRequete($req);
while ($stat = fetch_object($res))
echo "<td>".datetoheure(minute2heure($stat->nb))."</td>";
// Ligne nombre d'heures d'accs individuel total
echo "</tr>\n<tr><td>Nb d'heures accs individuel</td>";
$where = "LEFT JOIN utilisation_postes ON usagers.id=utilisation_postes.id_usager
WHERE (utilisation_postes.etat='reservation' OR utilisation_postes.etat='impromptue')"
. " AND (DATE_ADD(utilisation_postes.date, INTERVAL 0 DAY)>=\"$datedeb\"
AND DATE_ADD(utilisation_postes.date, INTERVAL 0 DAY)<=\"$datefin\") ";
$req = "SELECT SUM(TIME_TO_SEC(fin)-TIME_TO_SEC(debut))/60 AS nb, id_tarif
FROM usagers
LEFT JOIN credits ON credits.id_usager=usagers.id
$where GROUP BY id_tarif ORDER BY id_tarif";
$res = executeRequete($req);
$i=0;
while ($stat = fetch_object($res))
{
while ($i<$stat->id_tarif)
{
if ($tarifs[$i])
echo "<td></td>";
$i++;
}
echo "<td>".datetoheure(minute2heure($stat->nb))."</td>";
$i++;
}
for ($j=$i; $j<1000; $j++)
if ($tarifs[$j] > " ")
echo "<td></td>";
$req = "SELECT SUM(TIME_TO_SEC(fin)-TIME_TO_SEC(debut))/60 AS nb,
INTERVAL(YEAR(CURDATE())-YEAR(naissance), 20, 40, 60) as age
FROM usagers $where GROUP BY age ORDER BY age"; //
$res = executeRequete($req);
$i=-1;
while ($stat = fetch_object($res))
{
while ($i<$stat->age)
{
echo "<td></td>";
$i++;
}
echo "<td>".datetoheure(minute2heure($stat->nb))."</td>";
$i=$stat->age;
$i++;
}
for ($j=$i; $j<4; $j++) echo "<td></td>";
$req = "SELECT COUNT(*) AS nb FROM usagers $where";
$res = executeRequete($req);
while ($stat = fetch_object($res))
echo "<td>".datetoheure(minute2heure($stat->nb))."</td>";
echo "</tr></table>\n";
break;
//-----------------------------------------------------------------------------------------/
// EVOLUTION MENSUELLE /
//-----------------------------------------------------------------------------------------/
case 5 : // MOIS
$dyear = date("Y", strtotime($datedeb));
$dmonth = date("m", strtotime($datedeb));
$fyear = date("Y", strtotime($datefin));
$fmonth = date("m", strtotime($datefin));
echo "<table border='1' align='center'><tr><td></td>";
for ($an=$dyear; $an<=$fyear ; $an++)
{
if ($an==$dyear) $dmois=$dmonth; else $dmois=1;
if ($an==$fyear) $fmois=$fmonth; else $fmois=12;
for ($mois=$dmois; $mois<=$fmois; $mois++)
{
echo "<th>$an<br>".nommois($mois)."</th>";
$abscisses[]=$an." ".nommois($mois);
}
}
echo "</tr><tr bgcolor=\"".COULEUR_USAGERS."\"><th>Nb d'inscriptions</th>"; // nombre d'inscriptions par mois
for ($an=$dyear; $an<=$fyear ; $an++)
{
if ($an==$dyear) $dmois=$dmonth; else $dmois=1;
if ($an==$fyear) $fmois=$fmonth; else $fmois=12;
for ($mois=$dmois; $mois<=$fmois; $mois++)
{
$dated = date("Y-m-d",strtotime($mois."/01/".$an));
$mois1=$mois+1;
$datef = date("Y-m-d",strtotime($mois1."/01/".$an));
echo "<td>";
$req = "SELECT COUNT(*) AS nb FROM usagers
WHERE DATE_ADD(date, INTERVAL 0 DAY)>=\"$dated\"
AND DATE_ADD(date, INTERVAL 0 DAY)<\"$datef\"";
$res = executeRequete($req);
$i="";
if ($stat = fetch_object($res))
echo "$stat->nb";
echo "</td>";
}
}
echo "</tr><tr bgcolor=\"".COULEUR_SESSIONS."\"><th>Nb sessions</th>"; // nombre de sessions par mois
for ($an=$dyear; $an<=$fyear ; $an++)
{
if ($an==$dyear) $dmois=$dmonth; else $dmois=1;
if ($an==$fyear) $fmois=$fmonth; else $fmois=12;
for ($mois=$dmois; $mois<=$fmois; $mois++)
{
$dated = date("Y-m-d",strtotime($mois."/01/".$an));
$mois1=$mois+1;
$datef = date("Y-m-d",strtotime($mois1."/01/".$an));
echo "<td>";
$where = "WHERE sessions.date>=\"$dated\" AND sessions.date<\"$datef\" ";
$req = "SELECT COUNT(*) AS nb
FROM sessions
$where AND sessions.etat<>'annule'";
$res = executeRequete($req);
$i="";
if ($stat = fetch_object($res))
echo "$stat->nb";
echo "</td>";
}
}
echo "</tr><tr bgcolor=\"".COULEUR_SESSIONS."\"><th>Nb participants sessions</th>"; // nombre de participants aux sessions
for ($an=$dyear; $an<=$fyear ; $an++)
{
if ($an==$dyear) $dmois=$dmonth; else $dmois=1;
if ($an==$fyear) $fmois=$fmonth; else $fmois=12;
for ($mois=$dmois; $mois<=$fmois; $mois++)
{
$dated = date("Y-m-d",strtotime($mois."/01/".$an));
$mois1=$mois+1;
$datef = date("Y-m-d",strtotime($mois1."/01/".$an));
echo "<td>";
$where = "WHERE (sessions.date>=\"$dated\" AND sessions.date<\"$datef\") ";
$req = "SELECT COUNT(parcours.id_usager) AS nb FROM sessions
LEFT JOIN parcours ON parcours.id_session=sessions.id
$where AND sessions.etat<>'annule' AND parcours.etat IN ('effectu', 'en retard', 'problme')";
$res = executeRequete($req);
$i="";
if ($stat = fetch_object($res))
echo "$stat->nb";
echo "</td>";
}
}
echo "</tr><tr bgcolor=\"".COULEUR_SESSIONS."\"><th>Nb usagers diffrents<br>aux sessions</th>"; // nombre d'usagers diffrents dans l'accs individuel
for ($an=$dyear; $an<=$fyear ; $an++)
{
if ($an==$dyear) $dmois=$dmonth; else $dmois=1;
if ($an==$fyear) $fmois=$fmonth; else $fmois=12;
for ($mois=$dmois; $mois<=$fmois; $mois++)
{
$dated = date("Y-m-d",strtotime($mois."/01/".$an));
$mois1=$mois+1;
$datef = date("Y-m-d",strtotime($mois1."/01/".$an));
echo "<td>";
$where = "WHERE (sessions.date>=\"$dated\" AND sessions.date<\"$datef\") ";
$req = "SELECT * FROM sessions
LEFT JOIN parcours ON parcours.id_session=sessions.id
$where AND sessions.etat<>'annule' AND parcours.etat IN ('effectu', 'en retard', 'problme')
GROUP BY parcours.id_usager";
$res = executeRequete($req);
$i="";
if ($nb = num_rows($res))
echo "$nb";
echo "</td>";
}
}
echo "</tr><tr bgcolor=\"".COULEUR_SESSIONS."\"><th>Nb moyen d'usagers par session</th>"; // nombre d'usagers diffrents dans l'accs individuel
for ($an=$dyear; $an<=$fyear ; $an++)
{
if ($an==$dyear) $dmois=$dmonth; else $dmois=1;
if ($an==$fyear) $fmois=$fmonth; else $fmois=12;
for ($mois=$dmois; $mois<=$fmois; $mois++)
{
$dated = date("Y-m-d",strtotime($mois."/01/".$an));
$mois1=$mois+1;
$datef = date("Y-m-d",strtotime($mois1."/01/".$an));
echo "<td>";
$where = "WHERE sessions.date>=\"$dated\" AND sessions.date<\"$datef\" ";
$req = "SELECT COUNT(*) AS nb
FROM sessions
$where AND sessions.etat<>'annule'";
$res = executeRequete($req);
$stat = fetch_object($res);
$nbsessions=$stat->nb;
$req = "SELECT COUNT(parcours.id_usager) AS nb FROM sessions
LEFT JOIN parcours ON parcours.id_session=sessions.id
$where AND sessions.etat<>'annule' AND parcours.etat IN ('effectu', 'en retard', 'problme')";
$res = executeRequete($req);
$stat = fetch_object($res);
$nbpart=$stat->nb;
if ($nbpart>0)
$nbmoyenpartparsession=round($nbpart/$nbsessions,1);
echo "$nbmoyenpartparsession</td>";
}
}
echo "</tr><tr bgcolor=\"".COULEUR_UTILISATIONS."\"><th>Nb d'heures d'accs individuels</th>\n";
for ($an=$dyear; $an<=$fyear ; $an++)
{
if ($an==$dyear) $dmois=$dmonth; else $dmois=1;
if ($an==$fyear) $fmois=$fmonth; else $fmois=12;
for ($mois=$dmois; $mois<=$fmois; $mois++)
{
$dated = date("Y-m-d",strtotime($mois."/01/".$an));
$mois1=$mois+1;
$datef = date("Y-m-d",strtotime($mois1."/01/".$an));
echo "<td>";
$where = "WHERE date>=\"$dated\" AND date<\"$datef\" ";
$req = "SELECT SUM(TIME_TO_SEC(fin)-TIME_TO_SEC(debut))/60 AS nb
FROM utilisation_postes
$where AND etat IN ('rservation', 'impromptue')";
$res = executeRequete($req);
$i="";
if ($stat = fetch_object($res))
echo datetoheure(minute2heure($stat->nb));
echo "</td>";
}
}
echo "</tr><tr bgcolor=\"".COULEUR_UTILISATIONS."\"><th>Nb usagers diffrents<br>de l'accs individuel</th>"; // nombre d'usagers diffrents dans l'accs individuel
for ($an=$dyear; $an<=$fyear ; $an++)
{
if ($an==$dyear) $dmois=$dmonth; else $dmois=1;
if ($an==$fyear) $fmois=$fmonth; else $fmois=12;
for ($mois=$dmois; $mois<=$fmois; $mois++)
{
$dated = date("Y-m-d",strtotime($mois."/01/".$an));
$mois1=$mois+1;
$datef = date("Y-m-d",strtotime($mois1."/01/".$an));
echo "<td>";
$where = "WHERE date>=\"$dated\" AND date<\"$datef\" ";
$req = "SELECT *
FROM utilisation_postes
$where AND etat IN ('rservation', 'impromptue')
GROUP BY id_usager";
$res = executeRequete($req);
$i="";
if ($nb = num_rows($res))
echo $nb;
echo "</td>";
}
}
echo "</tr><tr bgcolor=\"".COULEUR_UTILISATIONS."\"><th>Nb heures ouvertures<br>en accs individuels</th>"; // nombre d'usagers diffrents dans l'accs individuel
for ($an=$dyear; $an<=$fyear ; $an++)
{
if ($an==$dyear) $dmois=$dmonth; else $dmois=1;
if ($an==$fyear) $fmois=$fmonth; else $fmois=12;
for ($mois=$dmois; $mois<=$fmois; $mois++)
{
$dated = date("Y-m-d",strtotime($mois."/01/".$an));
$mois1=$mois+1;
$datef = date("Y-m-d",strtotime($mois1."/01/".$an));
echo "<td>";
$where = "WHERE date>=\"$dated\" AND date<\"$datef\" ";
$req = "SELECT SUM(TIME_TO_SEC(fin) - TIME_TO_SEC(debut))/60 AS nb
FROM calendrier
$where AND ouverture='accs individuels'
GROUP BY id_localisation";
$res = executeRequete($req);
$i="";
$nbt=0;
if ($stat = fetch_object($res))
//$nbt+=$stat->nb;
echo datetoheure(minute2heure($stat->nb));
echo "</td>";
}
}
echo "</table>\n";
break;
//-----------------------------------------------------------------------------------------/
// AFFLUENCE HORAIRE /
//-----------------------------------------------------------------------------------------/
case 6 : // HORAIRES
// Condition interval de date demand.
$where = "(date>='$datedeb'
AND date<='$datefin')";
// Dbut du tableau
echo "<table border='1' align='center' bgcolor='#CCFFFF'><tr><td></td>";
// Ligne d'entte
for ($nojour=1; $nojour<=7; $nojour++)
echo "<th>".jourSemaine($nojour)."</th>";
echo "\n";
// Boucle des horaires
for ($heure=MINHORAIRE;
$heure<MAXHORAIRE;
$heure=additionHeure("00:$unitehoraire", $heure)
)
{
// Affichage de l'entte
echo "<tr><td>".datetoHeure($heure)."-".
datetoHeure(date("H:i:00", strtotime("+$unitehoraire minutes",
strtotime($heure))))."</td>\n";
// Boucle des jours
for ($nojour=1; $nojour<=7; $nojour++)
{
// calcul du nombre d'utilisations relles pour cette tranche horaire l.
$req1="SELECT COUNT(*) as nb
FROM utilisation_postes
WHERE (debut<='$heure' AND fin>'$heure')
AND WEEKDAY(date)=($nojour-1)
AND (etat<>'annule' AND etat<>'non tenue')
AND $where";
$res1=executeRequete($req1);
if ($utilisation=fetch_object($res1))
$nb1=$utilisation->nb;
else
$nb1=0;
// calcul du nombre d'ouvertures pour cette tranche horaire l.
$req2="SELECT COUNT(*) as nb
FROM calendrier
WHERE (debut<='$heure' AND fin>'$heure')
AND WEEKDAY(date)=($nojour-1)
AND ouverture='accs individuels'
AND $where";
$res2=executeRequete($req2);
if ($calendrier=fetch_object($res2))
$nb2=$calendrier->nb;
else
$nb2=0;
// Calcul du rapport d'utilisation
$coul="white";
if ($nb2>0)
{
$rapport=$nb1/$nb2;
$rouge = round(255 - min(255, max(0, $rapport*$rapport*8)));
$vert = round(min(255, max(20, $rapport/5*255)));
$hexa="000000".dechex($rouge*65536 + $vert*256);
$coul="#".substr($hexa, strlen($hexa)-6, 6);
}
else
$rapport="nc";
// Affichage des rsultats
if ($nb1==0 && $nb2==0)
echo "<td></td>\n";
else
printf("<td bgcolor='%s'>%u/%u= <b>%01.1f</b></td>\n", $coul, $nb1, $nb2, $rapport);
} // for $nojour
// Termine la ligne d'horaire
echo "</tr>";
} // for $heure
echo "</table>\n";
// Lgende
echo "<p>Le contenu de chaque cellule est constitu ainsi : <br>
(1)/(2)=(3)<br>
(1) : nombre d'utilisations de postes en accs individuels<br>
(2) : nombre de fois que l'accs individuel a t ouvert<br>
(3) : rsultat du ration de (1) sur (2).
Ce rsultat devrait tre rapproch du nombre
de postes accessibles en accs individuels.</p>\n";
break;
//-----------------------------------------------------------------------------------------/
// REPARTITION FREQUENTATION USAGERS
//-----------------------------------------------------------------------------------------/
case 7 : // USAGERS
{
// Est-ce pretinent ?
if (! defined("UTILISATIONS") || ! defined("USAGERS"))
{
echo $fctnonactive;
break;
}
// Calcul du nombre maxi d'usagers
$req2="SELECT id FROM usagers";
$res2=executeRequete($req2);
$nbmaxusagers=num_rows($res2);
// Condition interval de date demand.
$where = "(utilisation_postes.date>='$datedeb'
AND utilisation_postes.date<='$datefin')";
$where.=" AND etat<>'annule' AND id_usager>0";
// Calcul de l'usager le plus grand utilisateur de l'accs individuel
$req1="SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(fin)-TIME_TO_SEC(debut))) AS nbmaxheure
FROM utilisation_postes
WHERE $where
GROUP BY id_usager
ORDER BY nbmaxheure DESC";
$res1=executeRequete($req1);
$stat1=fetch_object($res1);
//if ($nbmaxheure<$stat1->nbmaxheure)
$nbmaxheure=$stat1->nbmaxheure;
// Convertir en nombre de minutes (pour faciliter tous les calculs
$nbmaxheure=heure2minute($nbmaxheure);
// Dcouper en dciles, on contruit le tableau des valeurs
$decile=0;
$ndecile=1;
$ntotdeciles=6;
// Nombre d'usagers n'ayant jamais utilis les postes individuels
// pendant cette priode
$req2="SELECT COUNT(*) AS nb
FROM usagers
LEFT JOIN utilisation_postes ON (usagers.id=id_usager)
WHERE (utilisation_postes.id IS NULL)";
$res2=executeRequete($req2);
$stat2=fetch_object($res2);
$valeurs=0+$stat2->nb;
// Les utilisateurs
$req3="SELECT id_usager, SEC_TO_TIME(SUM(TIME_TO_SEC(fin)-TIME_TO_SEC(debut))) AS nbmaxheure
FROM usagers
LEFT JOIN utilisation_postes ON (usagers.id=id_usager)
WHERE $where
GROUP BY usagers.id
ORDER BY nbmaxheure";
$res3=executeRequete($req3);
// Construction du tableau en mme temps
$i=0; // indice des lignes
$j=0; // indicie des colonnes
$tableau[$i][$j]["contenu"]="<b>Graphe</b>";
$j++;
$tableau[$i][$j]["contenu"]="<b>Utilisateur<br>de l'accs<br>individuel jusqu'</b>";
$j++;
$tableau[$i][$j]["contenu"]="<b>Nombre<br>d'usagers<br>concerns</b>";
$j=0; $i++;
$n=0;
echo "<table align='center' border='1'>\n";
while ($stat3=fetch_object($res3))
{
$nbminute=heure2minute($stat3->nbmaxheure);
while ($nbminute>$decile)
{ // On passe au dcile suivant
$tableau[$i][$j]["contenu"]=traitu(1+round($valeurs/$nbmaxusagers*40*$ntotdeciles));
$tableau[$i][$j]["param"]=" align='center' valign='bottom'";
$j++;
$tableau[$i][$j]["contenu"]=datetoheure(minute2heure($decile));
$tableau[$i][$j]["param"]=" align='right'";
$j++;
$tableau[$i][$j]["contenu"]=" ".$valeurs;
$tableau[$i][$j]["param"]=" align='right'";
$j=0; $i++;
$n+=$valeurs; // calcul du total
$ndecile++;
$valeurs=0;
$decile+=$nbmaxheure/$ntotdeciles;
}
$valeurs++;
}
$n+=$valeurs;
$tableau[$i][$j]["contenu"]=traitu(round($valeurs/$nbmaxusagers*40*$ntotdeciles));
$tableau[$i][$j]["param"]=" align='center' valign='bottom'";
$j++;
$tableau[$i][$j]["contenu"]=datetoheure(minute2heure($decile));
$tableau[$i][$j]["param"]=" align='right'";
$j++;
$tableau[$i][$j]["contenu"]=$valeurs;
$tableau[$i][$j]["param"]=" align='right'";
$j=0; $i++;
$j++;
$tableau[$i][$j]["contenu"]="Total";
$tableau[$i][$j]["param"]=" align='right'";
$j++;
$tableau[$i][$j]["contenu"]=$n;
$tableau[$i][$j]["param"]=" align='right'";
// Affichage du tableau
//$sens="transpos"; //normal ou transpos";
Affiche_tableau($tableau, "transpos");
unset($tableau);
echo "</table>\n";
// Mme chose avec les activits collectives
// Condition interval de date demand.
$where = "(sessions.date>='$datedeb' AND sessions.date<='$datefin') AND (sessions.etat<>'annule')";
$where.= " AND ";
$where.= "(parcours.etat<>'absent' AND parcours.etat<>'indispensable' AND parcours.etat<>'conseill')";
/*
SELECT id_usager, SEC_TO_TIME(SUM(TIME_TO_SEC(fin)-TIME_TO_SEC(debut))) AS nbmaxheure FROM sessions LEFT JOIN parcours ON (sessions.id=id_session) WHERE (sessions.etat<>'annule') AND (parcours.etat<>'absent') GROUP BY id_usager ORDER BY nbmaxheure DESC
*/
// Calcul de l'usager le plus grand utilisateur des activits collectives
$req1="SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(fin)-TIME_TO_SEC(debut))) AS nbmaxheure, id_usager
FROM sessions
LEFT JOIN parcours ON (sessions.id=id_session)
WHERE $where
GROUP BY id_usager ORDER BY nbmaxheure DESC";
$res1=executeRequete($req1);
$stat1=fetch_object($res1);
//if ($nbmaxheure<$stat1->nbmaxheure)
$nbmaxheure=$stat1->nbmaxheure;
//debug($nbmaxheure." - ".$stat1->id_usager);
// Convertir en nombre de minutes (pour faciliter tous les calculs
$nbmaxheure=heure2minute($nbmaxheure);
//debug($nbmaxheure);
// Dcouper en dciles, on contruit le tableau des valeurs
$decile=0;
$ndecile=1;
$ntotdeciles=6;
// Nombre d'usagers ayant suivi des activits collectives
$nbusagersactcoll=num_rows($res1);
// Nombre d'usagers n'ayant jamais t en activits collectives pendant la priode...
// Nombre d'usagers
$req2="SELECT COUNT(id) AS nb_usagers FROM usagers";
$res2=executeRequete($req2);
$stat2=fetch_object($res2);
$valeurs=$stat2->nb_usagers-$nbusagersactcoll; $n=0;
// Les utilisateurs
$req3="SELECT id_usager, SEC_TO_TIME(SUM(TIME_TO_SEC(fin)-TIME_TO_SEC(debut))) AS nbmaxheure
FROM usagers
LEFT JOIN parcours ON (usagers.id=id_usager)
LEFT JOIN sessions ON (sessions.id=id_session)
WHERE $where
GROUP BY usagers.id
ORDER BY nbmaxheure";
$res3=executeRequete($req3);
// Construction du tableau en mme temps
$i=0; // indice des lignes
$j=0; // indicie des colonnes
$tableau[$i][$j]["contenu"]="<b>Graphe</b>";
$j++;
$tableau[$i][$j]["contenu"]="<b>Bnficiaire<br>d'acitivits<br>collectives jusqu'</b>";
$j++;
$tableau[$i][$j]["contenu"]="<b>Nombre<br>d'usagers<br>concerns</b>";
$j=0; $i++;
$n=0;
echo "<table align='center' border='1'>\n";
while ($stat3=fetch_object($res3))
{
$nbminute=heure2minute($stat3->nbmaxheure);
while ($nbminute>$decile)
{ // On passe au dcile suivant
//$tableau[$i][$j]["param"]= "";
$tableau[$i][$j]["contenu"]=traitu(1+round($valeurs/$nbmaxusagers*40*$ntotdeciles));
$tableau[$i][$j]["param"]=" align='center' valign='bottom'";
$j++;
$tableau[$i][$j]["contenu"]=datetoheure(minute2heure($decile));
$tableau[$i][$j]["param"]=" align='right'";
$j++;
$tableau[$i][$j]["contenu"]=" ".$valeurs;
$tableau[$i][$j]["param"]=" align='right'";
$j=0; $i++;
$n+=$valeurs; // calcul du total
$ndecile++;
$valeurs=0;
$decile+=$nbmaxheure/$ntotdeciles;
}
$valeurs++; //$n++;
}
$n+=$valeurs;
$tableau[$i][$j]["contenu"]=traitu(round($valeurs/$nbmaxusagers*40*$ntotdeciles));
$tableau[$i][$j]["param"]=" align='center' valign='bottom'";
$j++;
$tableau[$i][$j]["contenu"]=datetoheure(minute2heure($decile));
$tableau[$i][$j]["param"]=" align='right'";
$j++;
$tableau[$i][$j]["contenu"]=$valeurs;
$tableau[$i][$j]["param"]=" align='right'";
$j=0; $i++;
$j++;
$tableau[$i][$j]["contenu"]="Total";
$tableau[$i][$j]["param"]=" align='right'";
$j++;
$tableau[$i][$j]["contenu"]=$n;
$tableau[$i][$j]["param"]=" align='right'";
// Affichage du tableau
//$sens="transpos"; //normal ou transpos";
Affiche_tableau($tableau, "transpos");
unset($tableau);
echo "</table>\n";
break;
}
//-----------------------------------------------------------------------------------------/
// INFORMATIONS SUR LES USAGERS ENREGISTRES
//-----------------------------------------------------------------------------------------/
case 8 : // USAGERS ENREGISTRES
{
// Est-ce pretinent ?
if (! defined("USAGERS"))
{
echo $fctnonactive;
break;
}
echo "<p>La slection des dates n'a pas d'effet sur les statistiques suivantes.</p>\n";
echo "<p>Les usagers inscrits dans ";
switch ($lieuv[0])
{
case "V" :
$where="AND CONCAT(\"V\",structures.ville)=\"$lieuv\"";
echo "la ville de ".substr($lieuv,1);
break;
case "S" :
$where="AND CONCAT(\"S\",structures.id)=\"$lieuv\"";
echo "la structure ".structure(substr($lieuv,1));
break;
default :
$where="";
echo "n'importe quelle structure";
break;
}
echo "</p>\n";
// Tarifs
if (defined("CREDITS") && defined("TARIFS"))
{
echo "<table border='1' align='center' bgcolor='#CCFFFF'>\n
<tr><th>$starifs</th><th>$snbusagers</th>";
$req="SELECT id_tarif, COUNT(id_usager) AS nb
FROM credits
LEFT JOIN usagers ON usagers.id=credits.id_usager
LEFT JOIN structures ON structures.id=usagers.id_structure_provenance
WHERE (0=0) $where
GROUP BY id_tarif ORDER BY id_tarif";
$res=executeRequete($req); $itotal=0;
while ($nbu=fetch_object($res))
{
echo "<tr></tr><th bgcolor=\"{$couleurtarif[$nbu->id_tarif]}\">{$tarifs[$nbu->id_tarif]}</th>";
echo "<td align=\"right\">$nbu->nb</td></tr>\n";
$itotal+=$nbu->nb;
}
echo "<tr><th>$snbtotal</th><td align=\"right\">$itotal</td></tr>\n";
echo "</table>\n<br />";
}
// Ages
echo "<table border='1' align='center' bgcolor='#CCFFFF'>
<tr><th>$sages</th><th>$smasculin</th><th>$sfeminin</th><th>inconnu</th><th>$snbusagers</th>\n";
$req="SELECT COUNT(usagers.id) AS nb,
IF (YEAR(naissance)=0, 4, INTERVAL(YEAR(CURDATE())-YEAR(naissance), 20, 40, 60)) as age,
IFNULL(sexe, \"x\") AS sexe
FROM usagers
LEFT JOIN structures ON structures.id=usagers.id_structure_provenance
WHERE (0=0) $where
GROUP BY age, sexe ORDER BY age, sexe DESC";
$res=executeRequete($req); $itotal=0;
debug($req);
$suivant=TRUE;
$asexe=array ("m", "f", "");
for ($iage=0; $iage<=4; $iage++)
{
echo "<tr></tr><th>{$sintervalesages[$iage]}</th>";
$itotala=0;
foreach ($asexe as $ssexe)
{
if ($suivant) $nbu=fetch_object($res);
if ($suivant=(($nbu->sexe==$ssexe) && ($nbu->age==$iage)))
{
echo "<td align=\"right\">{$nbu->nb}</td>\n";
$itotala+=$nbu->nb;
$itotals[$ssexe]+=$nbu->nb;
}
else
echo "<td></td>\n";
} // for $sexe
echo "<td align=\"right\">$itotala</td>\n";
$itotal+=$itotala;
echo "</tr>\n";
} // for $age
echo "<tr><th>$snbtotal</th>";
foreach ($asexe as $ssexe)
echo "<td align=\"right\">{$itotals[$ssexe]}</td>\n";
echo "<td align=\"right\">$itotal</td></tr>\n";
echo "</table>\n<br />";
break;
} // case 8
} // switch
echo cadre_fin();
require("basdepage.inc.php");
echo "</body></html>\n";
require("footer.inc.php");
?>