New file |
0,0 → 1,1085 |
<?php |
/** |
* Service fournissant des urls vers des images de graphiques sur les statistiques de l'application CEL. |
* Encodage en entrée : utf8 |
* Encodage en sortie : utf8 |
* |
* Cas d'utilisation : |
* /CelStatistique/TypeDeGraph : retourne le graphique demandé |
* Paramêtres : |
* serveur=[0-9] : retourne le graphique demandé sur le serveur numéro 0 à 9 (voir http://code.google.com/intl/fr/apis/chart/docs/making_charts.html#enhancements ) |
* |
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org> |
* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt> |
* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt> |
* @version $Id$ |
* @copyright 2009 |
*/ |
class CelStatistique extends Cel { |
|
/** |
* Méthode appelée avec une requête de type GET. |
*/ |
public function getElement($param) { |
$graph = null; |
$serveur = ''; |
|
if (isset($param[0])) { |
$graph_demande = array_shift($param); |
$methode = 'get'.$graph_demande; |
if (method_exists($this, $methode)) { |
$graph = $this->$methode($param); |
} else { |
$this->messages[] = "Ce type de graphique '$graph_demande' n'est pas disponible."; |
} |
} else { |
$this->messages[] = "Le premier paramêtre du service CEL Statistique doit correspondre au type de graphique."; |
} |
|
if (!is_null($graph)) { |
$serveur = (isset($_GET['serveur']) && preg_match('/^[0-9]$/', $_GET['serveur'])) ? $_GET['serveur'].'.' : ''; |
$url = "http://{$serveur}chart.apis.google.com/chart"; |
$contexte = stream_context_create( |
array('http' => array( |
'method' => 'POST', |
'content' => http_build_query($graph)))); |
$image = file_get_contents($url, false, $contexte); |
$this->envoyer($image, 'image/png', null, false); |
} else { |
$info = 'Un problème est survenu : '.print_r($this->messages, true); |
$this->envoyer($info); |
} |
} |
|
private function getEvolImgLieesParMois($param) { |
$utilisateur = isset($_GET['utilisateur']) ? $this->bdd->quote($_GET['utilisateur']) : null; |
|
// Récupération des données |
$requete = "SELECT DATE_FORMAT(ci_meta_date_ajout, '%Y%m') AS periode, COUNT(ci_id_image) AS nbre ". |
"FROM cel_obs_images LEFT JOIN cel_images ON (coi_ce_image = ci_id_image) ". |
"WHERE ci_meta_date_ajout != '0000-00-00 00:00:00' ". |
((isset($utilisateur)) ? " AND ci_ce_utilisateur = $utilisateur " : ''). |
'GROUP BY periode '. |
'ORDER BY periode '; |
$resulats = $this->executerRequete($requete); |
|
$img_totale = array(); |
foreach ($resulats as $info) { |
$img_totale[$info['periode']] = $info['nbre']; |
} |
|
// Trie des dates pour les étiquettes des axes |
$dates = array(); |
$annees = array(); |
$les_mois = array(); |
$pas = 3; // intervalle de mois entre deux étiquettes |
$periode = 0; |
$cumul = 0; |
$img_totale_cumul = array(); |
foreach ($img_totale as $annee_mois => $nbre) { |
$annee = substr($annee_mois, 0, 4); |
$mois = substr($annee_mois, 4, 2); |
$mois_fmt_B = strftime('%b', strtotime("1999-$mois-01")); |
$cumul += $nbre; |
$img_totale_cumul[$annee_mois] = $cumul; |
|
if (!isset($dates[$annee][$mois])) { |
$annees[] = (!isset($dates[$annee]) ? $annee : ''); |
$les_mois[] = is_int($periode++ / $pas) ? $mois_fmt_B : ''; |
// Ajouter au tableau dates tjrs à la fin |
$dates[$annee][$mois] = 1; |
} |
} |
|
// Post traitement des données |
$titre = "Évolution des images liées aux observations par mois"; |
$valeurs_y = implode(',', $img_totale); |
$valeurs_r = implode(',', $img_totale_cumul); |
$valeurs_max_y = (count($img_totale) > 0 ) ? max($img_totale) : 0; |
$valeurs_max_r = (count($img_totale_cumul) > 0 ) ? max($img_totale_cumul) : 0; |
$y_val_fin = $valeurs_max_y; |
$y_pas = round(($valeurs_max_y / 6), 0); |
$r_val_fin = $valeurs_max_r; |
$r_pas = round(($valeurs_max_r / 6), 0); |
$etiquettes_x1 = implode('|', $les_mois); |
$etiquettes_x2 = implode('|', $annees); |
$etiquettes_y = 'Images'; |
$etiquettes_r2 = 'Cumul'; |
|
// Construire de l'url de l'image |
$graph = array('cht' => 'lc', |
'chtt' => $titre, |
'chs' => '600x200', |
'chco' => '007F00,99CC00', |
'chd' => 't:'.$valeurs_y.'|'.$valeurs_r, |
'chds' => "0,$valeurs_max_y,0,$valeurs_max_r", |
'chxt' => 'y,y,x,x,r,r', |
'chxl' => '1:|'.$etiquettes_y.'|3:|'.$etiquettes_x2.'|2:|'.$etiquettes_x1.'|5:|'.$etiquettes_r2, |
'chxp' => '1,50|3,0|5,50', |
'chxr' => "0,0,$y_val_fin,$y_pas|4,0,$r_val_fin,$r_pas", |
'chm' => 'N ** ,000000,0,-1,8,1.0,ht', |
'chxs' => '0,007F00|1,007F00|4,99CC00|5,99CC00'); |
return $graph; |
} |
|
private function getEvolImgParMois($param) { |
$utilisateur = isset($_GET['utilisateur']) ? $this->bdd->quote($_GET['utilisateur']) : null; |
|
// Récupération des données |
$requete = "SELECT DATE_FORMAT(ci_meta_date_ajout, '%Y%m') AS periode, COUNT(ci_id_image) AS nbre ". |
"FROM cel_images ". |
"WHERE ci_meta_date_ajout != '0000-00-00 00:00:00' ". |
((isset($utilisateur)) ? " AND ci_ce_utilisateur = $utilisateur " : ''). |
'GROUP BY periode '. |
'ORDER BY periode '; |
$resulats = $this->executerRequete($requete); |
|
$img_totale = array(); |
foreach ($resulats as $info) { |
$img_totale[$info['periode']] = $info['nbre']; |
} |
|
// Trie des dates pour les étiquettes des axes |
$dates = array(); |
$annees = array(); |
$les_mois = array(); |
$pas = 3; // intervalle de mois entre deux étiquettes |
$periode = 0; |
$cumul = 0; |
$img_totale_cumul = array(); |
foreach ($img_totale as $annee_mois => $nbre) { |
$annee = substr($annee_mois, 0, 4); |
$mois = substr($annee_mois, 4, 2); |
$mois_fmt_B = strftime('%b', strtotime("1999-$mois-01")); |
$this->debug[] = $mois."/".$mois_fmt_B; |
$cumul += $nbre; |
$img_totale_cumul[$annee_mois] = $cumul; |
|
if (!isset($dates[$annee][$mois])) { |
$annees[] = (!isset($dates[$annee]) ? $annee : ''); |
$les_mois[] = is_int($periode++ / $pas) ? $mois_fmt_B : ''; |
// Ajouter au tableau dates tjrs à la fin |
$dates[$annee][$mois] = 1; |
} |
} |
|
// Post traitement des données |
$titre = "Évolution du dépôt d'images par mois"; |
$valeurs_y = implode(',', $img_totale); |
$valeurs_r = implode(',', $img_totale_cumul); |
$valeurs_max_y = (count($img_totale) > 0 ) ? max($img_totale) : 0; |
$valeurs_max_r = (count($img_totale_cumul) > 0 ) ? max($img_totale_cumul) : 0; |
$y_val_fin = $valeurs_max_y; |
$y_pas = round(($valeurs_max_y / 6), 0); |
$r_val_fin = $valeurs_max_r; |
$r_pas = round(($valeurs_max_r / 6), 0); |
$etiquettes_x1 = implode('|', $les_mois); |
$etiquettes_x2 = implode('|', $annees); |
$etiquettes_y = 'Images'; |
$etiquettes_r2 = 'Cumul'; |
|
// Construire de l'url de l'image |
$graph = array('cht' => 'lc', |
'chtt' => $titre, |
'chs' => '600x200', |
'chco' => '007F00,99CC00', |
'chd' => 't:'.$valeurs_y.'|'.$valeurs_r, |
'chds' => "0,$valeurs_max_y,0,$valeurs_max_r", |
'chxt' => 'y,y,x,x,r,r', |
'chxl' => '1:|'.$etiquettes_y.'|3:|'.$etiquettes_x2.'|2:|'.$etiquettes_x1.'|5:|'.$etiquettes_r2, |
'chxp' => '1,50|3,0|5,50', |
'chxr' => "0,0,$y_val_fin,$y_pas|4,0,$r_val_fin,$r_pas", |
'chm' => 'h,C3C3C3,0,0.5,1,-1|N ** ,000000,0,-1,8,1.0,ht', |
'chxs' => '0,007F00|1,007F00|4,99CC00|5,99CC00'); |
return $graph; |
} |
|
private function getEvolImgParMoisGlissant($param) { |
$utilisateur = isset($_GET['utilisateur']) ? $this->bdd->quote($_GET['utilisateur']) : null; |
// Récupération des données |
$requete = "SELECT DATE_FORMAT(ci_meta_date_ajout, '%Y%m%d') AS periode, COUNT(ci_id_image) AS nbre ". |
"FROM cel_images ". |
"WHERE ci_meta_date_ajout != '0000-00-00 00:00:00' ". |
' AND ci_meta_date_ajout > DATE_SUB(NOW(), INTERVAL 31 DAY) '. |
((isset($utilisateur)) ? " AND ci_ce_utilisateur = $utilisateur " : ''). |
'GROUP BY periode '. |
'ORDER BY periode '; |
$resultats = $this->executerRequete($requete); |
|
// Traitement du resultat |
$img_totale = array(); |
if ($resultats !== false) { |
foreach ($resultats as $info) { |
$img_totale[$info['periode']] = $info['nbre']; |
} |
} |
|
// Trie des dates pour les étiquettes des axes |
$dates = array(); |
$annees = array(); |
$annees_mois = array(); |
$jours = array(); |
foreach ($img_totale as $annee_mois_jours => $nbre) { |
$annee = substr($annee_mois_jours, 0, 4); |
$mois = substr($annee_mois_jours, 4, 2); |
$jour = substr($annee_mois_jours, 6, 2); |
$annee_mois_fmt_B = strftime('%B %Y', mktime(0, 0, 0, $mois, 1, $annee)); |
|
if (!isset($dates[$annee][$mois][$jour])) { |
$annees_mois[] = (!isset($dates[$annee][$mois]) ? $annee_mois_fmt_B : ''); |
$jours[] = $jour; |
// Ajouter au tableau dates tjrs à la fin |
$dates[$annee][$mois][$jour] = 1; |
} |
} |
|
// Post traitement des données |
$titre = "Évolution du dépôt d'images sur un mois glissant"; |
$valeurs_max = (count($img_totale) > 0) ? max($img_totale) : 0; |
$valeurs = implode(',', $img_totale); |
$y_val_fin = $valeurs_max; |
$y_pas = round($valeurs_max / 6); |
$etiquettes_x1 = implode('|', $jours); |
$etiquettes_x2 = implode('|', $annees_mois); |
$etiquettes_y2 = 'Images'; |
|
// Construction de l'url de l'image |
$graph = array('cht' => 'lc', |
'chtt' => $titre, |
'chs' => '600x200', |
'chco' => '007F00', |
'chd' => 't:'.$valeurs, |
'chds' => '0,'.$valeurs_max, |
'chxt' => 'y,y,x,x', |
'chxl' => '1:|'.$etiquettes_y2.'|2:|'.$etiquettes_x1.'|3:|'.$etiquettes_x2, |
'chxp' => '0,0|1,50', |
'chxr' => "0,0,$y_val_fin,$y_pas", |
'chm' => 'h,C3C3C3,0,0.5,1,-1|N,000000,0,1::1,8,1.0,ht', |
'chxs' => '0,007F00|1,007F00'); |
$this->debug[] = $graph; |
return $graph; |
} |
|
private function getEvolImgParAn($param) { |
$utilisateur = isset($_GET['utilisateur']) ? $this->bdd->quote($_GET['utilisateur']) : null; |
// Récupération des données |
$requete = "SELECT DATE_FORMAT(ci_meta_date_ajout, '%Y') AS periode, COUNT(ci_id_image) AS nbre ". |
"FROM cel_images ". |
"WHERE ci_meta_date_ajout != '0000-00-00 00:00:00' ". |
((isset($utilisateur)) ? " AND ci_ce_utilisateur = $utilisateur " : ''). |
'GROUP BY periode '. |
'ORDER BY periode '; |
$resulats = $this->executerRequete($requete); |
|
$img_totale = array(); |
foreach ($resulats as $info) { |
$img_totale[$info['periode']] = $info['nbre']; |
} |
|
// Trie des dates pour les étiquettes des axes |
$dates = array(); |
$annees = array(); |
foreach ($img_totale as $annee => $nbre) { |
if (!isset($dates[$annee])) { |
$annees[] = $annee; |
$dates[$annee] = 1; |
} |
} |
|
// Post traitement des données |
$titre = "Évolution du dépôt d'images par année"; |
$valeurs = implode(',', $img_totale); |
$valeurs_max = (count($img_totale) > 0) ? max($img_totale) : 0; |
$valeurs_min = (count($img_totale) > 0) ? min($img_totale) : 0; |
$y_val_deb = preg_replace('/[0-9]{2}$/', '00', $valeurs_min); |
$y_val_fin = $valeurs_max; |
$y_pas = round(($valeurs_max / 6), 0); |
$etiquettes_x = implode('|', $annees);; |
$etiquettes_y = 'Images'; |
|
// Construire de l'url de l'image |
$graph = array('cht' => 'lc', |
'chtt' => $titre, |
'chs' => '600x200', |
'chco' => '007F00', |
'chd' => 't:'.$valeurs, |
'chds' => "$valeurs_min,$valeurs_max", |
'chxt' => 'y,y,x', |
'chxl' => '1:|'.$etiquettes_y.'|2:|'.$etiquettes_x.'', |
'chxp' => '0,0|1,50|2,0', |
'chxr' => "0,$y_val_deb,$y_val_fin,$y_pas", |
'chm' => 'h,C3C3C3,0,0.5,1,-1|N,000000,0,1::1,8,1.0,ht', |
'chxs' => '0,007F00|1,007F00'); |
return $graph; |
} |
|
private function getEvolUtilisateurParMois($param) { |
// Récupération des données |
$requete = 'SELECT DISTINCT identifiant , '. |
' MIN(date_creation) AS date_min, MAX(date_creation) AS date_max, '. |
' COUNT(id) AS obs_nbre '. |
'FROM cel_inventory '. |
"WHERE date_creation != '0000-00-00 00:00:00' ". |
" AND identifiant LIKE '%@%' ". |
'GROUP BY identifiant '. |
'ORDER BY date_min ASC '; |
$resultats = $this->executerRequete($requete); |
|
// Trie des données et des dates pour les étiquettes des axes |
$dates = array(); |
$annees = array(); |
$utilisateurs = array(); |
$les_mois = array(); |
$pas = 3; // intervalle de mois entre deux étiquettes |
$periode = 0; |
foreach ($resultats as $enrg) { |
$annee = substr($enrg['date_min'], 0, 4); |
$mois = substr($enrg['date_min'], 5, 2); |
$mois_fmt_B = strftime('%b', strtotime("1999-$mois-01")); |
|
if (!isset($dates[$annee][$mois])) { |
$annees[] = (!isset($dates[$annee]) ? $annee : ''); |
$les_mois[] = is_int($periode++ / $pas) ? $mois_fmt_B : ''; |
$utilisateurs["$annee-$mois"] = 1; |
// Ajouter au tableau dates tjrs à la fin |
$dates[$annee][$mois] = 1; |
} else { |
$utilisateurs["$annee-$mois"]++; |
} |
} |
|
// Post traitement des données |
$titre = 'Évolution des utilisateurs par mois'; |
$valeurs = implode(',', $utilisateurs); |
$valeurs_max = max($utilisateurs); |
$y_val_fin = $valeurs_max; |
$y_pas = 5; |
$etiquettes_x1 = implode('|', $les_mois); |
$etiquettes_x2 = implode('|', $annees); |
$etiquettes_y = 'Utilisateurs'; |
|
// Construire de l'url de l'image |
$graph = array('cht' => 'lc', |
'chtt' => $titre, |
'chs' => '600x200', |
'chco' => '0000FF',//4D89F9 |
'chd' => 't:'.$valeurs, |
'chds' => '0,'.$valeurs_max, |
'chxt' => 'y,y,x,x', |
'chxl' => '1:|'.$etiquettes_y.'|3:|'.$etiquettes_x2.'|2:|'.$etiquettes_x1.'', |
'chxp' => '1,50|3,0', |
'chxr' => "0,0,$y_val_fin,$y_pas", |
'chm' => 'h,C3C3C3,0,0.5,1,-1|N ** ,000000,0,2::2,8,1.0,ht', |
'chxs' => '0,0000FF|1,0000FF'); |
return $graph; |
} |
|
private function getEvolObsParMoisGlissant($param) { |
// Récupération des données |
$format_date = '%Y%m%d'; |
$where = 'date_creation > DATE_SUB(NOW(), INTERVAL 31 DAY)'; |
$obs_totale = $this->executerRequeteEvol('cel_inventory', 'id', $format_date, $where); |
|
// Trie des dates pour les étiquettes des axes |
$dates = array(); |
$annees = array(); |
$annees_mois = array(); |
$jours = array(); |
foreach ($obs_totale as $annee_mois_jours => $nbre) { |
$annee = substr($annee_mois_jours, 0, 4); |
$mois = substr($annee_mois_jours, 4, 2); |
$jour = substr($annee_mois_jours, 6, 2); |
$annee_mois_fmt_B = strftime('%B %Y', mktime(0, 0, 0, $mois, 1, $annee)); |
|
if (!isset($dates[$annee][$mois][$jour])) { |
$annees_mois[] = (!isset($dates[$annee][$mois]) ? $annee_mois_fmt_B : ''); |
$jours[] = $jour; |
// Ajouter au tableau dates tjrs à la fin |
$dates[$annee][$mois][$jour] = 1; |
} |
} |
|
// Post traitement des données |
$titre = 'Évolution des observations sur un mois glissant'; |
$valeurs_max = (count($obs_totale) > 0 ) ? max($obs_totale) : 0; |
$valeurs = implode(',', $obs_totale); |
$y_val_fin = $valeurs_max; |
$y_pas = round($valeurs_max / 6); |
$etiquettes_x1 = implode('|', $jours); |
$etiquettes_x2 = implode('|', $annees_mois); |
$etiquettes_y2 = 'Observations'; |
|
// Construction de l'url de l'image |
$graph = array('cht' => 'lc', |
'chtt' => $titre, |
'chs' => '600x200', |
'chco' => '822013', |
'chd' => 't:'.$valeurs, |
'chds' => '0,'.$valeurs_max, |
'chxt' => 'y,y,x,x', |
'chxl' => '1:|'.$etiquettes_y2.'|2:|'.$etiquettes_x1.'|3:|'.$etiquettes_x2, |
'chxp' => '0,0|1,50', |
'chxr' => "0,0,$y_val_fin,$y_pas", |
'chm' => 'h,C3C3C3,0,0.5,1,-1|N,000000,0,1::1,8,1.0,ht', |
'chxs' => '0,822013|1,822013'); |
return $graph; |
} |
|
private function getEvolObsParMois($param) { |
// Récupération des données |
$obs_totale = $this->executerRequeteEvol('cel_inventory', 'id'); |
|
// Trie des dates pour les étiquettes des axes |
$dates = array(); |
$annees = array(); |
$les_mois = array(); |
$pas = 3; // intervalle de mois entre deux étiquettes |
$periode = 0; |
$cumul = 0; |
$obs_totale_cumul = array(); |
foreach ($obs_totale as $annee_mois => $nbre) { |
$annee = substr($annee_mois, 0, 4); |
$mois = substr($annee_mois, 4, 2); |
$mois_fmt_B = strftime('%b', strtotime("1999-$mois-01")); |
$cumul += $nbre; |
$obs_totale_cumul[$annee_mois] = $cumul; |
|
if (!isset($dates[$annee][$mois])) { |
$annees[] = (!isset($dates[$annee]) ? $annee : ''); |
$les_mois[] = is_int($periode++ / $pas) ? $mois_fmt_B : ''; |
// Ajouter au tableau dates tjrs à la fin |
$dates[$annee][$mois] = 1; |
} |
} |
|
// Post traitement des données |
$titre = 'Évolution des observations par mois'; |
$valeurs_y = implode(',', $obs_totale); |
$valeurs_r = implode(',', $obs_totale_cumul); |
$valeurs_max_y = (count($obs_totale) > 0 ) ? max($obs_totale) : 0; |
$valeurs_max_r = (count($obs_totale_cumul) > 0 ) ? max($obs_totale_cumul) : 0; |
$y_val_fin = $valeurs_max_y; |
$y_pas = round(($valeurs_max_y / 6), 0); |
$r_val_fin = $valeurs_max_r; |
$r_pas = round(($valeurs_max_r / 6), 0); |
$etiquettes_x1 = implode('|', $les_mois); |
$etiquettes_x2 = implode('|', $annees); |
$etiquettes_y2 = 'Observations'; |
$etiquettes_r2 = 'Cumul'; |
|
// Construire de l'url de l'image |
$graph = array('cht' => 'lc', |
'chtt' => $titre, |
'chs' => '600x200', |
'chco' => '822013,F1841D', |
'chd' => 't:'.$valeurs_y.'|'.$valeurs_r, |
'chds' => "0,$valeurs_max_y,0,$valeurs_max_r", |
'chxt' => 'y,y,x,x,r,r', |
'chxl' => '1:|'.$etiquettes_y2.'|2:|'.$etiquettes_x1.'|3:|'.$etiquettes_x2.'|5:|'.$etiquettes_r2.'', |
'chxp' => '1,50|3,0|5,50', |
'chxr' => "0,0,$y_val_fin,$y_pas|4,0,$r_val_fin,$r_pas", |
'chm' => 'N ** ,000000,0,2::2,8,1.0,ht', |
'chxs' => '0,822013|1,822013|4,F1841D|5,F1841D'); |
return $graph; |
} |
|
private function getEvolObsParAn($param) { |
// Récupération des données |
$obs_totale = $this->executerRequeteEvol('cel_inventory', 'id', '%Y'); |
|
// Trie des dates pour les étiquettes des axes |
$dates = array(); |
$annees = array(); |
foreach ($obs_totale as $annee => $nbre) { |
if (!isset($dates[$annee])) { |
$annees[] = $annee; |
$dates[$annee] = 1; |
} |
} |
|
// Post traitement des données |
$titre = 'Évolution des observations par année'; |
$valeurs = implode(',', $obs_totale); |
$valeurs_max = (count($obs_totale) > 0 ) ? max($obs_totale) : 0; |
$valeurs_min = (count($obs_totale) > 0 ) ? min($obs_totale) : 0; |
$y_val_deb = preg_replace('/[0-9]{2}$/', '00', $valeurs_min); |
$y_val_fin = $valeurs_max; |
$y_pas = round(($valeurs_max / 6), 0); |
$etiquettes_x = implode('|', $annees);; |
$etiquettes_y = 'Observations'; |
|
// Construire de l'url de l'image |
$graph = array('cht' => 'lc', |
'chtt' => $titre, |
'chs' => '600x200', |
'chco' => '822013', |
'chd' => 't:'.$valeurs, |
'chds' => "$valeurs_min,$valeurs_max", |
'chxt' => 'y,y,x', |
'chxl' => '1:|'.$etiquettes_y.'|2:|'.$etiquettes_x.'', |
'chxp' => '0,0|1,50|2,0', |
'chxr' => "0,$y_val_deb,$y_val_fin,$y_pas", |
'chm' => 'h,C3C3C3,0,0.5,1,-1|N,000000,0,1::1,8,1.0,ht', |
'chxs' => '0,822013|1,822013'); |
return $graph; |
} |
|
private function getEvolObsHisto($param) { |
// Récupération des données |
$obs_totale = $this->executerRequeteEvol('cel_inventory', 'id'); |
$obs_identifiee = $this->executerRequeteEvol('cel_inventory', 'id', "identifiant LIKE '%@%' "); |
$lignes = array('total', 'obs. identifiée'); |
|
// Post traitement des données |
$titre = 'Évolution des observations'; |
$valeurs = implode(',', $obs_totale).'|'.implode(',', $obs_identifiee); |
$valeurs_max = (count($obs_totale) > 0 ) ? max($obs_totale) : 0; |
$etiquettes = implode('|', array_keys($lignes)); |
|
// Construire de l'url de l'image |
$graph = array('cht' => 'lc', |
'chtt' => $titre, |
'chs' => '500x300', |
'chco' => 'FF0000,00FF00', |
'chd' => 't:'.$valeurs, |
'chds' => "0,$valeurs_max", |
'chxt' => 'y', |
'chxl' => '0:|'.$etiquettes.'', |
'chm' => 'N,000000,0,-1,10'); |
return $graph; |
} |
|
private function getNbreObsIdVsTest($param) { |
// Récupération des données |
$obs_totale = $this->executerRequeteNombre('cel_inventory', 'id'); |
$obs_identifiee = $this->executerRequeteNombre('cel_inventory', 'id', "identifiant LIKE '%@%' "); |
$obs_test = $obs_totale - $obs_identifiee; |
$pourcent_identifiee = round(($obs_identifiee / ($obs_totale / 100)), 2).'%'; |
$pourcent_anonyme = round(($obs_test / ($obs_totale / 100)), 2).'%'; |
|
// Post traitement des données de la base de données |
$titre = "Nombre d'observations|tests vs. identifiées"; |
$etiquette_obs_test = "tests ($obs_test - $pourcent_anonyme)"; |
$etiquette_obs_id = "identifiées ($obs_identifiee - $pourcent_identifiee)"; |
$donnees = array($etiquette_obs_test => $obs_test, $etiquette_obs_id => $obs_identifiee); |
$valeurs = implode(',', $donnees); |
$etiquettes = implode('|', array_keys($donnees)); |
|
// Construire les paramêtres de l'url de l'image |
$graph = array('cht' => 'p3', |
'chtt' => $titre, |
'chs' => '250x200', |
'chco' => 'FF0000,00FF00', |
'chd' => 't:'.$valeurs, |
'chds' => "0,$obs_totale", |
'chdl' => $etiquettes, |
'chdlp' => 'bv|r', |
'chts' => '000000,12'); |
return $graph; |
} |
|
private function getNbreObsPublicVsPrivee($param) { |
// Récupération des données |
$obs_totale = $this->executerRequeteNombre('cel_inventory', 'id'); |
$obs_public = $this->executerRequeteNombre('cel_inventory', 'id', 'transmission = 1'); |
$obs_privee = $obs_totale - $obs_public; |
$pourcent_privee = round(($obs_privee / ($obs_totale / 100)), 2).'%'; |
$pourcent_public = round(($obs_public / ($obs_totale / 100)), 2).'%'; |
|
// Post traitement des données de la base de données |
$titre = "Nombre d'observations|publiques vs. privées"; |
$etiquette_obs_public = "publiques ($obs_public - $pourcent_public)"; |
$etiquette_obs_privee = "privées ($obs_privee - $pourcent_privee)"; |
$donnees = array($etiquette_obs_privee => $obs_privee, $etiquette_obs_public => $obs_public); |
$valeurs = implode(',', $donnees); |
$etiquettes = implode('|', array_keys($donnees)); |
|
// Construire les paramêtres du graph |
$graph = array('cht' => 'p3', |
'chtt' => $titre, |
'chs' => '250x200', |
'chco' => 'FF0000,00FF00', |
'chd' => 't:'.$valeurs, |
'chds' => "0,$obs_totale", |
'chdl' => $etiquettes, |
'chdlp' => 'bv|r', |
'chts' => '000000,12'); |
return $graph; |
} |
|
private function getNbreObsDetermineeVsInconnue($param) { |
// Récupération des données |
$obs_totale = $this->executerRequeteNombre('cel_inventory', 'id'); |
$obs_determinee = $this->executerRequeteNombre('cel_inventory', 'id', 'num_nom_sel != 0'); |
$obs_inconnue = $obs_totale - $obs_determinee; |
$pourcent_determinee = round(($obs_determinee / ($obs_totale / 100)), 2).'%'; |
$pourcent_inconnue = round(($obs_inconnue / ($obs_totale / 100)), 2).'%'; |
|
// Post traitement des données de la base de données |
$titre = "Nombre d'observations|determinées vs. inconnues"; |
$etiquette_obs_determinee = "determinées ($obs_determinee - $pourcent_determinee)"; |
$etiquette_obs_inconnue = "non déterminées ($obs_inconnue - $pourcent_inconnue)"; |
$donnees = array($etiquette_obs_inconnue => $obs_inconnue, $etiquette_obs_determinee => $obs_determinee); |
$valeurs = implode(',', $donnees); |
$etiquettes = implode('|', array_keys($donnees)); |
|
// Construire les paramêtres du graph |
$graph = array('cht' => 'p3', |
'chtt' => $titre, |
'chs' => '250x200', |
'chco' => 'FF0000,00FF00', |
'chd' => 't:'.$valeurs, |
'chds' => "0,$obs_totale", |
'chdl' => $etiquettes, |
'chdlp' => 'bv|r', |
'chts' => '000000,12'); |
return $graph; |
} |
|
private function getNbreObsAvecIndicationGeo($param) { |
// Récupération des données |
$total = $this->executerRequeteNombre('cel_inventory', 'id'); |
$where_commune = $this->creerWhereIndicationGeo('location'); |
$obs['commune'] = $this->executerRequeteNombre('cel_inventory', 'id', $where_commune); |
$where_commune_id = $this->creerWhereIndicationGeo('id_location'); |
$obs['commune identifiée'] = $this->executerRequeteNombre('cel_inventory', 'id', $where_commune_id); |
$where_lieudit = $this->creerWhereIndicationGeo('lieudit'); |
$obs['lieu-dit'] = $this->executerRequeteNombre('cel_inventory', 'id', $where_lieudit); |
$where_station = $this->creerWhereIndicationGeo('station'); |
$obs['station'] = $this->executerRequeteNombre('cel_inventory', 'id', $where_station); |
$where_milieu = $this->creerWhereIndicationGeo('milieu'); |
$obs['milieu'] = $this->executerRequeteNombre('cel_inventory', 'id', $where_milieu); |
$where_xy = $this->creerWhereIndicationGeo('coord_x').' AND '.$this->creerWhereIndicationGeo('coord_y'); |
$obs['coordonnée'] = $this->executerRequeteNombre('cel_inventory', 'id', $where_xy); |
|
$donnees = array(); |
$num = 1; |
foreach ($obs as $etiquette => $nbre) { |
$pourcent = round(($obs[$etiquette] / ($total / 100)), 1).'%'; |
$legende = "$num : $etiquette ($nbre - $pourcent)"; |
$donnees['valeurs'][] = $nbre; |
$donnees['etiquettes'][] = $num++; |
$donnees['legendes'][] = $legende; |
} |
|
|
// Post traitement des données de la base de données |
$titre = "Nombre d'observations|avec indications géographiques"; |
$valeurs = implode(',', $donnees['valeurs']); |
$etiquettes = implode('|', $donnees['etiquettes']); |
$legendes = implode('|', $donnees['legendes']); |
|
// Construire les paramêtres du graph |
$graph = array('cht' => 'rs', |
'chtt' => $titre, |
'chs' => '600x300', |
'chco' => 'FFFFFF', |
'chd' => 't:'.$valeurs, |
'chds' => "0,$total", |
'chdl' => $legendes, |
'chxt' => 'x', |
'chxl' => "0:|$etiquettes", |
//'chxp' => '1,0,20,40,60,80,100',// Grille sous forme de cible |
'chm' => 'B,FF000080,0,1.0,5.0'); |
return $graph; |
} |
|
private function creerWhereIndicationGeo($champ) { |
$where = null; |
if (isset($champ)) { |
$where = "$champ != '000null' ". |
"AND $champ != '' ". |
"AND $champ IS NOT NULL "; |
} |
return $where; |
} |
|
private function getUtilisationJournaliere($param) { |
// Sur quel jour, voulons nous estimer l'utilisation |
$aujourdhui = date('Y-m-d'); |
if (isset($param[0]) && preg_match('/^[0-9]{4}(?:-[0-9]{2}){2}$/', $param[0])) { |
$aujourdhui = $param[0]; |
} |
$aujourdhui_fmt = strftime('%d %b %Y', strtotime($aujourdhui)); |
|
// Récupération des données |
$max_obs = array(); |
$max_obs[] = $this->executerRequeteEvol('cel_inventory', 'id', '%Y%m%d', |
"date_creation NOT LIKE '$aujourdhui%' ", 'date_creation'); |
$max_obs[] = $this->executerRequeteEvol('cel_inventory', 'id', '%Y%m%d', |
"date_modification NOT LIKE '$aujourdhui%' ", 'date_modification'); |
$max_obs[] = $this->executerRequeteEvol('cel_inventory', 'id', '%Y%m%d', |
"date_transmission NOT LIKE '$aujourdhui%' ", 'date_transmission'); |
$obs_aujourdhui = $this->executerRequeteNombre('cel_inventory', 'id', |
"(date_creation LIKE '$aujourdhui%' |
OR date_modification LIKE '$aujourdhui%' |
OR date_transmission LIKE '$aujourdhui%') "); |
|
// Cummul des obs crées, modifiées, transmises par jour |
$donnees = array(); |
foreach ($max_obs as $obs_par_jour) { |
foreach ($obs_par_jour as $annee_mois_jour => $nbre) { |
if (!isset($donnees[$annee_mois_jour])) { |
$donnees[$annee_mois_jour] = $nbre; |
} else { |
$donnees[$annee_mois_jour] += $nbre; |
} |
} |
} |
|
// Post traitement des données |
$valeur = $obs_aujourdhui; |
$valeur_max = 400; |
if ($valeur > $valeur_max) { |
$pourcentage = 100; |
} else { |
$pourcentage = round(($valeur / ($valeur_max / 100)), 0); |
} |
$etiquettes_x = $aujourdhui_fmt; |
$etiquettes_y = "faible|moyenne|forte"; |
$titre = "Intensité d'utilisation pour le $aujourdhui_fmt"; |
$legende = "$valeur changements"; |
|
// Construire de l'url de l'image |
$graph = array('cht' => 'gom', |
'chtt' => $titre, |
'chdl' => "$legende", |
'chdlp' => 'b', |
'chs' => '350x200', |
'chco' => 'FFFF00,0A7318', |
'chls' => '3|10', |
'chma' => '0,0,0,0|300,40', |
'chd' => 't:'.$pourcentage, |
'chxt' => 'x,y', |
'chxl' => '0:|'.$etiquettes_x.'|1:|'.$etiquettes_y.'', |
'chxp' => '0,50'); |
return $graph; |
} |
|
private function getNbreObsParUtilisateur($param) { |
// Récupération des données |
$requete = 'SELECT identifiant, COUNT(id) AS nbre '. |
'FROM cel_inventory '. |
'GROUP BY identifiant '; |
$utilisateurs = $this->executerRequete($requete); |
|
// Création des classes d'utilisateurs |
$classes = array('00->10' => 0, '11->50' => 0, '51->100' => 0, '101->500' => 0, '500->∞' => 0); |
$donnees['Utilisateurs'] = $classes; |
$valeur_max = 0; |
foreach ($utilisateurs as $utilisateur) { |
$id = $utilisateur['identifiant']; |
$nbre = $utilisateur['nbre']; |
|
// Détermination de la classe |
$classe = ''; |
if (0 < $nbre && $nbre <= 10) { |
$classe = '00->10'; |
} else if (10 < $nbre && $nbre <= 50) { |
$classe = '11->50'; |
} else if (50 < $nbre && $nbre <= 100) { |
$classe = '51->100'; |
} else if (100 < $nbre && $nbre <= 500) { |
$classe = '101->500'; |
} else if (500 < $nbre) { |
$classe = '500->∞'; |
} |
|
// Détermination du type d'utilisateur |
if (strstr($id, '@')) { |
$type = 'Utilisateurs'; |
// Incrémentation du tableau de données et récupration de la valeur max |
$donnees[$type][$classe]++; |
if ($donnees[$type][$classe] > $valeur_max) { |
$valeur_max = $donnees[$type][$classe]; |
} |
} |
} |
|
// Post traitement des données |
$titre = "Nombre d'observations par utilisateur"; |
$y1_val_fin = $valeur_max; |
$y1_pas = '100'; |
$valeurs = implode(',', $donnees['Utilisateurs']); |
$etiquettes_x1 = implode('|', array_keys($classes)); |
$etiquettes_x2 = 'Observations'; |
$etiquettes_y2 = 'Utilisateurs'; |
$legendes = implode('|', array_keys($donnees)); |
|
// Construire de l'url de l'image |
$graph = array('cht' => 'bvg', |
'chtt' => $titre, |
'chs' => '400x200', |
'chco' => '00FF00,FF0000', |
'chbh' => 'r,0.3,1', |
'chd' => 't:'.$valeurs, |
'chds' => "0,$valeur_max", |
'chxt' => 'x,x,y,y', |
'chxl' => '0:|'.$etiquettes_x1.'|1:|'.$etiquettes_x2.'|3:|'.$etiquettes_y2.'', |
'chxp' => '1,100|3,100', |
'chxr' => "2,0,$y1_val_fin,$y1_pas", |
'chm' => 'h,C3C3C3,0,0.5,1,-1|N,000000,0,0::1,8,1.0,e'); |
//echo '<pre>'.print_r($graph,true).'</pre>'; |
return $graph; |
} |
|
private function getNbreObsParUtilisateurEtTest($param) { |
// Récupération des données |
$requete = 'SELECT identifiant, COUNT(id) AS nbre '. |
'FROM cel_inventory '. |
'GROUP BY identifiant '; |
$utilisateurs = $this->executerRequete($requete); |
|
// Création des classes d'utilisateurs |
$classes = array('00->10' => 0, '11->50' => 0, '51->100' => 0, '101->500' => 0, '500->∞' => 0); |
$donnees['Utilisateurs'] = $classes; |
$donnees['Tests'] = $classes; |
$valeur_max = 0; |
foreach ($utilisateurs as $utilisateur) { |
$id = $utilisateur['identifiant']; |
$nbre = $utilisateur['nbre']; |
|
// Détermination de la classe |
$classe = ''; |
if (0 < $nbre && $nbre <= 10) { |
$classe = '00->10'; |
} else if (10 < $nbre && $nbre <= 50) { |
$classe = '11->50'; |
} else if (50 < $nbre && $nbre <= 100) { |
$classe = '51->100'; |
} else if (100 < $nbre && $nbre <= 500) { |
$classe = '101->500'; |
} else if (500 < $nbre) { |
$classe = '500->∞'; |
} |
|
// Détermination du type d'utilisateur |
if (strstr($id, '@')) { |
$type = 'Utilisateurs'; |
} else { |
$type = 'Tests'; |
} |
|
// Incrémentation du tableau de données et récupration de la valeur max |
$donnees[$type][$classe]++; |
if ($donnees[$type][$classe] > $valeur_max) { |
$valeur_max = $donnees[$type][$classe]; |
} |
} |
|
// Post traitement des données |
$titre = "Nombre d'observations par utilisateur et test"; |
$y1_val_fin = $valeur_max; |
$y1_pas = '100'; |
$valeurs = implode(',', $donnees['Utilisateurs']).'|'.implode(',', $donnees['Tests']); |
$etiquettes_x1 = implode('|', array_keys($classes)); |
$etiquettes_x2 = 'Observations'; |
$etiquettes_y2 = 'Utilisateurs'; |
$legendes = implode('|', array_keys($donnees)); |
|
// Construire de l'url de l'image |
$graph = array('cht' => 'bvg', |
'chtt' => $titre, |
'chs' => '400x200', |
'chco' => '00FF00,FF0000', |
'chbh' => 'r,0.3,1', |
'chd' => 't:'.$valeurs, |
'chds' => "0,$valeur_max", |
'chxt' => 'x,x,y,y', |
'chxl' => '0:|'.$etiquettes_x1.'|1:|'.$etiquettes_x2.'|3:|'.$etiquettes_y2.'', |
'chxp' => '1,100|3,100', |
'chxr' => "2,0,$y1_val_fin,$y1_pas", |
'chm' => 'h,C3C3C3,0,0.5,1,-1|N,000000,0,0::1,8,1.0,e|N,000000,1,0::1,8,1.0,e', |
'chdl' => $legendes, |
'chdlp' => 'b'); |
//echo '<pre>'.print_r($graph,true).'</pre>'; |
return $graph; |
} |
|
private function getNuagePointsObsParHeureEtJourSemaine($param) { |
$utilisateur = isset($_GET['utilisateur']) ? $this->bdd->quote($_GET['utilisateur']) : false; |
|
// Récupération des données de la base |
$requete = 'SELECT identifiant, DATE_FORMAT(date_creation, "%w-%H") AS periode, (ROUND(LOG10(COUNT(id))) + 1) AS nbre '. |
'FROM cel_inventory '. |
'WHERE date_creation != "0000-00-00 00:00:00" '. |
' AND identifiant '.($utilisateur ? "= $utilisateur " : 'LIKE "%@%" '). |
'GROUP BY periode, identifiant '; |
$infos = $this->executerRequete($requete); |
|
// Traitement résulat requête |
$observations = array(); |
foreach ($infos as $info) { |
if (isset($observations[$info['periode']])) { |
$observations[$info['periode']] += $info['nbre']; |
} else { |
$observations[$info['periode']] = $info['nbre']; |
} |
} |
|
// Postraitement des données |
// Jour de la semaine |
$donnees['joursSemaine'] = array(); |
for ($njs = 0; $njs < 7; $njs++) { |
$donnees['joursSemaine'][] = strftime('%A', strtotime('2010-05-'.(16+$njs))); |
} |
// Heure |
$donnees['heures'] = array(); |
for ($h = 0; $h < 24; $h++) { |
$heure_fmt = sprintf('%02s', $h);// Format numérique 00 |
$donnees['heures'][] = strftime('%H', strtotime("0000-00-00 $heure_fmt:00:00")); |
} |
// Nbre |
$valeur_max = max($observations); |
for ($njs = 0; $njs < 7; $njs++) { |
for ($h = 0; $h < 24; $h++) { |
$hfmt = sprintf('%02s', $h);// Format numérique 00 |
$periode = $njs.'-'.$hfmt; |
$donnees['valeurs_x'][] = round(($h + 1) * (100 / 24), 0); |
$donnees['valeurs_y'][] = round(($njs + 1) * (100 / 7), 0); |
$ps = 0; |
if (isset($observations[$periode])) { |
$ps = round($observations[$periode] * (100 / $valeur_max), 0); |
} |
$donnees['valeurs_ps'][] = $ps; |
} |
} |
//echo '<pre>'.print_r($donnees,true).'</pre>'; |
// Préparation des paramêtres du graph |
$titre = "Nombre de création d'observation|par heure et jour de la semaine"; |
$valeurs = implode(',', $donnees['valeurs_x'])."|".implode(',', $donnees['valeurs_y'])."|".implode(',', $donnees['valeurs_ps']); |
$etiquettes_x1 = '|'.implode('|', $donnees['heures']); |
$etiquettes_x2 = 'Heures'; |
$etiquettes_y1 = '|'.implode('|', $donnees['joursSemaine']); |
$x_axis_step_size = str_replace(',', '.', (100 / 24)); |
$y_axis_step_size = str_replace(',', '.', (100 / 7)); |
|
// Construction du tableau des paramêtres du graph |
$graph = array('cht' => 's', |
'chtt' => $titre, |
'chs' => '400x200', |
'chco' => '00FF00', |
'chd' => 't:'.$valeurs, |
'chxt' => 'x,x,y', |
'chxr' => "0,-1,23,1|2,-1,6,1", |
'chxp' => '1,100', |
'chxl' => '0:|'.$etiquettes_x1.'|1:|'.$etiquettes_x2.'|2:|'.$etiquettes_y1.'', |
'chg' => "$x_axis_step_size,$y_axis_step_size,1,5"); |
//echo '<pre>'.print_r($graph,true).'</pre>'; |
return $graph; |
} |
|
private function getNuagePointsObsAnciennete($param) { |
// Récupération des données de la base |
$requete = 'SELECT DISTINCT identifiant , '. |
' MIN(date_creation) AS date_min, MAX(date_creation) AS date_max, '. |
' COUNT(id) AS obs_nbre '. |
'FROM cel_inventory '. |
"WHERE date_creation != '0000-00-00 00:00:00' ". |
" AND identifiant LIKE '%@%' ". |
'GROUP BY identifiant '. |
'ORDER BY date_min ASC '; |
$resultats = $this->executerRequete($requete); |
|
// Trie des données |
$max_obs = 0; |
$max_obs_log = 0; |
$max_anciennete = 0; |
$donnees = array(); |
foreach ($resultats as $enrg) { |
$tps_deb = strtotime($enrg['date_min']); |
$tps_fin = strtotime($enrg['date_max']); |
|
$donnee = array(); |
if (($tps_fin - $tps_deb) == 0) { |
$donnee['anciennete'] = 1; |
} else { |
$donnee['anciennete'] = round((($tps_fin - $tps_deb) / 86400), 0); |
} |
$donnee['obs'] = $enrg['obs_nbre']; |
$donnee['obs_log'] = log10($enrg['obs_nbre']); |
$donnees[] = $donnee; |
|
$max_obs_log = ($donnee['obs_log'] > $max_obs_log) ? $donnee['obs_log'] : $max_obs_log; |
$max_obs = ($donnee['obs'] > $max_obs) ? $donnee['obs'] : $max_obs; |
$max_anciennete = ($donnee['anciennete'] > $max_anciennete) ? $donnee['anciennete'] : $max_anciennete; |
} |
|
// Postraitement des données |
foreach ($donnees as $donnee) { |
$donnees['valeurs_x'][] = round($donnee['anciennete'] * (100 / $max_anciennete), 0); |
$donnees['valeurs_y'][] = round($donnee['obs_log'] * (100 / $max_obs_log), 0); |
$donnees['valeurs_ps'][] = 20; |
} |
|
// Échelle log des obs |
$donnees['echelle_y1'] = array(); |
$pas = $max_obs_log / 100 ; |
for ($i = 0 ; $i < 5 ; $i++) { |
$donnees['echelle_y1'][] = round(pow(10, (($i*20) * $pas)), 0); |
} |
$donnees['echelle_y1'][] = $max_obs; |
|
//echo '<pre>'.print_r($donnees['valeurs_x'],true).'</pre>'; |
// Préparation des paramêtres du graph |
$titre = "Répartition des utilisateurs en fonction|du nombre d'observations et de l'ancienneté"; |
$valeurs = implode(',', $donnees['valeurs_x'])."|".implode(',', $donnees['valeurs_y'])."|".implode(',', $donnees['valeurs_ps']); |
$etiquettes_x2 = 'Ancienneté en jours'; |
$etiquettes_y1 = implode('|', $donnees['echelle_y1']); |
$etiquettes_y2 = 'Observations'; |
$x_axis_step_size = $max_anciennete; |
|
// Construction du tableau des paramêtres du graph |
$graph = array('cht' => 's', |
'chtt' => $titre, |
'chs' => '400x200', |
'chco' => '0000FF', |
'chxt' => 'x,x,y,y', |
'chd' => 't:'.$valeurs, |
'chxr' => "0,0,$x_axis_step_size|2,0,$max_obs",//|2,0,$y_axis_step_size,$pas |
'chxp' => '1,100|3,100', |
'chm' => 'h,C3C3C3,0,-0.2,0.2,-1', |
'chxl' => '1:|'.$etiquettes_x2.'|2:|'.$etiquettes_y1.'|3:|'.$etiquettes_y2.'');// |
//echo '<pre>'.print_r($graph,true).'</pre>'; |
return $graph; |
} |
|
private function executerRequeteEvol($table, $champ, $format_date = '%Y%m', $where = null, $champ_date = 'date_creation', $order_by = null, $limit = null) { |
$utilisateur = isset($_GET['utilisateur']) ? $this->bdd->quote($_GET['utilisateur']) : false; |
|
$requete = "SELECT DATE_FORMAT($champ_date, '$format_date') AS periode, COUNT($champ) AS nbre ". |
"FROM $table ". |
"WHERE $champ_date != '0000-00-00 00:00:00' ". |
(($utilisateur != false) ? " AND identifiant = $utilisateur " : ''). |
((is_null($where)) ? '' : " AND $where "). |
'GROUP BY periode '. |
((is_null($order_by)) ? '' : "ORDER BY $order_by "); |
((is_null($limit)) ? '' : "LIMIT $limit "); |
$evolution = $this->executerRequete($requete); |
|
// Traitement du tableau |
$donnees_traitees = array(); |
if ($evolution !== false) { |
foreach ($evolution as $info) { |
$donnees_traitees[$info['periode']] = $info['nbre']; |
} |
} |
return $donnees_traitees; |
} |
|
private function executerRequeteNombre($table, $champ, $where = null) { |
$utilisateur = null; |
if (isset($_GET['utilisateur'])) { |
$utilisateur = $this->bdd->quote($_GET['utilisateur']); |
$where = isset($where) ? $where.' AND ' : ''; |
$where .= "identifiant = $utilisateur "; |
} |
|
$requete = "SELECT COUNT($champ) AS nbre ". |
"FROM $table ". |
((isset($where)) ? "WHERE $where " : ''); |
|
$nbre = $this->executerRequete($requete, 'Column'); |
return $nbre; |
} |
} |