google chart multi series

Petit nouveau ! | 9 Messages

23 oct. 2015, 19:28

Bonjour,

J'utilise google chart (line) pour afficher mes statistiques.
Mais je ne m'en sors pas vraiment.
Resultat de la requete SQL:
Image
Le code:
<?php  $q = Database::connect()->prepare("SELECT year(date_devis) annee,
SUM(CASE WHEN MONTH(date_devis) = 1 THEN prix_ht_prod ELSE 0 END) Janv,   
SUM(CASE WHEN MONTH(date_devis) = 2 THEN prix_ht_prod ELSE 0 END) Fev,   
SUM(CASE WHEN MONTH(date_devis) = 3 THEN prix_ht_prod ELSE 0 END) Mars,
SUM(CASE WHEN MONTH(date_devis) = 4 THEN prix_ht_prod ELSE 0 END) Avril,
SUM(CASE WHEN MONTH(date_devis) = 5 THEN prix_ht_prod ELSE 0 END) Mai,
SUM(CASE WHEN MONTH(date_devis) = 6 THEN prix_ht_prod ELSE 0 END) Juin,
SUM(CASE WHEN MONTH(date_devis) = 7 THEN prix_ht_prod ELSE 0 END) Juil,
SUM(CASE WHEN MONTH(date_devis) = 8 THEN prix_ht_prod ELSE 0 END) Aout,
SUM(CASE WHEN MONTH(date_devis) = 9 THEN prix_ht_prod ELSE 0 END) Sept,
SUM(CASE WHEN MONTH(date_devis) = 10 THEN prix_ht_prod ELSE 0 END) Oct,
SUM(CASE WHEN MONTH(date_devis) = 11 THEN prix_ht_prod ELSE 0 END) Nov,
SUM(CASE WHEN MONTH(date_devis) = 12 THEN prix_ht_prod ELSE 0 END) `Dec`,
SUM(prix_ht_prod) as Total FROM devis GROUP BY annee");
$q -> execute();
 
$table = array();
$table['cols'] = array(
    array('label' => 'annee', 'type' => 'string')       
);
 
$rows = array();
 
foreach($q->fetchAll(PDO::FETCH_ASSOC) as $value) {
 
    $table['cols'][] = array(
                        'label'=>$value['annee'],
                        'type'=>'number'
                    );
             
    foreach($value as $k=>$v) {
        $temp = array();
        $temp[] = array('v' => (string) $k);
        $temp[] = array('v' => (int) $v);
        $rows[] = array('c'=>$temp);
    }
}
 
$table['rows'] = $rows;
$jsonTable = json_encode($table);
//echo $jsonTable;
 
?>
<body>
 
    <div id="chart_div" style="height: 500px"></div>
     
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script>
    google.load('visualization', '1', {'packages':['corechart']});   
    google.setOnLoadCallback(drawChart);
    function drawChart() {
        var data = new google.visualization.DataTable(<?=$jsonTable?>);
        var options = {
            title: 'Mon Graph',
        };           
        var chart = new google.visualization.LineChart(document.getElementById('chart_div'));
        chart.draw(data, options);
    }
</script>
</body>
Le problème est que je n'ai qu'une seule ligne de données (les mois identiques additionnent leur valeur quelque soit l'année)

Image
Une idée svp?

Mammouth du PHP | 2703 Messages

23 oct. 2015, 19:40

//echo $jsonTable;
qu'est ce que cela affiche ?

Petit nouveau ! | 9 Messages

23 oct. 2015, 20:06

Salut or,
cela m'affiche:
{  
   "cols":[  
      {  
         "label":"annee",
         "type":"string"
      },
      {  
         "label":"2014",
         "type":"number"
      },
      {  
         "label":"2015",
         "type":"number"
      }
   ],
   "rows":{  
      "rows":[
         {  
            "c":[  
               {  
                  "v":"Janv"
               },
               {  
                  "v":0
               }
            ]
         },
         {  
            "c":[  
               {  
                  "v":"Fev"
               },
               {  
                  "v":0
               }
            ]
         },
	...
        ...
        ...
         {  
            "c":[  
               {  
                  "v":"Janv"
               },
               {  
                  "v":35
               }
            ]
         },
         {  
            "c":[  
               {  
                  "v":"Fev"
               },
               {  
                  "v":45
               }
            ]
         }
      ]
   }
}
Alors que je cherche a avoir :
{  
   "cols":[  
      {  
         "label":"annee",
         "type":"string"
      },
      {  
         "label":"2014",
         "type":"number"
      },
      {  
         "label":"2015",
         "type":"number"
      }
   ],
   "rows":[  
		{ 
            "c":[  
               {  
                  "v":"Janv"
               },
               {  
                  "v":89
               },
               {  
                  "v":125
               }
            ]
         },
         {  
            "c":[  
               {  
                  "v":"Fev"
               },
               {  
                  "v":16.56
               },
               {  
                  "v":32
               }
            ]
         }
      ]
   }