Filtrage statistiques par semaine

Décrivez les améliorations que vous souhaiteriez pour les prochaines versions.
Répondre
MrFranck
Gsup LEVEL 1
Messages : 19
Enregistré le : mar. 19 juil. 2016 23:17

Bonjour,

Il serait intéressant de pouvoir afficher les statistiques par semaine (Semaine en cours, semaine dernière, ...).

Est-ce qu'un tel filtre est prévu dans les prochaines mises a jour?

Cordialement

Franck
Serveur: GestSup: 3.1.9 | OS: Debian 3.16.0.4 | Apache: 2.4.10 | MySQL: 5.5.49-0| PHP: 5.6.23-0
MrFranck
Gsup LEVEL 1
Messages : 19
Enregistré le : mar. 19 juil. 2016 23:17

Bonjour,

J'ai commencé a me pencher sur le sujet

J' ai ajouté une fonction dans stat.php qui retourne la date de début et fin de semaine:
Source: http://stackoverflow.com/questions/4861 ... weeknumber

Code : Tout sélectionner

function getStartAndEndDate($fweek, $fyear)
{
    $time = strtotime("1 January $fyear", time());
    $day = date('w', $time);
    $time += ((7*$fweek)+1-$day)*24*3600;
    $return[0] = date('Y-n-j', $time);
    $time += 6*24*3600;
    $return[1] = date('Y-n-j', $time);
    return $return;
}
Ainsi que la variable "semaine"

Code : Tout sélectionner

if ($_POST['week']=="") $_POST['week']=date('W');
J'ai ajouté dans ticket_stat.php le menu déroulant semaines (en me basant sur le modèle du menu mois):

Code : Tout sélectionner

<select name="week" onchange=submit()>
   <option value="%" <?php if ($_POST['week'] == '%')echo "selected" ?>>Toutes les semaines</option>
   <option value="01"<?php if ($_POST['week'] == '1')echo "selected" ?>>Semaine 01</option>
   <option value="02"<?php if ($_POST['week'] == '2')echo "selected" ?>>Semaine 02</option>
   <option value="03"<?php if ($_POST['week'] == '3')echo "selected" ?>>Semaine 03</option>
   ...
   <option value="52"<?php if ($_POST['week'] == '52')echo "selected" ?>>Semaine 52</option>
Et je me suis attaqué au premier graphe:

Dans line_tickets.php

J'ai d'abord changé les conditions des autres recherches pour qu'elles prennent en compte le nouveau menu (semaine):

Code : Tout sélectionner

//query for year selection
if (($_POST['week'] == '%') && ($_POST['month'] == '%') && ($_POST['year']!=='%'))

Code : Tout sélectionner

//query for month selection
else if (($_POST['week'] == '%') && ($_POST['month']!='%'))
Puis j'ai crée la condition de recherche sur la semaine

Code : Tout sélectionner

// MODIFICATION: recherche sur la semaine
else if ($_POST['week']!='%')
Elle ressemble beaucoup a celle sur le mois, voici les points que j ai modifiés:
Je définis mes deux dates (debut et fin de la semaine):

Code : Tout sélectionner

$dateDebut = getStartAndEndDate($_POST['week'], $_POST['year'])[0];
$dateFin = getStartAndEndDate($_POST['week'], $_POST['year'])[1];
Pour les insérer dans la requete sql :

Code : Tout sélectionner

$query1=$db->query("SELECT day(date_create) as x,count(*) as y FROM `tincidents` WHERE technician LIKE '$_POST[tech]' and criticality like '$_POST[criticality]' and type LIKE '$_POST[type]' and category LIKE '$_POST[category]' and date_create not like '0000-00-00 00:00:00'  and (date_create BETWEEN '$dateDebut' AND '$dateFin' ) AND disable='0' group by x ");
	$query2=$db->query("SELECT day(date_res) as x,count(*) as y FROM `tincidents` WHERE technician LIKE '$_POST[tech]' and criticality like '$_POST[criticality]' and type LIKE '$_POST[type]' and category LIKE '$_POST[category]' and date_res not like '0000-00-00 00:00:00' and (date_res BETWEEN '$dateDebut' AND '$dateFin') AND disable='0' group by x ");
J'ai encore quelques problèmes pour insérer le numéro de semaine dans le titre du graphe, mais sinon, ca fait le taf.

J'aimerais avoir quand même vos avis avant de modifier les graphes suivants :)

Si quelqu'un a des critiques, des suggestions ou alors une idée pour mieux faire, je suis preneur! :mrgreen:

Merci d'avance

Franck
Serveur: GestSup: 3.1.9 | OS: Debian 3.16.0.4 | Apache: 2.4.10 | MySQL: 5.5.49-0| PHP: 5.6.23-0
Répondre