user;
$m=new mysql();
//détermination du participant
if(!empty($_REQUEST['id_utilisateur']))
{
$TheRepeatedParam="id_utilisateur=".$_REQUEST['id_utilisateur'];
$id_utilisateur=$_REQUEST['id_utilisateur'];
}
else $id_utilisateur=$u['id'];
//$l=$m->select("reponses","id,choix,sessions,id_engagements,","id_utilisateurs=".$id_utilisateur."");
//Obtenir la liste des réponses
$q="select reponses.id as rep,
reponses.audit,
engagements.id as eng,
engagements.importances,
referentiels.id as ref,
referentiels.nom
from reponses INNER join
(engagements INNER join referentiels on engagements.id_referentiels=referentiels.id)
on reponses.id_engagements=engagements.id
where reponses.id_utilisateurs=".$id_utilisateur;
$l=$m->select_str($q);
//obtenir la liste des référentiels destinés à l'utilisateur
$q2="select referentiels.id, referentiels.nom
from referentiels
INNER JOIN l_ref_users on referentiels.id=l_ref_users.id_referentiels
where l_ref_users.id_utilisateurs=".$id_utilisateur." order by referentiels.nom";
$l2=$m->select_str($q2);
/*
générer un tableau qui classe les résultats par session et référentiel :
-séparer les référentiels
-séparer les sessions
-calculer le nombre total d'engagements par référentiel
-indiquer le nombre d'engagements répondus
-repérer le nombre d'engagements répondu pour chaque type de réponse (oui, non, inapplicable)
-indiquer le nombre de réponses oui dans chaque type de priorité
*/
//initialisation des variables
unset($res);
unset($outtab);
unset($globalscore);
foreach($l2 as $e)//liste de tous les référentiels
{
$ref[$e['id']]=$e['nom'];
//initialisation des données
$res[$e['id']][1]['o']=0;
$res[$e['id']][1]['n']=0;
$res[$e['id']][1]['np']=0;
$res[$e['id']][2]['o']=0;
$res[$e['id']][2]['n']=0;
$res[$e['id']][2]['np']=0;
}
foreach($l as $e)//ajouter les types de réponses à chaque priorité, en séparant les sessions et les référentiels
{
$res[$e['ref']][$e['importances']][$e['audit']]++;
}
if(is_array($ref))
{
$ref=array_unique($ref);
foreach($ref as $k=>$r)//déterminer le nombre d'engagements total par référentiel et ensuite par priorité
{
$uniq=$m->select("engagements","count(*) as c","id_referentiels=".$k);
$nbeng[$r]["t"]=$uniq[0]['c'];
$nbeng[$k]["t"]=$uniq[0]['c'];
$uniq=$m->select("engagements","count(*) as c","importances=1 and id_referentiels=".$k);
$nbeng[$r]["1"]=$uniq[0]['c'];
$nbeng[$k]["1"]=$uniq[0]['c'];
$uniq=$m->select("engagements","count(*) as c","importances=2 and id_referentiels=".$k);
$nbeng[$r]["2"]=$uniq[0]['c'];
$nbeng[$k]["2"]=$uniq[0]['c'];
//~ $u=$m->select("engagements","count(*) as c","importances=3 and id_referentiels=".$k);
//~ $nbeng[$r]["3"]=$u[0]['c'];
}
}
if(is_array($res))
{
//liste des id d'audits dans chaque référentiels pour cet utilisateur
$q3="select id,id_referentiels from audits where id_auditeur=".$u['id']." and id_utilisateurs=".$id_utilisateur;
$l3=$m->select_str($q3);
foreach($l3 as $dataaudits) $listeaudits[$dataaudits['id_referentiels']]=$dataaudits['id'];
//construisons le tableau de sortie outtab
foreach($res as $numref=>$referentiel)
{
if ($u['statuts']=='animateur')$outtab[$numref]["nom"]="".$ref[$numref]."";//le référentiel
else $outtab[$numref]["nom"]=$ref[$numref];//le référentiel
$nbtoto=0;$nbtotn=0;$nbtotnp=0;//initialisation des réponses par type
for($noimport=1;$noimport<3;$noimport++)
{
$importance=$referentiel[$noimport];
$nboui=$importance['o']?$importance['o']:"0"; //récupération du nombre de oui pour affichage
$nbnon=$importance['n']?$importance['n']:"0"; //récupération du nombre de non pour affichage
$nbnp=$importance['np']?$importance['np']:"0"; //récupération du nombre de np pour affichage
$nbrep[$noimport]=0;//réinitialisation du nombre de réponse pour cette importance
if($importance['o'])$nbrep[$noimport]+=(int)$importance['o']; //calcul du
if($importance['n'])$nbrep[$noimport]+=(int)$importance['n']; //nombre de
//if($importance['np'])$nbrep[$noimport]+=(int)$importance['np']; //réponses dans cette priorité
if($importance['o'])$nbtoto+=(int)$importance['o'];//nombre de oui au total
if($importance['n'])$nbtotn+=(int)$importance['n'];//nombre de non au total
if($importance['np'])$nbtotnp+=(int)$importance['np'];//nombre d'inapplicables au total
if(empty($nbrep[$noimport]))(int)$nbrep[$noimport]="0";//si on a un nb de réponses nul dans une priorité
$nbengp=$nbeng[$numref][$noimport] - (int)$importance['np'];//nombre total d'engagements de cette priorité
if ($nbengp)$txrep=round($nboui*100/$nbengp,1);else $txrep="-";//calcul du taux de réponses positives sur l'ensembles des engagements d'une priorité
$outtab[$numref]["score"].="
"
." ".$txrep."% ; ";
# foreach($importance as $choix=>$nbchoix)
$globalscore["nbengp".$noimport]+=$nbengp;
$globalscore["nboui".$noimport]+=$nboui;
$globalscore["nbnon".$noimport]+=$nbnon;
$globalscore["nbnp".$noimport]+=$nbnp;
$globalscore["nbrep".$noimport]+=$nbrep[$noimport];
//~ $globalscore["txrep".$noimport]+=$txrep;
}
$nbtotrep=(int)$nbrep['1']+(int)$nbrep['2']+(int)$nbrep['3']-$nbtotnp;//nombre de réponses totales sans les inapplicables
$nbtoteng=$nbeng[$numref]['t']; //récupération du nb total d'engagements selon la query tout en haut
$outtab[$numref]["score"].="Total : "
.$nbtoto."/".($nbtoteng-$nbtotnp)."";
if($nbtotnp)$outtab[$numref]["score"].=" (+".$nbtotnp." inappl.)";
$globalscore["nbtoto"]+=$nbtoto;
$globalscore["nbtotn"]+=$nbtotn;
$globalscore["nbtotnp"]+=$nbtotnp;
$globalscore["nbtoteng"]+=$nbtoteng;
}
$outtab["Global"]["nom"]="Total";//le référentiel
if ($globalscore["nbengp1"]) $globalscore["txrep1"]=round($globalscore["nboui1"]*100/$globalscore["nbengp1"],1);else $globalscore["txrep1"]="-";//calcul du taux de réponses positives sur l'ensembles des engagements d'une priorité
if ($globalscore["nbengp2"]) $globalscore["txrep2"]=round($globalscore["nboui2"]*100/$globalscore["nbengp2"],1);else $globalscore["txrep2"]="-";//calcul du taux de réponses positives sur l'ensembles des engagements d'une priorité
$outtab["Global"]["score"]="
"
." ".$globalscore["txrep1"]."% ; ";
$outtab["Global"]["score"].="
"
." ".$globalscore["txrep2"]."% ; ";
$outtab["Global"]["score"].="Total : "
.$globalscore["nbtoto"]."/".($globalscore["nbtoteng"]-$globalscore["nbtotnp"])." (+".$globalscore["nbtotnp"]." inappl.)";
if($globalscore["nbtoto"]) //on n'affiche que si on a des audits déjà remplis
{
$table=new sorttable("tab_scores");
$table->titles=array("Référentiel", "Score");
$table->datas=$outtab;
print "
Pas de score d'audit pour l'instant
"; } else print "Pas de score d'audit pour l'instant
"; ?>