Histogramme

Résolu
soufiyan Messages postés 9 Date d'inscription dimanche 2 mai 2010 Statut Membre Dernière intervention 24 avril 2012 - 18 avril 2012 à 15:55
soufiyan Messages postés 9 Date d'inscription dimanche 2 mai 2010 Statut Membre Dernière intervention 24 avril 2012 - 24 avril 2012 à 09:13
bonjour j ai besoin d'aide
je n arrive pas a afficher la des données depuis ma base de données voila le code
sachant que je veux afficher le nombre des publications dans chaque année
c est urgent :(
<?php
include ("../jpgraph-1.27.1/src/jpgraph.php");
include ("../jpgraph-1.27.1/src/jpgraph_bar.php");
define('MYSQL_HOST', 'localhost');
define('MYSQL_USER', 'root');
define('MYSQL_PASS', '');
define('MYSQL_DATABASE', 'track_publications');
$tableauAnnees = array();
$tableauNombrepub = array();
// **********************************************
// Extraction des données dans la base de données
// *************************************************
$sql = <<<EOF
SELECT (
`year`
) AS ANNEE, COUNT( ID ) AS NBR_pub
FROM `publications`
GROUP BY year
EOF;
$mysqlCnx = @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) or die('Pb de connxion mysql');
@mysql_select_db(MYSQL_DATABASE) or die('Pb de sélection de la base');
$mysqlQuery = @mysql_query($sql, $mysqlCnx) or die('Pb de requête');
while ($row = mysql_fetch_array($mysqlQuery, MYSQL_ASSOC)) {
$tableauAnnees[] = 'Année ' . $row['ANNEE'];
$tableauNombrepub[] = $row['NBR_pub'];
}
/*
printf('%s

', print_r($tableauAnnees,1));
printf('%s

', print_r($tableauNombrepub,1));
*/
// *******************
// Création du graphique
// *******************
// Construction du conteneur
// Spécification largeur et hauteur
$graph = new Graph(400,250);
// Réprésentation linéaire
$graph->SetScale("textlin");
// Ajouter une ombre au conteneur
$graph->SetShadow();
// Fixer les marges
$graph->img->SetMargin(40,30,25,40);
// Création du graphique histogramme
$bplot = new BarPlot($tableauNombrepub);
// Spécification des couleurs des barres
$bplot->SetFillColor(array('red', 'green', 'blue'));
// Une ombre pour chaque barre
$bplot->SetShadow();
// Afficher les valeurs pour chaque barre
$bplot->value->Show();
// Fixer l'aspect de la police
$bplot->value->SetFont(FF_ARIAL,FS_NORMAL,9);
// Modifier le rendu de chaque valeur
$bplot->value->SetFormat('%d ventes');
// Ajouter les barres au conteneur
$graph->Add($bplot);
// Le titre
$graph->title->Set("Graphique 'HISTOGRAMME' : pub par années");
$graph->title->SetFont(FF_FONT1,FS_BOLD);
// Titre pour l'axe horizontal(axe x) et vertical (axe y)
$graph->xaxis->title->Set("Années");
$graph->yaxis->title->Set("Nombre de pub");
$graph->yaxis->title->SetFont(FF_FONT1,FS_BOLD);
$graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD);
// Légende pour l'axe horizontal
$graph->xaxis->SetTickLabels($tableauAnnees);
// Afficher le graphique
$graph->Stroke();
?>

5 réponses

soufiyan Messages postés 9 Date d'inscription dimanche 2 mai 2010 Statut Membre Dernière intervention 24 avril 2012
24 avril 2012 à 09:13
Voila un code qui marche enfin j ai résolu le probleme
<?php
include_once ("../jpgraph-1.27.1/src/jpgraph.php");
include_once ("../jpgraph-1.27.1/src/jpgraph_bar.php");
///database
define('MYSQL_HOST', 'localhost');
define('MYSQL_USER', 'root');
define('MYSQL_PASS', '');
define('MYSQL_DATABASE', 'track_publications');

//$tdata1y[] = array();
//$tdata2y[] = array();
// **********************************************
// Extraction des données dans la base de données
// *************************************************
$sql = <<<EOF
SELECT (
year
) AS ANNEE, COUNT( ID ) AS NBR_pub
FROM publications
GROUP BY year
EOF;
$mysqlCnx = @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) or die('Pb de connxion mysql');
@mysql_select_db(MYSQL_DATABASE) or die('Pb de sélection de la base');
$mysqlQuery = @mysql_query($sql, $mysqlCnx) or die(mysql_error());
while ($row = mysql_fetch_assoc($mysqlQuery)) {
$data1y[] = $row['ANNEE'];
$data2y[] = $row['NBR_pub'];

}
/*
while ($row = mysql_fetch_assoc($mysqlQuery)) {
$i = 0;  
$tdata1y[$i] = $row['ANNEE'];  
$tdata2y[$i] = $row['NBR_pub']; 
$i += 1;
}
*/

