2010-09-16 3 views
4

J'ai besoin d'aide avec ce code, je parviens à extraire les données d'une base de données mysql et les convertir au format requis par Highcharts.Highcharts & Mysql

<?php 
$query =mysql_query("select 
       date_format(connect_time,'%Y-%m-%d %H %i') AS date, 
       Customers.name as customer, 
       Sum(duration) as secondes 
       from CDR_Vendors 
       inner join Customers on (CDR_Vendors.i_customer = Customers.i_customer) 
       where 
       i_vendor='32' 
       and 
       connect_time between '2010-09-01 00:00:00' and '2010-09-01 00:10:00' 
       group by date 
       ORDER BY date", $link) or die(mysql_error()); 
$row = mysql_fetch_assoc($query); 
$customer[] = $row['customer']; 
$json_secondes = array(); 
$json_date = array(); 
do{ 
$secondes[] = $row['secondes']; 
array_push($json_secondes, $row['secondes']); 
array_push($json_date, $row['date']); 
} 
while($row = mysql_fetch_assoc($query)); 
//echo json_encode($json_secondes,$row); 
//echo json_encode($json_date,$row); 
//echo join($secondes, ', '); 
?> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
     <title>Highcharts Example</title> 


     <!-- 1. Add these JavaScript inclusions in the head of your page --> 
     <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 
     <script type="text/javascript" src="../js/highcharts.js"></script> 

     <!-- 1a) Optional: the exporting module --> 
     <script type="text/javascript" src="../js/modules/exporting.js"></script> 


     <!-- 2. Add the JavaScript to initialize the chart on document ready --> 
     <script type="text/javascript"> 

     var chart; 
     $(document).ready(function() { 
      chart = new Highcharts.Chart({ 
       chart: { 
        renderTo: 'container', 
        defaultSeriesType: 'column' 
       }, 
       title: { 
        text: 'Monthly Average Rainfall' 
       }, 
       subtitle: { 
        text: 'Source: WorldClimate.com' 
       }, 
       xAxis: { 
        categories: <?php echo json_encode($json_date,$row);?> 
       }, 
       yAxis: { 
        min: 0, 
        title: { 
        text: 'Rainfall (mm)' 
        } 
       }, 
       legend: { 
        layout: 'vertical', 
        backgroundColor: '#FFFFFF', 
        align: 'center', 
        verticalAlign: 'top', 
        x: 100, 
        y: 70 
       }, 
       tooltip: { 
        formatter: function() { 
        return ''+ 
         this.x +': '+ this.y +' Min'; 
        } 
       }, 
       plotOptions: { 
        column: { 
        pointPadding: 0.2, 
        borderWidth: 0 
        } 
       }, 
        series: [{ 
        name: '<?php echo join($customer, ', ');?>', 
        data: [<?php echo join($secondes, ', ');?>] 

       }] 
      }); 


     }); 

     </script> 

    </head> 
    <body> 

     <!-- 3. Add the container --> 
     <div id="container" style="width: 1300px; height: 500px; margin: 0 auto"></div> 


    </body> 
</html> 

Le problème avec ce code est qu'il est affiche uniquement des données d'un seul client, de sorte que la requête renvoie des données de plusieurs clients.

Cette méthode est-elle bonne ou existe-t-il un autre moyen plus simple de le faire?

+0

Votre code affiche-t-il uniquement le dernier client de la liste de requêtes? –

+0

oui exactement, avez-vous une idée de la façon de résoudre ce problème? – hch

Répondre

1

Essayez d'utiliser implode(', ', $customer); et implode(', ', $secondes); au lieu des join fonctions.