2013-10-07 3 views
0

내가 구글 차트 API에 좀 새로운 해요, 아직도 내 PHP 지식 먼지를 닦아, 그래서 아마 누군가가이 (IMO) 기본 질문에 도움이 될 수 있습니다로는, PieChart 만들기... 구글 차트 API와 PHP

그래서이 PHP 클래스가 서버에서 데이터를 쿼리하고 내 페이지로 다시 게시해야합니다.

$rowdata = array(); 
      $i=0; 
      $_POST['from'] = str_replace("/","-",$_POST['from']); 
      $_POST['to'] = str_replace("/","-",$_POST['to']); 

      $cur_date = $_POST['from']; 

      $sql = "SELECT DATE(entered), 
          COUNT(*) AS totalaccounts, 
          SUM(CASE WHEN facebook_username != '' THEN 1 ELSE 0 END) AS facebook, 
          SUM(CASE WHEN facebook_username = '' THEN 1 ELSE 0 END) AS standard 
        FROM Account 
        WHERE entered BETWEEN '". $_POST['from'] ."' AND '". $_POST['to'] ."' 
        GROUP BY DATE(entered)"; 

      $result = $dbMain->query($sql); 
      $rows = tratarDadosParaGrafico($result); 

      $return = json_encode(array('cols' => $cols, 'rows' => $rows)); 

      $data = array(
       'cols' => array(
        array('id' => '', 'label' => 'Date', 'type' => 'string'), 
        array('id' => '', 'label' => 'Total Accounts', 'type' => 'number'), 
        array('id' => '', 'label' => 'Total Accounts (Facebook)', 'type' => 'number'), 
        array('id' => '', 'label' => 'Total Accounts (Non Facebook)', 'type' => 'number') 
       ), 
       'rows' => $rows 
      ); 


      $chart = new Chart('LineChart'); 
      $options = array('title' => 'Accounts'); 
      $chart->load(json_encode($data)); 
      echo $chart->draw('rchart', $options); 

는 내가 뭘하려고했던 것은 다른 차트를 채우는 동일한 쿼리 결과 ($ 데이터)를 사용했다,이 파이 : 아래의 코드 조각에서 볼 수 있듯이 그 안에 작업 선형 차트가있다 차트 ... 그래서 단순히 차트의 새로운 인스턴스를 생성 할 때 매개 변수를 변경, 코드의 마지막 네 줄을 붙여 :

$chart = new Chart('PieChart'); 
      $options = array('title' => 'Accounts'); 
      $chart->load(json_encode($data)); 
      echo $chart->draw('pchart', $options); 

이 후, 나는 PHP 태그를 닫고 내 차트를 보여주기 위해이 개 된 div를 사용합니다. ..

<div id="rchart"></div> 
     <div id="pchart"></div> 

여기 모두가이 index.php 클래스에서 왔는데, html 파일을 전혀 보지 못했습니다 ... 무슨 일이 발생합니까? 꺾은 선형 차트 바로 아래에서 원형 차트를 볼 수 있지만 내에 데이터가 없습니다. 전체 차트가 회색이며 "기타"로 표시됩니다.

내가 잘못했을 수 있습니다. 미리 감사드립니다!

[편집] 파이 2 차트 만 원하면 아래의 코드가 작동하지 않는 이유는 무엇입니까? (I는 "속성을 읽을 수 없습니다 '1'정의의"GET 오류)

$data = array(
       'cols' => array(
        array('label' => 'Pie slice labels', 'type' => 'string'), 
        array('label' => 'Pie slice values', 'type' => 'number') 
       ), 
       'rows' => array(
        array('v' => intval($facebook_accounts[0]), 'type' => 'int'), 
        array('v' => intval($default_accounts[0]), 'type' => 'int') 
       ) 
      ); 
      $chart = new Chart('PieChart'); 
      $options = array('title' => 'Accounts'); 
      $chart->load(json_encode($data)); 
      echo $chart->draw('piechart', $options); 

[편집] 아마이 https://groups.google.com/forum/#!topic/google-visualization-api/Wi_WOVOgzG8

Creating Pie char from mysql database using php and google charts

답변

2

파이 차트 사용하지 않는 당신이 나를 :) 도움이 도움이 될 수 있습니다 LineChart와 같은 데이터 구조. PieCharts는 두 개의 데이터 열을 예상합니다. 첫 번째는 원형 조각 레이블이고 두 ​​번째 조각은 원형 조각 값입니다. 데이터를 올바른 형식으로 바꾸려면 데이터를 다시 구성해야합니다.

편집 :

여기에는, PieChart에 대한 DataTable의 구축을위한 몇 가지 예제 PHP 의사 코드입니다 :

$data = array(
    'cols' => array(
     array('label': 'Pie slice labels', type: 'string'), 
     array('label': 'Pie slice values', type: 'number') 
    ), 
    'rows' => array() 
); 
while (/* loop over SQL results */) { 
    $data['rows'][] = array('c' => array(
     array('v' => /* pie slice label */), 
     array('v' => /* pie slice value */) // use (int) or (float) to parse appropriately, as many databases output numbers as strings 
    )); 
} 
+0

내가 이런 식으로 뭔가하려고하면'$의 COL = 배열 ​​('라벨'=> 'facebook', 'type'=> 'string', 'label'=> 'facebook', 'type'=> 'string'); $ row = array ('label'=> '10', 'type'=> 'number', 'label'=> '10', 'type'=> 'number'); $ teste = array ($ col, $ row); ' 그리고 "$ chart-> load (json_encode ($ teste));"를 호출하십시오. "테이블에 열이 없음"오류가 발생합니다 –

+0

코드 출력이 거의 완전히 잘못된 데이터 구조입니다. 적절한 데이터 배열을 만들기 위해 샘플 PHP 코드로 내 대답을 수정합니다. – asgallant

+0

나는 아직도 뭔가를 놓친 것 같아 ... 정적 콘텐츠가있는이 데이터 배열을 만드는 방법에 대한 몇 가지 코드를 추가 하시겠습니까? ('$ data-'가'$ chart-> load()'에 보낼 준비가 된 방식으로) –