2012-03-25 49 views
0

我目前有以下高位圖顯示開始日期並輸出接下來31天數據的值。有誰知道我可以如何改進以包含和結束日期,以便我可以通過較小的特定數量過濾數據?在X軸上,我也試圖只顯示附有數據的標籤並隱藏其他標籤。任何幫助表示讚賞。改變高位輸出以顯示開始 - 結束日期

我的代碼如下:

<script type="text/javascript"> 
    var chart; 
    $(document).ready(function() { 
     chart = new Highcharts.Chart({ 
      chart: { 
       renderTo: 'container', 
       type: 'line', 
       marginRight: 130, 
       marginBottom: 25 
      }, 
      title: { 
       text: '<?php echo $type ?>', 
       x: -20 //center 
      }, 
      xAxis: { 
       categories: [ <? php 
       $start = $_POST["dateStart"]; 

       $dates = array(); 

       for ($i = 0, $days = date('t', strtotime($start)); $i < $days; ++$i) { 
        $dates[] = date('Y-m-d', strtotime($start.' + '.$i.' day')); 
       } 
       echo "'".implode("', '", $dates)."'"; ?> ] 
      }, 
      yAxis: { 
       title: { 
        text: 'Total Amount' 
       }, 
       plotLines: [{ 
        value: 0, 
        width: 1, 
        color: '#808080' 
       }] 
      }, 
      tooltip: { 
       formatter: function() { 
        return '<b>' + this.series.name + '</b><br/>' + this.x + ': ' + this.y; 
       } 
      }, 
      legend: { 
       layout: 'vertical', 
       align: 'right', 
       verticalAlign: 'top', 
       x: -10, 
       y: 100, 
       borderWidth: 0 
      }, 
      series: [ <? php 
      foreach($array as $legend = > $data) { 
       echo '{'; 
       echo "name: '".$legend."',"; 
       $values = array(); 
       for ($i = 0; $i < $days; ++$i) { 
        $date = date('Y-m-d', strtotime($start.' + '.$i.' day')); 
        $values[] = isset($data[$date]) ? $data[$date] : 0; 
       } 
       echo 'data: ['.implode(', ', $values).'],'; 

       echo '},'; 
      } ?> ] 
     }); 
    }); 

感謝

回答

0

請注意,以下是不安全的。您應始終對用戶提交的數據進行完整性檢查。

xAxis: { 
     categories: [ <? php 
     $start = $_POST["dateStart"]; 
     $end = $_POST["dateEnd"]; 

     $dates = array(); 
     $current=$start; 

     while($current<=$end){ 
      $dates[]=$current; 
      $current=date('Y-m-d', strtotime($current.' + 1 day')); 
     } 

     echo "'".implode("', '", $dates)."'"; ?> ] 
    }, 
相關問題