2013-06-05 2 views
0

작업을 한 다음 차트가 읽을 수있는 방식으로 표시하는 방법으로 출력 데이터를 알아내는.차트에 대한 올바른 방법은 내가 내 데이터베이스에서 데이터를 얻을 수있는 방법을 알아 내기 위해 노력했습니다

컨트롤러 : $ this-> Record-> virtualFields [ 'sum'] = 'COUNT (*)'; 당신이 볼 수 있듯이

/app/Controller/RecordsController.php (line 72) 
array(
'Trees' => '2', 
'Socks' => '1', 
'Things' => '9', 
'Mice' => '1', 
'Clothes' => '6', 
'Shoes' => '4', 
'Underwear' => '3', 
'Tables' => '6', 
'Mouse' => '1' 
) 
/app/Controller/RecordsController.php (line 74) 
array(
(int) 0 => '2, 1, 9, 1, 6, 4, 3, 6, 1' 
) 

에서, impload가, 어떤 이유로, 물질 필드를 제거 : 페이지 내 '디버깅'표시 방법

$records=$this->Record->find('list', 
     array('fields' => array('drug_id', 'sum'), // from the table 'drugs' with 2 fields which drug_id and drug 
      'group' => 'drug_id')); 
    debug($records); 
    $chartData[] = implode(', ',$records); 
    debug($chartData); 

.

'Underwear', '1' 
etc 

편집 : 나는 hasMany의을 사용하는 방법

은 데이터베이스와 화합물 ID를 할당하는 나는 다음과 같이 표시해야합니다. 동일한 화합물에는 많은 다른 사용자가 있기 때문입니다. 그리고 많은 다른 혼합물은 동일한 사용자를 가질 것입니다. 그냥 그것을 수행하는 방법과 무엇을 알려줍니다처럼

내가 설명서를 읽고 있어요,하지만 난 뭔가를 누락하는 경우 나도 몰라하지만 그냥 무작위로 문서에 자르는 것처럼 보인다 ... 보인다 그것을 시작하십시오. 내가 지금 쿼리를 실행한다면

내가

'5' => '2' 

으로 값을 얻을 것이다 (나는이 예를 들어 위의 쿼리를 편집)하지만, 나는 가정, 어떤 뜻을 연결하는 hasMany의를 사용해야합니다 나는 5

+0

배열을 Google 차트에 전달하는 방법을 보여줄 수 있습니까? – Nunser

+0

초기 코드 다음에 $ this-> set ('output', $ records); 그러면 출력 변수가 내보기에 표시됩니다. 나 또한 쉼표로 데이터를 imploding하려고했는데, 어떤 이유로 sum 값을 가지고 있지만 물질 값을 남기지 않았다. – user2444539

+0

그래서 js 스크립트에서 php 변수를 출력/implode하려하고있다? 아니면 당신이보기에 인쇄하고 최고를 바랄 수 있습니까? 변수를 출력 할 뷰의 정확한 코드로 질문을 업데이트하십시오. 오류가 있으므로이를 보지 않으면 도움이되지 않습니다. – Nunser

답변

0

대신 '테이블'을 표시 할 수 있도록 내 데이터베이스

ID | Compound 
5 | Tables 

에있을 난 당신이 꽤 혼란 생각합니다. 단계별로 살펴 보도록하겠습니다.

먼저, implode은 키가 아닌 배열의 값을 연결하므로 논리적으로 출력을 얻습니다. "어떤 이유로 든"그렇지 않습니다. 이 기능에 대해 the docs을 읽으면 그 기능을 이해하는 데 매우 도움이됩니다.

둘째 ... 음, 내가 무엇을보고, 당신은 JS와 PHP 변수를 혼합하려는에서. "가능한"것이지만, 실제로 무엇을하고 있는지 이해해야합니다. Google Charts 또는 Highcharts는 최소한 원하는 출력을 기반으로 js로 그래프를 구성합니다. 그것은 당신이 컨트롤러 변수를 내파 그냥보기에 그처럼 그것을 를 인쇄하고 있다는 이상해. 그대로

그래서보기로 $records 변수를 전달한다. 컨트롤러의 js- 적절한 구조로 변환하지 마십시오. 왜? (php 변수로) 뷰의 어느 부분에서도 $records을 사용할 수 있고 js 부분에 필요한 구조 만 출력 할 수 있습니다.

이제 그래프. 첫 번째 예가 Google 차트를 사용한다고 가정 해 보겠습니다. 어딘가에보기에, 당신은 당신이 JS에 PHP를 찾기 변수에서 "번역"할 데이터가 오른쪽의이

<script type="text/javascript"> 
    //definitions of your chart, I'm not going to do that here 

    //the data part 
    var data = new google.visualization.DataTable(); 
    data.addRows([ 
     ['Mushrooms', 3], 
     ['Onions', 1], 
     ['Olives', 1], 
    ]); 

비슷한을해야합니까?이를 위해이

//the data part 
    var data = new google.visualization.DataTable(); 
    data.addRows([ 
     <?php 
      foreach($records as $compound => $sum) 
      echo "['".$compound."', ".$sum."], "; 
     ?> 
    ]); 

과 같은 작업을 수행 할 수 있습니다 그리고 당신은 당신이 필요로하는 JS 형식이 있어야합니다. 구문을 확인해보십시오. 그러나 테스트하지 않았으므로 쉼표 나 추가 할 내용이있을 수 있습니다. echo.

내가 충분히 명확하게 만들었 으면 좋겠다. 여기에 대해 혼란 스러우면 js에서 php 변수를 사용하는 방법을 읽는 것이 좋습니다.

+0

나는 단지 ... 당신에게 감사하는 방법을 모른다. 거의 3 일을 조사하고 알아 내려고했지만 처음 시도에서 즉시 수정했습니다. 고맙습니다. 예. PHP/js와 함께해야하는 첫 프로젝트 중 하나이기 때문에 매우 혼란 스러웠습니다. 나는 당신의 반응에서 많은 것을 배웠다. 다시 한번 감사드립니다. – user2444539

+0

도와 줘서 매우 기쁘게 생각합니다. 저는 PHP와 JS 사이의 혼란을 완전히 이해합니다. 나중에 참조 할 수 있도록, js 나 그 안에있는'var test '와 같은 echo가 그 길이다. 또한'json_encode' [php의 함수] (http://php.net/manual/en/function.json-encode.php)를 확인하면 도움이 될 것입니다. – Nunser

+0

나는 매우 다른 질문을하지만 똑같은 프로젝트에있다. 네가 괜찮 으면 그걸 볼 수 있니? 나는 원래 게시물에서 그것을 편집 할 것이다. 같은 스레드에서 규칙에 대해 다른 질문을하고 있습니까? – user2444539

관련 문제