[php/mysql] Utiliser une db avec google chart

Fermé
fxtaa Messages postés 1050 Date d'inscription mardi 20 octobre 2009 Statut Membre Dernière intervention 2 avril 2015 - 10 nov. 2009 à 16:00
 dgf - 30 juin 2011 à 00:57
Salut,

je voudrais créer des graphiques dynamiquement sur mon site et il se trouve que google propose une tite api pas mal du tout: google charts. Il suffit de passer les paramètres du graphiques dans un get et le tour est joué.

Malheureusement je suis mauvais la dedans ^^.

Donc d'abord la tete de ma table :
serveur : nom des serveurs;
taille: taille des serveurs;
utilisateur:user du serveur


Avec ca, je voudrai faire un graphe qui m'affiche la taille des serveurs dans un cammembert.
Dans ce style la (codé en dur la): http://chart.apis.google.com/chart?cht=p3&chd=t:30,40,5&chs=250x100&chl=serveur1|serveur2|serveur3

je ferai bien ca comme ca

$sqgra = mysql_query("SELECT * FROM {$tablename} WHERE serveur = '{$serv}'");
$gratab = array ();
	 
 while($gra= mysql_fetch_array($sqgra)) {
	array_unshift ($gratab, $gra);
}

$i=0;
	while($i<4){
		
		echo '<br />env =>'.$gratab[$i][2].' taille =>'.$gratab[$i][3];
		$i=$i+1;
	}

//le pb c est l'incrémentation de mes $gratab a mettre dans mon location...

include(location:"http://......");


Si vous avez des conseils ce serait avec plaisir.

Bonne journée
A voir également:

4 réponses

fxtaa Messages postés 1050 Date d'inscription mardi 20 octobre 2009 Statut Membre Dernière intervention 2 avril 2015 74
11 nov. 2009 à 11:40
J'édite a chaque fois mon code, mais le je coince vraiment.

Le but du jeu maintenant est d'au lieu d'avoir while (i<4) afin d'éviter d'avoir des undefined offset, un compteur :
1. Je compte le nbr de résultats de ma requêtes
2. selon le nombre, je place autant de $gratab dans mon url avec une décrémentation(pas sûr du mot ^^) jusqu' a 1.

3. exemple :
nombre de résultats de la requête : 3
$cpte = 3;
//on est dans un tableau donc 3 résultat c est de 2 a 0
$cpte = $cpte - 1; //$cpte = 2

//Fonction qui définit le nombre de $tailleX, de $serveurX et de décrémentation qui vont etre utilisé du style :
$i= 1;
while ($i<$cpte){
$taille.$i = $gratab[$cpte][3]; $serveur1 = $gratab[$cpte][2]; //le $taille.$i ne fonctionne pas... 
$cpte = $cpte -1;
$i = $i+1;
}

//fonction que définit le nombre de $taille.$i et $serveur.$i que j'ai..... (se tire une balle) :

include (lcoation:'http://chart.apis.google.com/chart?cht=p3&chd=t:'.$taille1.','.$taille2.','.$taille3.'&chs=250x100&chl='.$serveur1.'|'.$serveur2.'|'.$serveur3.' );
//le but c est pas de le coder en dur mais la je montre ce que le programme doit comprendre...


Bonne journée.
0
fxtaa Messages postés 1050 Date d'inscription mardi 20 octobre 2009 Statut Membre Dernière intervention 2 avril 2015 74
12 nov. 2009 à 09:05
Bon j'ai résolu le petit 1 :

for($i = 0; $i < count($gratab); $i++){
	echo '<br />env =>'.$gratab[$i][2].' taille =>'.$gratab[$i][3];
	}


LA grande question c est comment réussir a sortir tous mes $gratab[$i][2] et [3] de cette boucle afin de les utiliser dans l'url :s....
0
fxtaa Messages postés 1050 Date d'inscription mardi 20 octobre 2009 Statut Membre Dernière intervention 2 avril 2015 74
12 nov. 2009 à 10:12
Bon j'ai trouvé ca sur le net :

Cela permet de faire le traitement d u tableau en url google charts mais (il y a tjs un mais) ce ne sont pas des tableaux dynamiques :

exemple du code trouvé :

	/** Include class */
include( 'GoogChart.class.php' );

/** Create chart */
$chart = new GoogChart();


/*

		Example 1
		Pie chart

*/

// Set graph data
$data = array(
			'IE7' => 22,
			'IE6' => 30.7,
			'IE5' => 1.7,
			'Firefox' => 36.5,
			'Mozilla' => 1.1,
			'Safari' => 2,
			'Opera' => 1.4,
		);

// Set graph colors
$color = array(
			'#99C754',
			'#54C7C5',
			'#999999',
		);

/* # Chart 1 # */
echo '<h2>Pie chart</h2>';
$chart->setChartAttrs( array(
	'type' => 'pie',
	'title' => 'Browser market 2008',
	'data' => $data,
	'size' => array( 400, 300 ),
	'color' => $color
	));
// Print chart
echo $chart;


et moi je préfererai que mon $data ressemble plus a ca :

// Set graph data
$data = array(
			$gratab[$i][2] => $gratab[$i][3],
		
		);
sauf que si je met ca dans une boucle mon $data est réinit a chaque tour ....
0
fxtaa Messages postés 1050 Date d'inscription mardi 20 octobre 2009 Statut Membre Dernière intervention 2 avril 2015 74
12 nov. 2009 à 10:57
Bon ca y est j'ai quand meme dû faire du multi post pour trouver la solution pour ceux que ca intéresse je vous met le contenu entier : deja il faut utiliser ca qui va nous aider : https://www.lafermeduweb.net

Apres voici le code
	$sqgra = mysql_query("SELECT * FROM {$tablename} WHERE serveur = '{$serv}'");
	$gratab = array ();
	 
	while($gra= mysql_fetch_array($sqgra)) {
		array_unshift ($gratab, $gra);
	}
	
	/** Include class */
	include( 'GoogChart.class.php' );

	/** Create chart */
	$chart = new GoogChart();

	$i = count($gratab);
	echo $i;

	$data=array(); // création du tableau vide
	for($i = 0; $i < count($gratab); $i++){
		$data [ $gratab[$i][2] ]= $gratab[$i][3];
	}
	
	// Set graph colors
	$color = array(
				'#99C754',
				'#54C7C5',
				'#999999',
			);

	/* # Chart 1 # */
	echo '<h2>Pie chart</h2>';
	$chart->setChartAttrs( array(
		'type' => 'pie',
		'title' => 'Browser market 2008',
		'data' => $data,
		'size' => array( 400, 300 ),
		'color' => $color
		));
	// Print chart
	echo $chart;
	


Merci a le pere qui m a aidé pour le array dans le array ^^.

Bonne journée
0
bonjour, j'utilise ce meme code, mais j'ai un probleme, toutes les barres ou les portions de pie ont la même taille.
Les valeurs sont bien les valeurs récupéré (elles sont affichées en bas du graphique), il y a juste un probleme de rprésentation

Ququlq'un a-t-il une idée d'ou cela peut venir?

Merci
0
&chds=0,5000
0