Programmation php!!

lorninette Messages postés 4 Date d'inscription mercredi 12 novembre 2008 Statut Membre Dernière intervention 15 avril 2010 - 10 janv. 2010 à 14:14
lorninette Messages postés 4 Date d'inscription mercredi 12 novembre 2008 Statut Membre Dernière intervention 15 avril 2010 - 18 janv. 2010 à 01:48
Voilà j'ai une base de données sous sql server 2008 et je programme avec php, mon but est de créer une interface de statistiques, c'est à dire afficher des grapghiques(histogrammes,...)à partir des données qu'il y a dans la base (taux de chômeurs par exemple) et c'est biensur dynamique, quelqun pourrait-il m'aider ou m'orienter vers un solution???? Merci

4 réponses

Utilisateur anonyme
11 janv. 2010 à 10:59
Salut,

Pour générer tes graphiques, rien de tel que la librairie GD
Regardes sur cette page http://fr.php.net/manual/fr/ref.image.php

Si tu as d'autres questions n'hésites pas
0
Utilisateur anonyme
11 janv. 2010 à 11:25
Voici un exemple que j'avais réalisé il y a quelques mois.
C'est un script qui affiche un diagramme de statistiques des visites sur mon site.

<?php header("Content-type:image/png"); ?>
<?php 
/* ***************************************************************************** */
/* ***************************************************************************** */
/*		          EXEMPLE DE GRAPHIQUE EN BARRE 	   		 */
/* ***************************************************************************** */
/* ***************************************************************************** */


// Inclusion d'un fichier qui contient la définition de mes classes
include PHP_PATH.PHP_CLASSES; 
?>
<?php
// Requêtes SQL : Récupérer toutes les visites stockées dans la table "Visite"
$Query = new MySqlSelectQuery("Visites", "DISTINCT PAGE", "", "PAGE ASC");
$Cursor = $Query->Execute();

$i = 0;

if(isset($_GET['P']) && !empty($_GET['P']))
{
$Debut = $_GET['P']."-01 00:00:00";
$jours = date("t", mktime(0, 0, 0, $mois, 1, $annee));
$Fin = $_GET['P']."-".$jours." 23:59:59";
}

for($Row = $Cursor->Next(); $Row != null; $Row = $Cursor->Next())
{
if(isset($_GET['P']) && !empty($_GET['P']))
{
$Query2 new MySqlSelectQuery("Visites", "*, UNIX_TIMESTAMP(DATE) AS D", "PAGE '".$Row['PAGE']."' AND DATE >= '".$Debut."' AND DATE <= '".$Fin."'");
}
else
{
$Query2 new MySqlSelectQuery("Visites", "*, UNIX_TIMESTAMP(DATE) AS D", "PAGE '".$Row['PAGE']."'");
}
$Cursor2 = $Query2->Execute();

// On traite les résultats et on les stockes dans un tableau
$Tab[$i]['PAGE'] = $Row['PAGE'];
$Tab[$i]['NOMBRE'] = 0;

for($Row2 = $Cursor2->Next(); $Row2 != null; $Row2 = $Cursor2->Next())
{
$Tab[$i]['NOMBRE']++;
}

$i++;
}
?>
<?php

// Définition des Variables de l'image
$img = imagecreatetruecolor(770, 510);
//// Couleurs ////////////////////////////////////////////////
//// Gris ////
$w = imagecolorallocate($img, 243, 243, 243);
//// Noir ////
$n = imagecolorallocate($img,   0,   0,   0);
//// Bleu ////
$b = imagecolorallocate($img,  60, 123, 207);
//// Orange ////
$o = imagecolorallocate($img, 255, 126,   0);
//// Gris ////
$g = imagecolorallocate($img, 200, 200, 200);
//// Gris Foncé ////
$gf = imagecolorallocate($img,100, 100, 100);

//// Style des Lignes Pointillées ////////////////////////////
$style = array ($w,$w,$w,$w,$g,$g,$g,$g);
imagesetstyle ($img, $style);

//// Constantes//////////////// //////////////////////////////
define("_Y_MAX_", 450);	

//// Remplissage en Blanc ////////////////////////////////////
imagefill ($img, 0, 0, $w);

$NombreLignes = count($Tab);
$EspaceLignes = 744 / ($NombreLignes + 1);
$LageurRectangle = $EspaceLignes / 2;
$ll = $EspaceLignes + 25;

for($l = 0; $l < $NombreLignes; $l ++)
{
// Traçage d'une ligne en pointillés
imageline ($img,  $ll, 5,  $ll, 505, IMG_COLOR_STYLED);
$ll += $EspaceLignes;
}
$N = 0;

