2013-06-12 50 views
0

mysql数据库包含三个元素:id,datetime和data。如何从mysql数据库中提取数据并使用yii-framework将它们绘制在高位图表中

请亲切地帮我检查我的代码有什么问题。我想从MySQL数据库中提取最新的15个数据并将它们绘制成高图。然而,我只能在我的x轴旁边的图表上显示最新的单个数据,但没有显示日期时间数据。

我试着在网页http://www.highcharts.com/demo/line-basic上提供的代码,但是它仅用于预定义值而不是用于mysql数据库值。

我试着编辑它,下面是我的代码。

<script scr = "//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
<script src='http://code.highcharts.com/highcharts.js' type='text/javascript'> </script>  
<script src='http://code.highcharts.com/modules/exporting.js' type='text/javascript'> </script>  

</head> 
<?php 
$rowsA = array(); 
$rowsA[]= Yii::app()->db->createCommand("Select data from customername order by id desc limit 15")->queryScalar(); 
$datedata[] = Yii::app()->db->createCommand("Select date from customername order by id desc limit 15")->queryScalar(); 
> 
<script type = "text/javascript"> 
$(function() { 
    $('#container').highcharts({ 
     chart: { 
     type: 'line', 
     marginRight: 130, 
     marginBottom: 25 
    }, 
     title: { 
      text: 'BABY BODY TEMPERATURE', 
      x: -20 
     }, 

     xAxis: { 

     // type: 'datetime', 
     // dateTimeLabelFormats:{ 
     // month: '%e, %b', 
      // year: '%b'}//can work 
    // categories: ['<php echo join($datedata, "','") ?>'], 
    // categories: [<php echo join($datedata, "','"); ?>], 
     // }, 

     }, 
     yAxis: { 
      title: { 
      text: 'Temperature (°C)' 
      }, 
     plotLines: [{ 
      value: 0, 
      width: 1, 
      color: '#808080' 
     }] 
    }, 
    tooltip: { 
     valueSuffix: '°C', 

    }, 
    legend: { 
     layout: 'vertical', 
     align: 'right', 
     verticalAlign: 'top', 
     x: -10, 
     y: 100, 
     borderWidth: 0 
    }, 
    series: [{ 
     name: 'Baby Temperature', 
     data: [<?php echo join($rowsA, "','");?>] 


     //predefined data is working fine. 
     // data: [7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6] 
    }] 
}); 
}); 

</script> 

我想我是能够提取MySQL数据和highcharts为x轴绘制它后在数量上形成了1,2,3,......然后我会尽量显示x轴的datetime 。然而,我在我的第一个阶段陷入困境;只能显示单个最新数据,而我想要的是15个数据。

如果有人能帮助我,我将非常感激。非常感谢。

回答

0

从不在查看文件中查询。使模型中的getter或控制器中的查询并传递数据以查看。 用于x-label表单数组的日期。例如,我为过去30天的表格排列:

 $output = array(); 
     for($i = 30; $i >=0 ; $i--) 
     $output[] = date("Y-m-d", strtotime('-'. $i .' days')); 
     return $output; 

这将是我们的x标签。然后在模型或控制器中获取您的数据:

$criteria=new CDbCriteria; 
     $criteria->limit=15; 
     $criteria->order='id DESC'; 
$data=new CActiveDataProvider(, array('customername' 
      'criteria'=>$criteria, 
     )); 

现在从您的数据中为您的数组构建数组。 Yii-highcharts是很棒的延伸,可以帮助很多人。 然后将其推送到你的情节:

'xAxis'=>array(
       'categories'=> $xlabels, 
       'gridLineWidth' => 1, 
       'gridLineDashStyle' => 'LongDash', 
       'tickmarkPlacement' => 'on', 
       'tickInterval' => 6 
        ), 

'series'=> array(

      array('name'=> 'Failed records', 
       'data'=> $data_array, 
       'color' => '#ff0000', 
       'shadow'=> false 
      ), 

与谊,highcharts或回声PHP变量在javascript:很多

xAxis:{ 
       categories: xlabels, 
       gridLineWidth : 1, 
       gridLineDashStyle : 'LongDash', 
       tickmarkPlacement : 'on', 
       tickInterval : 6 
        }, 
+0

感谢您抽出宝贵:

var xlabels="<?php echo $xlabels?>"; 

然后在你的阴谋使用您宝贵的时间来回答我的问题。 :)我会尝试解决你的方法,并看看第一。再次感谢你。 – user1834890

+0

嗨,你会介意澄清你的答案更高?我的图表现在变空了。我很抱歉。 :( – user1834890

+0

尝试使用http://www.yiiframework.com/extension/highcharts/。它的包装,所以你可以使用PHP来绘制你的图表.Emmpty情节意味着:a)你的数据数组是空的; b)你试图给系列提供非int值; c)你的陈述中有错误。如果您在js上使用经典的highcharts,您可以将代码推送到jsfiddle。尝试阅读文档维基的。 – ineersa

相关问题