2013-08-17 2 views
4

저는 PHP와 MySQL 질의에 대해 아주 새로운 것 같습니다. 나는 MySQL 데이터베이스에서 Google 차트를 만들려고 노력하고 있지만 Google에서 수많은 시간 동안 검색 한 후에 필요한 정보를 찾을 수 없었습니다. 그러나 나는 유용 할 수있는 예를 발견했으나 여전히 내가 원하는대로 만들 수는 없다. 여기 내 테이블의 예가 있습니다.PHP와 MySQL로 Google Chart 빌드하기

Apple | Orange | Strawberry 
    -------------------------- 
    Like | Like | Like 
    Dislike | Like | Like 
    Dislike | Dislike | Like 
    Like | Dislike | Dislike 
    Like | Like | Like 

나는 얼마나 많은 추천하고 Apple, OrangeStrawberry에 대한 Dislike 계산합니다. 차트에서 나는 얼마나 많은 사람들이이 3 가지 과일을 좋아하고 싫어하는지 표시하고 싶습니다.

다음은 내가 본 코드이며 아직 공격 방법을 알아 냈습니다.

$query = mysql_query('SELECT * FROM data'); 

    $table = array(); 
    $table['cols'] = array(
     array('label' => 'cas', 'type' => 'string'), 
     array('label' => 'data', 'type' => 'number') 
    ); 

    $rows = array(); 
    while($r = mysql_fetch_assoc($query)) { 
     $temp = array(); 
     $temp[] = array('v' => $r['cas']); 
     $temp[] = array('v' => (int) $r['data']); 

    $rows[] = array('c' => $temp); 
    } 

    $table['rows'] = $rows; 

    $jsonTable = json_encode($table); 

    echo $jsonTable; 

모든 예가 도움이 될 것입니다. 고맙습니다.

+0

가능한 중복 [PHP 루프를 사용하여 Google 차트에 MySQL 데이터를 가져 오는 방법?] (http://stackoverflow.com/questions/11219282/how-to-get-mysql-data-into-a-google- chart-using-php-loop) – skv

+0

여기서 어떻게 문제에 접근 하는가는 최종 결과를 원하는대로 달라집니다. http://jsfiddle.net/asgallant/xbqr6/ 또는 다음과 같은 것을 찾으십니까? http://jsfiddle.net/asgallant/xbqr6/1/ 또는 다른 것입니까? – asgallant

+0

애 태움 : 첫 번째 것은 놀랄 것입니다! –

답변

4

당신의 PHP로 이것을보십시오 :

$query = mysql_query(" 
    SELECT 
     'Like' as 'preference', 
     SUM(IF(Apple = 'Like', 1, 0)) as Apple, 
     SUM(IF(Orange = 'Like', 1, 0)) as Orange, 
     SUM(IF(Strawberry = 'Like', 1, 0)) as Strawberry 
    FROM data 
    UNION 
    SELECT 
     'Dislike' as 'preference', 
     SUM(IF(Apple = 'Dislike', 1, 0)) as Apple, 
     SUM(IF(Orange = 'Dislike', 1, 0)) as Orange, 
     SUM(IF(Strawberry = 'Dislike', 1, 0)) as Strawberry 
    FROM data 
"); 

$table = array(); 
$table['cols'] = array(
    array('label' => 'preference', 'type' => 'string'), 
    array('label' => 'Apple', 'type' => 'number'), 
    array('label' => 'Orange', 'type' => 'number'), 
    array('label' => 'Strawberry', 'type' => 'number') 
); 

$rows = array(); 
while($r = mysql_fetch_assoc($query)) { 
    $temp = array(); 
    $temp[] = array('v' => $r['preference']); 
    $temp[] = array('v' => (int) $r['Apple']); 
    $temp[] = array('v' => (int) $r['Orange']); 
    $temp[] = array('v' => (int) $r['Strawberry']); 

    $rows[] = array('c' => $temp); 
} 

$table['rows'] = $rows; 

$jsonTable = json_encode($table); 

echo $jsonTable; 

는 SQL 데이터의 두 행 한 다음 Google 시각화 API DataTable의 형식으로 구문 분석됩니다 좋아의 합 싫어하는의 다른 합계를 반환해야합니다 JSON 문자열로 echo합니다. 차트의 AJAX 데이터 소스로 사용하는 것이 좋지만 사소한 수정으로 차트를 그리기 위해 자바 스크립트에 데이터를 직접 출력하는 데 적합합니다.

+0

나는 이것을 시도하고 "테이블에 열이 없습니다."라는 오류를 반환했습니다. –

+0

'$ jsonTable'의 내용은 무엇입니까? – asgallant

+0

이것은 내 [json.php] (http://pastebin.com/4EPZEJ7V) –

0

"내가 본 코드는 아직 알려지지 않았지만 공격 방법을 알아 냈습니다."

여기 디버깅하는 방법이 있습니다. 제거

  • 배열
  • JSON 만들기 DB를에서

    1. 가져 오기 데이터 배열
    2. 차트

    시험 후 하드 코드 위의 단계 2.에서 배열에 JSON을 보내기를 인코딩 수식에서 방금 1 단계를 잠시 동안.

    이제이 단계부터 코드 나머지 부분을 수행해야합니까? 하드 코딩 된 값을 사용하여 예상되는 차트를 볼 수 있습니까?

    예인 경우 이전에 가지고 있던 하드 코딩 된 값과 일치 할 때까지 데이터를 뒤로 이동하십시오. var_dump()