$i = abs($Tab[0]['NOMBRE']);
for($N = 0; $N < count($Tab); $N ++)
{
if(abs($Tab[$N]['NOMBRE']) >= $i)
{
$i = abs($Tab[$N]['NOMBRE']);
}
}

if($i == 0)
{
$i = 1;
}

// La variable étalonnage définie la hauteur maximale des lignes. Toutes les autres lignes ne devront pas atteindre cette valeur
$Etalonnage = _Y_MAX_ / $i;
$x = $EspaceLignes / 4;
$x1 = 3 * $x + 25;
$x2 = $x1 + 2 * $x;

//// quadrillage horizontal //////////////////////////////////
if($Etalonnage == 0)
{
$Etalonnage = 1;
}

$e = round(510, $Etalonnage);

for($N = 0; $N < count($Tab); $N ++)
{
$Tab[$N]['Y'] = abs($Tab[$N]['NOMBRE']) * $Etalonnage;

imageline ($img,  25, (505 - $Tab[$N]['Y']),  769, (505 - $Tab[$N]['Y']), IMG_COLOR_STYLED);
imagestring($img, 1, 2, (505 - $Tab[$N]['Y']) - 5, $Tab[$N]['NOMBRE'], $n);
}
for($N = 0; $N < count($Tab); $N ++)
{
$Tab[$N]['Y'] = abs($Tab[$N]['NOMBRE']) * $Etalonnage;
if($Tab[$N]['NOMBRE'] > 0)
{
// Traçage d'un rectangle 
imagefilledrectangle ($img, $x1, (505 - $Tab[$N]['Y']), $x2, 505, $b);
$x1 = $x1 + 4 * $x;
$x2 = $x1 + 2 * $x;
}
elseif($Tab[$N]['NOMBRE'] < 0)
{
imagefilledrectangle ($img, $x1, 505, $x2, (505 + $Tab[$N]['Y']), $b);
$x1 = $x1 + 4 * $x;
$x2 = $x1 + 2 * $x;
}
}

$x = $EspaceLignes / 4;
$x1 = 4 * $x;
$x2 = $x1 + 2 * $x;
for($N = 0; $N < count($Tab); $N ++){
if($Tab[$N]['NOMBRE'] >= 0){
imagestring($img, 3, $x1 - 20, (505 - $Tab[$N]['Y']) - 20, $Tab[$N]['PAGE'], $o);
$x1 = $x1 + 4 * $x;
}
else {
imagestring($img, 3, $x1 - 20, (505 + $Tab[$N]['Y']) + 20, $Tab[$N]['PAGE'], $o);
$x1 = $x1 + 4 * $x;
}
}
//// Afficher la Moyenne ///////////////////////////////////////
$Moyenne = 0;
for($iii = 0; $iii < count($Tab); $iii++)
{
$Moyenne += $Tab[$iii]['NOMBRE'];
}

$Moyenne /= count($Tab);
$MoyenneY = 505 - abs($Moyenne) * $Etalonnage;

imageline ($img,  25, $MoyenneY, 769, $MoyenneY, $o); 
imageline ($img,  25,   5, 769,   5, $n);
imageline ($img,  25, 505, 769, 505, $n);
imageline ($img,  25,   5,  25, 505, $n);
imageline ($img, 769,   5, 769, 505, $n);

imagestring($img, 1, 45, $MoyenneY - 15, $Moyenne, $o);

imageinterlace($img, 1);
header("Content-type: image/png");
imagepng($img);
?>
0
Tonio_35 Messages postés 567 Date d'inscription mercredi 4 octobre 2006 Statut Membre Dernière intervention 30 août 2011 11
11 janv. 2010 à 12:51
Hello,

tu as plusieurs solutions :
CSS => http://www.alsacreations.com/tuto/lire/577-Des-statistiques-graphiques-grace-aux-CSS.html
Très limité...

Flash => http://teethgrinder.co.uk/open-flash-chart/
Nécessite que le client ai flash et la limite est celle des lib que tu trouveras, tu pourras annimer tes données...

PHP => La solution de TheGorgo avec GD Ou des libs :
http://pchart.sourceforge.net/index.php http://www.artichow.org/ ...
Tu as plein d'autres lib...


_________________________________
Min iPomme
0
lorninette Messages postés 4 Date d'inscription mercredi 12 novembre 2008 Statut Membre Dernière intervention 15 avril 2010
18 janv. 2010 à 01:48
Merci à tous pour vos suggestions!!!jvais les essayer et on verra le résultat,thank's!!
0
Rejoignez-nous