[RESOLU] Graphique statistique

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Graphique statistique

Re: Graphique statistique

par Meryem » 12 juin 2014, 21:43

Oui j'ai testé avec le code que vous avez testé et c'est marché, mais je ne sais pas c'est quoi le problème dans ma requête j'ai testé la requête dans la console de Mysql et c'est marché !!
voila ma requête:
$query=mysql_query('SELECT MONTH(date) AS mois, YEAR(date) AS annee, engin,(SELECT SUM(numero) FROM signalement WHERE nature_sign="incident" AND MONTH(date)=mois AND YEAR(date)=annee)as qtincident FROM signalement GROUP BY mois ORDER BY mois ASC')  or die('Erreur SQL !<br>'.$query.'<br>'.mysql_error());
Merci infiniment pour votre aide

Re: Graphique statistique

par Elie » 12 juin 2014, 21:14

Le problème vient alors de ta requete SQL car avec mon code simplifié ca marche :
<?php
$moisFr=array('Janvier','Février','Mars','Avril','Mai','Juin','Juillet','Août','Septembre','Octobre','Novembre','Decembre');
$resultat=array(2 => 24, 6 => 32, 7 => 60);
$i=3;
$min = 24;
$max = 60;
header('Content-type: image/png');
$font_file = './arial.ttf';
$largeur=$i*50+90;
$hauteur=400;
$absis=80;
$courbe = imagecreatetruecolor($largeur, $hauteur);
$bleu=imagecolorallocate($courbe, 0, 0, 255);
$ligne=imagecolorallocate($courbe, 220, 220, 220);
$fond=imagecolorallocate($courbe, 250, 250, 250);
$noir=imagecolorallocate($courbe, 0, 0, 0);
$rouge=imagecolorallocate($courbe, 255, 0, 0);
imagefilledrectangle($courbe,0 , 0, $largeur, $hauteur, $fond);
imageline($courbe, 50, $hauteur-$absis, $largeur-10,$hauteur-$absis, $noir);
imageline($courbe, 50,$hauteur-$absis,50,20, $noir);
if($min!=0)
{
    $absis+=10;
    $a=10;
}
$nbOrdonne=10;
$echelleX=($largeur-100)/$i;
$echelleY=($hauteur-$absis-20)/$nbOrdonne;
$i=$min;
$py=($max-$min)/$nbOrdonne;
$pasY=$absis;
while($pasY<($hauteur-19))
{
    imagestring($courbe, 2,10 , $hauteur-$pasY-6, round($i), $noir);
    imageline($courbe, 50, $hauteur-$pasY, $largeur-20,$hauteur-$pasY, $ligne);
    $pasY+=$echelleY;
    $i+=$py;
}
$j=-1;
 $pasX=90;
 foreach ($resultat as $mois => $numero) {
   $y=($hauteur) -(($numero -$min) * ($echelleY/$py))-$absis;
   imagefilledellipse($courbe, $pasX, $y, 6, 6, $rouge);
   //imagefttext($courbe, 10, 315, $pasX, $hauteur-$absis+20, $noir, 1, $moisFr[$mois-1]);
   imagestring($courbe, 2, $pasX , $hauteur-$absis+20, $moisFr[$mois-1], $noir);
   imageline($courbe, $pasX, $hauteur-$absis+$a, $pasX,$y, $noir);
   if($j!==-1)
    {
      imageline($courbe,($pasX-$echelleX),$yprev,$pasX,$y,$noir);
    }
   imagestring($courbe, 2, $pasX-15,$y-14 , $numero, $bleu);
   $j=$numero;
   $yprev=$y;
   $pasX+=$echelleX;
}
imagepng($courbe);
imagedestroy($courbe);
?>

Re: Graphique statistique

par Meryem » 12 juin 2014, 21:04

Merci d'abord pour votre aide :)
J'ai remplacé dans mon code ce que vous venez de me donner mais y a tjrs la même chose, ça n'a pas marché aussi :?

Re: Graphique statistique

par Elie » 12 juin 2014, 19:58

