[PHP] 설문조사 결과 데이터 차트 만들기 (2/4) - survey 테이블의 데이터를 JSON으로 생성하기

2022. 10. 29. 07:03무료강좌&튜토리얼/PHP

[PHP] 설문조사 결과 데이터 차트 만들기 (2/4) - survey 테이블의 데이터를 JSON으로 생성하기

 

구글에서 제공하는 차트 라이브러리는 웹브라우저에서 작동하는 자바스크립트 언어로 구성되어 있다.

그러므로 서버와 클라이언트 갑의 통신이 필요하다.

서로 다른 언어 간에 데이터를 전달해야 하므로 survey 테이블의 데이터를 JSON 데이터로 생성하는 작업이 필요하다.

 

다음은 survey 테이블의 데이터를 JSON 데이터로 생성하는 예제이다.

[코드 191]과 기능은 거의 흡사하며 출력하는 데이터를 json_encode() 함수를 사용한다.

[예제: 193_surveyResultJson.php ]

<?php
  include $_SERVER['DOCUMENT_ROOT'].'/php/common/171_session.php';
  include $_SERVER['DOCUMENT_ROOT'].'/php/common/179_checkSignSession.php';
  include $_SERVER['DOCUMENT_ROOT'].'/php/cssControlPanel/163_connection.php';

  $sql = "SELECT kind FROM survey";
  $result = $dbConnect->query($sql);

  if($result){
    $surveyDataCount = $result->num_rows;

    $offlineStore = 0;
    $onlineStore = 0;
    $website = 0;
    $friends = 0;
    $academy = 0;
    $noMemory = 0;
    $etc = 0;

    if($surveyDataCount > 0){
      for($i = 0; $i < $surveyDataCount; $i++){
        $surveyData = $result->fetch_array(MYSQLI_ASSOC);
        
        switch($surveyData['kind']) {
          case 'offlineStore':
            $offlineStore++;
            break;
          case 'onlineStore':
            $onlineStore++;
            break;
          case 'website':
            $website++;
            break;
          case 'friends':
            $friends++;
            break;
          case 'academy':
            $academy++;
            break;
          case 'noMemory':
            $noMemory++;
            break;
          case 'etc':
            $etc++;
            break;
        }
      }

      echo json_encode(
        array(
          'result' => 'ok',
          'offlineStore' => $offlineStore,
          'onlineStore' => $onlineStore,
          'website' => $website,
          'friends' => $friends,
          'academy' => $academy,
          'noMemory' => $noMemory,
          'etc' => $etc,
        )
      );
    } else {
      echo json_encode(
        array(
          'result' => 'noData'
        )
      );
    }
  } else {
    echo json_encode(
      array(
        'result' => 'error'
      )
    );
  }
?>

1. survey 테이블에서 kind 필드의 데이터를 모두 불러오는 쿼리문을 만든다.

2. 쿼리문을 실행하고 레코드의 수를 변수 surveyDataCount에 대입한다.

3. 변수 offlineStore에는 survey 테이블의 kind 필드값이 offlineStore인 레코드의 합계를 대입한다.

4. 변수 onlineStore에는 survey 테이블의 kind 필드값이 onlineStore인 레코드의 합계를 대입한다.

5. 변수 website에는 survey 테이블의 kind 필드값이 website인 레코드의 합계를 대입한다.

6. 변수 friends 에는 survey 테이블의 kind 필드값이 friends인 레코드의 합계를 대입한다.

7. 변수 academy에는 survey 테이블의 kind 필드값이 academy인 레코드의 합계를 대입한다.

8. 변수 noMembry에는 survey 테이블의 kind 필드값이 noMemory인 레코드의 합계를 대입한다.

9. 변수 etc에는 survey  테이블의 kind 팔드값이 etc인 레코드의 합계를 대입한다.

10. survey 테이블의 레코드의 수만큼 반복문을 작동시킨다.

11. survey 테이블의 kind 필드값을 switch 문을 통하여 분류하여 각각의 변수에 1씩 더하여 더한값을 집계한다.

12. 집계된 데이터를 json_encode() 함수를 사용하여 JSON으로 변환된 값을 출력한다.

 

실행 URL은 http://localhost/php/gChart/193_surveyResultJson.php  이다.

 

실행결과

데이터의 값은 랜덤으로 입력한 데이터이므로 위의 결과이미지와 각자의 결과값들은 다를 수 있다.

 

 


 

 

 

초보자를 위한 PHP 200제
김태영 지음 | 정보문화사