2016-07-24 3 views
0

저는 mysql에서 데이터를 얻고 codeigniter를 사용하여 하이 차트를 만들고 싶습니다. 여기 내 테이블이 있습니다 :Highcharts, Mysql 및 Codeingniter

CREATE TABLE tbl_chart (
PID varchar (10), P_ProjectPreparation int, P_ConceptualDesign int, P_Realization int, P_FinalPreparation int, P_GoLive); 

열 PID는 xAxis가되고 다른 열은 시리즈가됩니다. 여기

<?php defined('BASEPATH') OR exit('No direct script access allowed'); 
class admin_c extends CI_Controller { 
public function __construct() 
    { 
     parent::__construct(); 

     $this->load->database(); 
     $this->load->helper('url'); 
     $this->load->model('chartmanage_m'); 
    } 

public function index() 
{ 
$this->load->view('admin_v'); 
} 

public function data() 
{ 

$data = $this->chartmanage_m->get_data(); 

$category = array(); 
$category['name'] = 'PID'; 

$series1 = array(); 
$series1['name'] = 'Project Preparation'; 

$series2 = array(); 
$series2['name'] = 'Conceptual Design'; 

$series3 = array(); 
$series3['name'] = 'Realization'; 

$series4 = array(); 
$series4['name'] = 'Final Preparation'; 

$series5 = array(); 
$series5['name'] = 'Go Live'; 

foreach ($data as $row) 
{ 
$category['data'][] = $row->PID; 
$series1['data'][] = $row->P_ProjectPreparation; 
$series2['data'][] = $row->P_ConceptualDesign; 
$series3['data'][] = $row->P_Realization; 
$series4['data'][] = $row->P_FinalPreparation; 
$series5['data'][] = $row->P_GoLive; 
} 

$result = array(); 
array_push($result,$category); 
array_push($result,$series1); 
array_push($result,$series2); 
array_push($result,$series3); 
array_push($result,$series4); 
array_push($result,$series5); 

print json_encode($result, JSON_NUMERIC_CHECK); 
}} 

내 모델 : 여기 내 컨트롤러

<?php defined('BASEPATH') OR exit('No direct script access allowed'); 
class chartmanage_m extends CI_Model { function __construct() { 

parent::__construct(); } 
function get_data() 
{ 
$this->db->select('*'); 
$this->db->from('tbl_chart' 

); 
$query = $this->db->get(); 
return $query->result(); 
} 

여기 내이다 :

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
<script type="text/javascript" src="http://code.highcharts.com/highcharts.js"></script> 
<script type="text/javascript"> 
    $(document).ready(function() { 
     var options = { 
      chart: { 
       renderTo: 'container', 
       type: 'line', 
       marginRight: 130, 
       marginBottom: 25 
      }, 
      title: { 
       text: 'Project Requests', 
       x: -20 //center 
      }, 
      subtitle: { 
       text: '', 
       x: -20 
      }, 
      xAxis: { 
       categories: [] 
      }, 
      yAxis: { 
       title: { 
        text: 'Requests' 
       }, 
       plotLines: [{ 
        value: 0, 
        width: 1, 
        color: '#808080' 
       }] 
      }, 
      tooltip: { 
       formatter: function() { 
         return '<b>'+ this.series.name +'</b>'+ 
         this.x +': '+ this.y; 
       } 
      }, 


      series: [] 
     } 

     $.getJSON("<?php echo site_url('admin_c/data');?>", function(data) { 
     options.xAxis.categories = json[0]['data']; 
      options.series[0] = json[1]; 
      options.series[1] = json[2]; 
      options.series[2] = json[3]; 
      options.series[3] = json[4]; 
      options.series[4] = json[5]; 
      chart = new Highcharts.Chart(options); 
     }); 
    }); 
</script> 

그리고 내가 빈 화면을 얻을. 어떤 아이디어가 잘못 될 수 있습니까? 감사합니다

답변

0

내가 당신의 코드로 새 프로젝트를 만들 내가 강조하고, 내가 문제를 발견 당신은 "데이터"를 "json", 그 결과 변수로 변경해야합니다! $ .getJSON (""테스트 데이터, 기능 JSON() {...}

<script type="text/javascript"> 
    $(document).ready(function() { 

     var options = { 
      chart: { 
       renderTo: 'container', 
       type: 'line', 
       marginRight: 130, 
       marginBottom: 25 
      }, 
      title: { 
       text: 'Project Requests', 
       x: -20 //center 
      }, 
      subtitle: { 
       text: '', 
       x: -20 
      }, 
      xAxis: { 
       categories: [] 
      }, 
      yAxis: { 
       title: { 
        text: 'Requests' 
       }, 
       plotLines: [{ 
        value: 0, 
        width: 1, 
        color: '#808080' 
       }] 
      }, 
      tooltip: { 
       formatter: function() { 
         return '<b>'+ this.series.name +'</b>'+ 
         this.x +': '+ this.y; 
       } 
      }, 


      series: [] 
     } 


     $.getJSON("<?php echo site_url('admin_c/data');?>", function(json) {    
      options.xAxis.categories = json[0]['data']; 
      options.series[0] = json[1]; 
      options.series[1] = json[2]; 
      options.series[2] = json[3]; 
      options.series[3] = json[4]; 
      options.series[4] = json[5]; 
      chart = new Highcharts.Chart(options); 
     }); 
    }); 
</script> 

하고, "기능 (데이터) {...} $ .getJSON (행"

INSERT INTO `tbl_chart` (`PID`, `P_ProjectPreparation`, `P_ConceptualDesign`, `P_Realization`, `P_FinalPreparation`, `P_GoLive`) VALUES ('12', '11', '22', '33', '44', '55'), ('13', '111', '222', '333', '444', '555'), ('14', '1111', '2222', '3333', '4444', '5555'), ('15', '11111', '22222', '33333', '44444', '55555'); 

및 이미지 : enter image description here

+0

문제가 해결이! 정말 고마워요 – Santi

0

당신은 당신의 컨트롤러 기능에서보기에 표시 할 배열로서보기로 json_encoded 배열을 전달해야합니다 ....

은 그래서 당신은보기와 함께 컨트롤러 함수에서 표시 할 뷰를 정의합니다. ..

$this->render('Index',array('json_array_var_in_view' => $my_json_array)); 

잘 그 ... 우리가 ... YII에 CI와 유사한 라인을 따라 확실히 뭔가 그것을 할 방법

위의 라인은 컨트롤러의보기 index.php 파일을 나타냅니다하고해야 변수를 잡아라.

: $json_array_var_in_view이 ...

그렇게 전달 된 배열보기를 호출해야합니다 귀하의 data 기능 ...