Déjà tout ce code est franchement chelou ...
while($row=mysql_fetch_object($query))
{
    $resultat[$row->mois]=$row->qtincident;
    if($i==0)
                {
                        $min=$row->qtincident;
                        $max=$row->qtincident;
                }
    if($row->qtincident < $min)
                {
                        $min=$row->qtincident;
                }
    else
                {
                        if($row->qtincident > $max)
                         {
                                $max=$row->qtincident;
                        }
                }
    $i++;
}
Un truc du genre serait pas plus simple ?
$i = mysql_num_rows($query);
while($row=mysql_fetch_object($query))
{
    $resultat[$row->mois]=$row->qtincident;
}
$max = max($resultat);
$min = min($resultat);
Ensuite a force de faire des couper/sauvegarder, c'est cette phrase qui pause probleme :
   imagefttext($courbe, 10, 315, $pasX, $hauteur-$absis+20, $noir, NULL, $moisFr[$mois-1]);
Avec ca ca marche meme si c'est pas tres beau
imagestring($courbe, 2, $pasX , $hauteur-$absis+20, $moisFr[$mois-1], $noir);

Graphique statistique

par Meryem » 12 juin 2014, 19:03

Bonjour tout le monde,
SVP j'ai besoin de votre aide dans mon code de graphique statistique, le navigateur m'affiche une page blanche avec une image au top qui n'est pas affichée :
voila le code que j'utilise :
<?php
include('connect.inc');
$query=mysql_query('SELECT MONTH(date) AS mois, YEAR(date) AS annee, engin,(SELECT SUM(numero) FROM signalement WHERE nature_sign="incident" AND MONTH(date)=mois AND YEAR(date)=annee)as qtincident FROM signalement GROUP BY mois ORDER BY mois ASC')  or die('Erreur SQL !<br>'.$query.'<br>'.mysql_error());
$moisFr=array('Janvier','Février','Mars','Avril','Mai','Juin','Juillet','Août','Septembre','Octobre','Novembre','Decembre');
$resultat=array();
$i=0;
while($row=mysql_fetch_object($query))
{
    $resultat[$row->mois]=$row->qtincident;
    if($i==0)
		{
			$min=$row->qtincident;
			$max=$row->qtincident;
		}
    if($row->qtincident < $min)
		{
			$min=$row->qtincident;
		}
    else
		{
			if($row->qtincident > $max)
			 {
			 	$max=$row->qtincident;
			}
		}
    $i++;
}
header('Content-type: image/png');
$font_file = './arial.ttf';
$largeur=$i*50+90;
$hauteur=400;
$absis=80;
$courbe=imagecreatetruecolor($largeur, $hauteur);
$bleu=imagecolorallocate($courbe, 0, 0, 255);
$ligne=imagecolorallocate($courbe, 220, 220, 220);
$fond=imagecolorallocate($courbe, 250, 250, 250);
$noir=imagecolorallocate($courbe, 0, 0, 0);
$rouge=imagecolorallocate($courbe, 255, 0, 0);
imagefilledrectangle($courbe,0 , 0, $largeur, $hauteur, $fond);
imageline($courbe, 50, $hauteur-$absis, $largeur-10,$hauteur-$absis, $noir);
imageline($courbe, 50,$hauteur-$absis,50,20, $noir);
if($min!=0)
{
    $absis+=10;
    $a=10;
}
$nbOrdonne=10;
$echelleX=($largeur-100)/$i;
$echelleY=($hauteur-$absis-20)/$nbOrdonne;
$i=$min;
$py=($max-$min)/$nbOrdonne;
$pasY=$absis;
while($pasY<($hauteur-19))
{
    imagestring($courbe, 2,10 , $hauteur-$pasY-6, round($i), $noir);
    imageline($courbe, 50, $hauteur-$pasY, $largeur-20,$hauteur-$pasY, $ligne);
    $pasY+=$echelleY;
    $i+=$py;
}
$j=-1;
 $pasX=90;
 foreach ($resultat as $mois => $numero) {
   $y=($hauteur) -(($numero -$min) * ($echelleY/$py))-$absis;
   imagefilledellipse($courbe, $pasX, $y, 6, 6, $rouge);
   imagefttext($courbe, 10, 315, $pasX, $hauteur-$absis+20, $noir, $font_file, $moisFr[$mois-1]);
   imageline($courbe, $pasX, $hauteur-$absis+$a, $pasX,$y, $noir);
   if($j!==-1)
    {
      imageline($courbe,($pasX-$echelleX),$yprev,$pasX,$y,$noir);
    }
   imagestring($courbe, 2, $pasX-15,$y-14 , $numero, $bleu);
   $j=$numero;
   $yprev=$y;
   $pasX+=$echelleX;
}
imagepng($courbe);
imagedestroy($courbe);
?>