PHP/SQL/array()/graphique
the_jb
Messages postés
651
Date d'inscription
Statut
Membre
Dernière intervention
-
the_jb Messages postés 651 Date d'inscription Statut Membre Dernière intervention -
the_jb Messages postés 651 Date d'inscription Statut Membre Dernière intervention -
Bonjour, J'ai récupéré un code pour créer une image dynamique(un graphique)
Sauf que je me creuse la tête pour insérer des données de ma BDD car l'exemple récupéré sur le site n'est pas exactement ce que je veux :
Je veux récupérer le nombre d'interventions qui à été effectué sur chaque batiment. Je veux donc mettre en abscisse le num_batiment et en ordonnée le nb_intervention.
voila la requête exacte qui va me renvoyer les informations que je demande:
function getNbInterventions()
$sql="SELECT count( a.id_aff ) as nb_intervention, b.id_batiment, b.nom_batiment
FROM affaire a, batiment b
WHERE a.id_batiment = b.id_batiment
GROUP BY b.id_batiment ";
$rsql=mysql_query($sql);
while($ligne=mysql_fetch_assoc($rsql))
{ $tab[]=$ligne;
}
return $tab;
}
voila le code d'origine pour la création de l'image :
<?php
$visites = array(138, 254, 381, 652, 896, 720, 140, 556, 663, 331, 407, 768);
header ("Content-type: image/png");
$largeurImage = 400;
$hauteurImage = 300;
$im = ImageCreate ($largeurImage, $hauteurImage)
or die ("Erreur lors de la création de l'image");
$blanc = ImageColorAllocate ($im, 255, 255, 255);
$noir = ImageColorAllocate ($im, 0, 0, 0);
$bleu = ImageColorAllocate ($im, 0, 0, 255);
// on dessine un trait vertical pour représenter l'axe du temps
ImageLine ($im, 10, $hauteurImage-10, $largeurImage-10, $hauteurImage-10, $noir);
// on affiche le numéro des 12 mois
for ($mois=1; $mois<=12; $mois++) {
ImageString ($im, 0, $mois*30, $hauteurImage-10, $mois, $noir);
}
// on dessine un trait vertical pour représenter le nombre de visites
ImageLine ($im, 10, 10, 10, $hauteurImage-10, $noir);
// le nombre maximum de visites
$visitesMax = 1000;
// tracé des batons
for ($mois=1; $mois<=12; $mois++) {
$hauteurImageRectangle = round(($visites[$mois-1]*$hauteurImage)/$visitesMax);
ImageFilledRectangle ($im, $mois*30-7, $hauteurImage-$hauteurImageRectangle, $mois*30+7, $hauteurImage-10, $bleu);
ImageString ($im, 0, $mois*30-7, $hauteurImage-$hauteurImageRectangle-10, $visites[$mois-1], $noir);
}
// et c'est fini...
ImagePng ($im);
?>
Quel modification apporter afin d'arrivé au résultat que je veux ?
NB: Si vous voulez tester le graphique, créer une page HTML simple et insérer <img src='fichier.php'/>
Merci !
Sauf que je me creuse la tête pour insérer des données de ma BDD car l'exemple récupéré sur le site n'est pas exactement ce que je veux :
Je veux récupérer le nombre d'interventions qui à été effectué sur chaque batiment. Je veux donc mettre en abscisse le num_batiment et en ordonnée le nb_intervention.
voila la requête exacte qui va me renvoyer les informations que je demande:
function getNbInterventions()
$sql="SELECT count( a.id_aff ) as nb_intervention, b.id_batiment, b.nom_batiment
FROM affaire a, batiment b
WHERE a.id_batiment = b.id_batiment
GROUP BY b.id_batiment ";
$rsql=mysql_query($sql);
while($ligne=mysql_fetch_assoc($rsql))
{ $tab[]=$ligne;
}
return $tab;
}
voila le code d'origine pour la création de l'image :
<?php
$visites = array(138, 254, 381, 652, 896, 720, 140, 556, 663, 331, 407, 768);
header ("Content-type: image/png");
$largeurImage = 400;
$hauteurImage = 300;
$im = ImageCreate ($largeurImage, $hauteurImage)
or die ("Erreur lors de la création de l'image");
$blanc = ImageColorAllocate ($im, 255, 255, 255);
$noir = ImageColorAllocate ($im, 0, 0, 0);
$bleu = ImageColorAllocate ($im, 0, 0, 255);
// on dessine un trait vertical pour représenter l'axe du temps
ImageLine ($im, 10, $hauteurImage-10, $largeurImage-10, $hauteurImage-10, $noir);
// on affiche le numéro des 12 mois
for ($mois=1; $mois<=12; $mois++) {
ImageString ($im, 0, $mois*30, $hauteurImage-10, $mois, $noir);
}
// on dessine un trait vertical pour représenter le nombre de visites
ImageLine ($im, 10, 10, 10, $hauteurImage-10, $noir);
// le nombre maximum de visites
$visitesMax = 1000;
// tracé des batons
for ($mois=1; $mois<=12; $mois++) {
$hauteurImageRectangle = round(($visites[$mois-1]*$hauteurImage)/$visitesMax);
ImageFilledRectangle ($im, $mois*30-7, $hauteurImage-$hauteurImageRectangle, $mois*30+7, $hauteurImage-10, $bleu);
ImageString ($im, 0, $mois*30-7, $hauteurImage-$hauteurImageRectangle-10, $visites[$mois-1], $noir);
}
// et c'est fini...
ImagePng ($im);
?>
Quel modification apporter afin d'arrivé au résultat que je veux ?
NB: Si vous voulez tester le graphique, créer une page HTML simple et insérer <img src='fichier.php'/>
Merci !
A voir également:
- PHP/SQL/array()/graphique
- Changer carte graphique - Guide
- Easy php - Télécharger - Divers Web & Internet
- Graphique sparkline - Guide
- Graphique camembert excel - Guide
- Comment faire un graphique sur excel - Guide