Page 1 sur 5

Google Charts et base de données

Posté : 26 oct. 2012, 08:44
par DarkEnd
bonjour bonjour,

J'ai un petit soucis avec mon api google.

j'ai ce bout de code qui fait appelle à mes données sur ma base de données:
function <?php echo $name_chart; ?>() {

var data = google.visualization.arrayToDataTable([

['Campagne', 'Durée d\'appel'],
['<?php while ($Camp = $requete->fetch(PDO::FETCH_ASSOC))
{ echo $Camp['Nom'] ; } ?>', 3],

Le problème étant qu'en affichant mes données, cela les affiche que sur une seule colonne.

j'aimerai que chaque ligne de mon résultat de requête soit affiché pour une seule colonne.

Pour information, j'ai pris "column bar" comme type de graphique.

Merci d'avance pour réponse. :)

Re: Google Charts et base de données

Posté : 26 oct. 2012, 16:42
par two3d
Bonjour,

tu a certainement une erreur:
function <?php echo $name_chart; ?>() {

var data = google.visualization.arrayToDataTable([

['Campagne', 'Durée d\'appel'],
['<?php while ($Camp = $requete->fetch(PDO::FETCH_ASSOC))
{ echo $Camp['Nom'] ; } ?>', 3],
function <?php echo $name_chart; ?>() { j'ai jamais vue de ce genre de function au passé

tu pourrai passer plus de code stp pour voir?

Re: Google Charts et base de données

Posté : 26 oct. 2012, 18:05
par saian
A priori je dirai, normal. C'est le while qui ne va pas.
Il est inséré dans des apostrophes, donc en sortie tu vas avoir une chaine style :

['Campagne', 'Durée d\'appel'],
['nom_camp_1nom_camp_2_nom_camp_3etc', 3],

Flower tedaoff

Posté : 26 oct. 2012, 18:09
par saian
PS : pour two3d

Code : Tout sélectionner

function <?php echo $name_chart; ?>() {
DarkEnd déclare ici une fonction javascript qui aura pour nom la valeur de la variable php $name_chart. En sorti il obtient :

Code : Tout sélectionner

function nom_du_graphique() { var data = google.visualization.arrayToDataTable([ ['Campagne', 'Durée d\'appel'], ['...', 3],

Re: Google Charts et base de données

Posté : 26 oct. 2012, 18:34
par two3d
PS : pour two3d

Code : Tout sélectionner

function <?php echo $name_chart; ?>() {
DarkEnd déclare ici une fonction javascript qui aura pour nom la valeur de la variable php $name_chart. En sorti il obtient :

Code : Tout sélectionner

function nom_du_graphique() { var data = google.visualization.arrayToDataTable([ ['Campagne', 'Durée d\'appel'], ['...', 3],
Ok

une question pour DarkEnd:

il te faut 3 colonnes ?

si oui, fait comme ceci:
<?php
echo "function ".$name_chart."() {";
$nbr=0;
?>
var data = google.visualization.arrayToDataTable([

<?php while ($Camp = $requete->fetch(PDO::FETCH_ASSOC)) {
	$nbr++;
	echo "['Campagne', 'Durée d\'appel'],['".$Camp['Nom']."', ".$nbr."],";
} ?>]);

Re: Google Charts et base de données

Posté : 30 oct. 2012, 11:01
par DarkEnd
Tout d'abord, merci de votre aide

Ensuite, j'ai essayé ton code mais cela ne m'affichait plus le graphique.
Donc j'explique peut être un petit peu mieux.

j'ai fait une requête qui me permet de récupéré le nom de toutes les campagnes.

Et j'aimerais affichait chaque nom de campagne sur chaque colonne

Voici tout mon body, donc tout le script pour le graphique.
Actuellement, ce code me retourne tous les noms des campagnes mais que sur une seule colonne.

Donc j'ai créé comme campagne par exemple:
-iPhone 3gs
-iPad
-iPhone 4
-iPhone 5

Ceci s'affiche à la ligne comme ceci: "iPhone 3gsiPadiPhone 4iPhone 5"

<body>
		<script type="text/javascript" src="https://www.google.com/jsapi"></script>
		<script type="text/javascript">
		google.load("visualization", "1", {packages:["corechart"]});
		google.setOnLoadCallback(<?php echo $name_chart; ?>);
		function <?php echo $name_chart; ?>() {
		
			var data = google.visualization.arrayToDataTable([	
		 
				['Campagne', 'Durée d\'appel'],
				['<?php while ($Camp = $requete->fetch(PDO::FETCH_ASSOC))
						{	 echo $Camp['Nom'] ; } ?>', 3],
		
		]); 
			var options = {
				title: 'Moyenne de durée d\'appel par campagne',
				hAxis: {title: 'Campagne', titleTextStyle: {color: 'blue'}}
			};

			var chart = new google.visualization.ColumnChart(document.getElementById('<?php echo $name_chart; ?>'));
			chart.draw(data, options);
		}
		</script>
			
		<div id="<?php echo $name_chart ?>" style="width: 900px; height: 500px;"></div>	
</body>
Voici une image du graphique:

Image

Re: Google Charts et base de données

Posté : 30 oct. 2012, 11:57
par two3d
Je peut avoir plus d'info sur cette requête stp ?:

<?php while ($Camp = $requete->fetch(PDO::FETCH_ASSOC))
{ echo $Camp['Nom'] ; } ?>

- combien de ligne doit telle retournée ?

Aurai tu un graphique de base de chez Google pour voir comment faire ?

Re: Google Charts et base de données

Posté : 30 oct. 2012, 12:00
par two3d
essaye ceci (c'est ton body avec mon code while):

<body>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load("visualization", "1", {packages:["corechart"]});
google.setOnLoadCallback(<?php echo $name_chart; ?>);
function <?php echo $name_chart; ?>() {

var data = google.visualization.arrayToDataTable([

<?php $nbr=0; while ($Camp = $requete->fetch(PDO::FETCH_ASSOC)) {
$nbr++;
echo "['Campagne', 'Durée d\'appel'],['".$Camp['Nom']."', ".$nbr."],";
} ?>]);

]);
var options = {
title: 'Moyenne de durée d\'appel par campagne',
hAxis: {title: 'Campagne', titleTextStyle: {color: 'blue'}}
};

var chart = new google.visualization.ColumnChart(document.getElementById('<?php echo $name_chart; ?>'));
chart.draw(data, options);
}
</script>

<div id="<?php echo $name_chart ?>" style="width: 900px; height: 500px;"></div>
</body>

Re: Google Charts et base de données

Posté : 30 oct. 2012, 12:09
par DarkEnd
j'ai beau essayé ton code, juste en remplacement mon body par le tien mais ça n'a pas l'air de vouloir marcher.

le graphique ne s'affiche pas.

Voici ma requête


<?php 
			//requête : Moyenne durée d'appel par campagne
			$requete = $bdd->prepare("SELECT phonevent_commande.com_prixTotal as AVG, phonevent_campagne.cam_nom as Nom 
			FROM phonevent_commande, phonevent_campagne 
			WHERE phonevent_commande.cam_id=phonevent_campagne.cam_id");
			$requete->bindValue(':dateDebut', $_POST['datepicker3'], PDO::PARAM_STR);
			$requete->bindValue(':dateFin', $_POST['datepicker4'], PDO::PARAM_STR);
			$requete->execute();

			// Défini le nom de notre fonction JS et l'id du div HTML dans lequel se trouvera le graphique
			$name_chart = "result";
?>

Re: Google Charts et base de données

Posté : 30 oct. 2012, 12:12
par two3d
pourrai tu me dire qu'est ce qu'affiche la requête ?:

<?php $nbr=0; while ($Camp = $requete->fetch(PDO::FETCH_ASSOC)) {
$nbr++;
echo "['Campagne', 'Durée d\'appel'],['".$Camp['Nom']."', ".$nbr."],";
} ?>

Re: Google Charts et base de données

Posté : 30 oct. 2012, 12:21
par DarkEnd
ça m'affiche celà :
['Campagne', 'Durée d\'appel'],['iPhone 3gs', 1],['Campagne', 'Durée d\'appel'],['iPhone 4', 2],['Campagne', 'Durée d\'appel'],['iPhone 4', 3],['Campagne', 'Durée d\'appel'],['iPhone 5', 4],
Ceci pour le résultat de ton code php que tu m'as donné.

Mais je suis obligé de l'exclure de la balise script pour que ça s'affiche ...

Si tu as d'autres solutions je suis preneur.

Je précise que le graphique ne s'affichait pas avec ton code.

Merci en tout cas de ton aide.

Re: Google Charts et base de données

Posté : 30 oct. 2012, 12:26
par two3d
essaye de mettre ce code donc (directement à la place du php):

['Campagne', 'Durée d\'appel'],['iPhone 3gs', 1],['Campagne', 'Durée d\'appel'],['iPhone 4', 2],['Campagne', 'Durée d\'appel'],['iPhone 4', 3],['Campagne', 'Durée d\'appel'],['iPhone 5', 4],

essaye avec et sans la virgule de la fin

Re: Google Charts et base de données

Posté : 30 oct. 2012, 12:42
par two3d
voila, ceci devrai fonctionner( d'parès les tutos google:https://developers.google.com/chart/int ... odatatable ):

voila, ceci devrai fonctionner:

[javascript]var data = google.visualization.arrayToDataTable([
['Campagne', 'Durée d\'appel'],
<?php
$nbr=0;
$echo = "";
while ($Camp = $requete->fetch(PDO::FETCH_ASSOC)) {
$nbr++;
$echo .= "['".$Camp['Nom']."', ".$nbr."],";
}
echo substr($echo,0,-1); // on enlve la virgule de la fin
?>]);[/javascript]

Re: Google Charts et base de données

Posté : 30 oct. 2012, 12:57
par DarkEnd
Bordel!!!! génial!!!


Merciiii

ça marche, merci bien, je suis content :)

Re: Google Charts et base de données

Posté : 30 oct. 2012, 13:23
par two3d
avec plaisir, bonne continuation