1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150
| <?php
error_reporting(E_all);
include('Connexion.inc.php');
include_once('Artichow/LinePlot.class.php');
/************ CREATION DU GRAPHIQUE (POO) & DÉCLARATION DES COULEURS ************/
$graph = new Graph(1235, 775);
$color = array(new LightRed(), new Black(), new LightGreen(), new Purple(), new Color(91, 76, 29), new Pink(), new Orange(), new Yellow(), new DarkRed(), new Blue(), new LightGray(), new Color(255, 222, 160)); // new Color(91, 76, 29) : marron fonçé ; new Color(255, 222, 160) : beige
$group = new PlotGroup(); // Définition du groupe de courbes
$group->setPadding(40, 40); // Marges intérieures pour que les titres des axes ne soient pas collés aux axes
$graph->setAntiAliasing(TRUE); // Fonction d'anti-aliasing
/************ REQUÊTE SQL ************/
$requete = 'SELECT Intitule, Valeur, Date FROM ERREUR_GW1'; // Remplacer ERREUR_GW1 par $POST['NomTable'] quand le soucis du POST sera réglé
$selection = mysql_query($requete, $maConnexion);
$nbSelection = mysql_affected_rows(); // Comptage du nombre d'enregistrements de la requête
$requete1 = 'SELECT DISTINCT Intitule FROM ERREUR_GW1';
$distinct = mysql_query($requete1, $maConnexion);
$nbDistinct = mysql_affected_rows();
$requete2 = 'SELECT DISTINCT Date FROM ERREUR_GW1 ORDER BY Date;'; // Servira pour définir les valeurs de l'axe des abscisses
$distinctDate = mysql_query($requete2, $maConnexion);
/************ GESTION DES ERREURS ************/
if (!$selection) {
$message = 'Requête invalide : ' . mysql_error();
die ($message);
}
if (!$distinct) {
$message = 'Requête invalide : ' . mysql_error();
die ($message);
}
if (!$distinctDate) {
$message = 'Requête invalide : ' . mysql_error();
die ($message);
}
/************ INITIALISATION DES DESCRIPTIONS ET DES DATES ************/
$i = 0;
$descript = array();
while ($rows = mysql_fetch_assoc($distinct)) {
$descript[$i] = $rows['Intitule'];
$i++;
}
$i = 0;
$date = array();
while ($ligne = mysql_fetch_assoc($distinctDate)) {
$date[$i] = $ligne['Date'];
$i++;
}
/************ DÉCLARATIONS DYNAMIQUE DES TABLEAUX DE VALEURS ************/
$i = 0;
while ($i < $nbDistinct) {
${'values' . $i} = array();
$i++;
}
/************ INITIALISATION DES VALEURS, DES COURBES ET DES LÉGENDES ************/
$i = 0;
$legende = array();
while ($i < $nbDistinct) {
$jeu = mysql_query('SELECT Intitule, Valeur, Date FROM ERREUR_GW1 WHERE Intitule = "' . $descript[$i] . '" GROUP BY Date HAVING MIN(Date) ORDER BY Date;', $maConnexion); // Requête récupérant les valeurs de chaque catégories d'erreurs, par ordre croissant des dates
if (!$jeu) {
$message = 'Requête invalide : ' . mysql_error();
die ($message);
}
$k = 0;
while ($row = mysql_fetch_array($jeu)) {
${'values' . $i}[$k] = $row['Valeur']; // Affectation des valeurs que contiendront les tableaux
$k++;
}
$plot = new LinePlot(${'values' . $i}); // Création de la courbe avec le tableau de valeurs correspondant à l'erreur $descript[$i]
switch ($descript[$i]) {
case 'Messages rejetés par l\'anti-spam' :
$plot->setColor($color[0]); // Définition d'une couleur
$legende[$i] = 'SPAM'; // Définition de la légende
break;
case 'invalid recipient' :
$plot->setColor($color[1]);
$legende[$i] = 'User unknown';
break;
case 'Messages correctement transmis à labs' :
$plot->setColor($color[2]);
$legende[$i] = 'Mails transmis';
break;
case 'Unable to queue message ()' :
$plot->setColor($color[3]);
$legende[$i] = 'Unable to queue message';
break;
case 'Unable to queue message (Connection reset by peer)' :
$plot->setColor($color[3]);
$legende[$i] = 'Unable to queue message (connection reset by peer)';
break;
case 'Could not resolve' :
$plot->setColor($color[4]);
$legende[$i] = 'Domaine non résolue';
break;
case 'Use MAIL before RCPT' :
$plot->setColor($color[5]);
$legende[$i] = 'Use MAIL before RCPT';
break;
case 'RCPT first' :
$plot->setColor($color[6]);
$legende[$i] = 'RCPT first';
break;
case 'MAIL first' :
$plot->setColor($color[7]);
$legende[$i] = 'Mail first';
break;
case 'Incomplete DATA' :
$plot->setColor($color[8]);
$legende[$i] = 'Données incomplètes';
break;
case 'Connexion cassée (pas d\'erreur)' :
$plot->setColor($color[9]);
$legende[$i] = 'Connexion cassée (pas d\'erreur)';
break;
case 'Unrecognized command' :
$plot->setColor($color[10]);
$legende[$i] = 'Commande non reconnue';
break;
default:
$plot->setColor($color[11]);
$legende[$i] = $descript[$i];
break;
}
$plot->xAxis->setLabelText($date); // Affichage des dates en abscisse
$group->legend->add($plot, $legend[$i], Legend::MARK); // Ajout d'une nouvelle donnée à la légende (message d'erreur faisant référence à cette ligne)
$group->add($plot); // Ajout de la courbe au groupe de courbe
$i++;
}
$group->legend->shadow->smooth(TRUE);
$graph->add($group); // Instanciation du graph'
$graph->draw(); // Dessine le graph'
mysql_close($maConnexion);
?> |
Partager