mysql_close($con);
//$data1y=array(12,8,19,3,10,5);
//$data2y=array(8,2,12,7,14,4);

// Create the graph. These two calls are always required
$graph = new Graph(310,200,'auto');
$graph->SetScale("textlin");
$graph->img->SetMargin(40,30,20,40);
$graph->SetShadow();







// Create the bar plots
$b1plot = new BarPlot($data1y);
$b1plot->SetFillColor("orange");
$targ=array("bar_clsmex2.php#1","bar_clsmex2.php#2","bar_clsmex2.php#3",
"bar_clsmex2.php#4","bar_clsmex2.php#5","bar_clsmex2.php#6");
$alts=array("val=%d","val=%d","val=%d","val=%d","val=%d","val=%d");
$b1plot->SetCSIMTargets($targ,$alts);

$b2plot = new BarPlot($data2y);
$b2plot->SetFillColor("blue");
$targ=array("bar_clsmex2.php#7","bar_clsmex2.php#8","bar_clsmex2.php#9",
"bar_clsmex2.php#10","bar_clsmex2.php#11","bar_clsmex2.php#12");
$alts=array("val=%d","val=%d","val=%d","val=%d","val=%d","val=%d");
$b2plot->SetCSIMTargets($targ,$alts);

// Create the grouped bar plot
$abplot = new AccBarPlot(array($b1plot,$b2plot));

$abplot->SetShadow();
$abplot->value->Show();

// ...and add it to the graPH
$graph->Add($abplot);

$graph->title->Set("Image map barex2");
$graph->xaxis->title->Set("X-title");
$graph->yaxis->title->Set("Y-title");

$graph->title->SetFont(FF_FONT1,FS_BOLD);
$graph->yaxis->title->SetFont(FF_FONT1,FS_BOLD);
$graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD);


// Send back the HTML page which will call this script again
// to retrieve the image.
$graph->StrokeCSIM();

?>
3
Utilisateur anonyme
19 avril 2012 à 11:57
Salut,

Je capte pas trop le "EOF" dans ce morceau de code
$sql = <<<EOF 
SELECT ( 
`year` 
) AS ANNEE, COUNT( ID ) AS NBR_pub 
FROM `publications` 
GROUP BY year 
EOF; 

T'as essayé de le supprimer ?
$sql = "SELECT year AS ANNEE, COUNT(ID) AS NBR_pub FROM publications GROUP BY year";

Sinon un truc tout con mais hyper balaise c'est la fonction mysql_error(). Elle te dira exactement ce qui cloche dans ta requête.

@mysql_select_db(MYSQL_DATABASE) or die(mysql_error());
$mysqlQuery = @mysql_query($sql, $mysqlCnx) or die(mysql_error());

J'espère que ça pourra t'aider
0
soufiyan Messages postés 9 Date d'inscription dimanche 2 mai 2010 Statut Membre Dernière intervention 24 avril 2012
19 avril 2012 à 12:31
Merci
mais la connexion marche
la requette aussi
je crois que probleme est dans le boucle while pour chargé
while ($row = mysql_fetch_array($mysqlQuery, MYSQL_ASSOC)) {
$tableauAnnees[] = 'Année ' . $row['ANNEE'];
$tableauNombrepub[] = $row['NBR_pub'];
} 
0
Utilisateur anonyme
19 avril 2012 à 13:00
Essaye
while ($row = mysql_fetch_assoc($mysqlQuery)) 
{
    $tableauAnnees[] = 'Année ' . $row['ANNEE'];
    $tableauNombrepub[] = $row['NBR_pub'];
} 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
soufiyan Messages postés 9 Date d'inscription dimanche 2 mai 2010 Statut Membre Dernière intervention 24 avril 2012
19 avril 2012 à 14:16
toujours le meme probleme je n arrive pas a afficher le graph
je crois que $tableauAnnees et $tableauNombrepub toujours vides ils a recuperent pas les données de $row['ANNEE'] et $row['NBR_pub']
0
Rejoignez-nous