본문 바로가기

개인 연구실/David의 연구실

홈페이지에 구글 chart 적용상의 문제점 입니다. 조언부탁합니다.


[코딩의 목적]

1. 달력에서 날짜를 선택해서, 조회구간을 입력한다.
2. 입력된 조회구간에 해당하는 미세먼지 측정data를 배열에 저장한다
3. 배열에 저장된 data를 json data로 변환한다
4. 변환된 data를  $jsonTable에 지정한다.
5. $jsonTable 의 data를 구글chart로 보내서 그래프를 그린다


[코딩 소스/저장위치]

1. 달력에서 날짜를 선택해서, 조회구간을 입력한다.
  - 저장위치 : word press "Page" (myscript)
  - 작업내용 1
    . 달력에서 날짜를 선택하고, 선택한 날짜를 php "data-to-graph(php shot code)" 로 보낸다 
  - 코딩 소스
 ----------------------------------------------------------------------------------------------------------------------------------------------
       <form action="" method="post"><input id="datepicker3" name="datepicker3" type="text" /> ~ <input id="datepicker4" name="datepicker4" type="text" />
       <input type="submit" value="조회하기" /></form>&nbsp;
      [xyz-ips snippet="data-to-grahp"]
 ----------------------------------------------------------------------------------------------------------------------------------------------
 2.선택된 날짜구간의 data(측정data)를 배열에 저장하고 , data를 json data 형태로 변환한다.
 3.변환된 data를  $jsonTable에 지정한다.
   - 코딩소스 (shot code 내용 : [xyz-ips snippet="data-to-grahp"] )
 ----------------------------------------------------------------------------------------------------------------------------------------------
$id=$_POST['datepicker3'];
$id2=$_POST['datepicker4'];
 
$conn=mysqli_connect("localhost","aaaaa",aaaaaa,"aaaaaaa", "22222");
$sql="
select * from (
SELECT dt_create, pm010, pm025, pm100
FROM  `finedust`
order by dt_create desc
limit 100000
)t_a
order by t_a.dt_create";

$result = mysqli_query($conn,$sql) ;

/* DB(DUST)의 TABLE(finedust)에 접속하여 측정결과를 읽어 배열에 저장함 */
  $rows=array();
  $flag=true;
  $table=array();
  $table['cols']=array(
  //  array('lable'=>'id' , 'type'=>'number'),
    array('lable'=>'dt_create','type'=>'string'),
    array('pm010'=>'pm010','type'=>'number'),
    array('pm025'=>'pm025','type'=>'number'),
    array('pm0100'=>'pm100','type'=>'number')
  );
  $rows=array();
  $date0 = new DateTime($id);
  $date2 = new DateTime($id2);
  while($r=mysqli_fetch_assoc($result)){
    $date1 = new DateTime($r['dt_create']);
    if ($date1>$date0 && $date1<$date2) {
      $temp=array();
      //$temp[]=array('v'=>(int) $r['id']);
      $temp[]=array('v'=>(string) $r['dt_create']);
      $temp[]=array('v'=>(int) $r['pm010']);
      $temp[]=array('v'=>(int) $r['pm025']);
      $temp[]=array('v'=>(int) $r['pm100']);
      $rows[]=array('c'=>$temp);
      echo($r['dt_create']."__[PM1.0: ".$r['pm010']."]__[PM2.5: ".$r['pm025']."]__[PM10: ".$r['pm100']."]<br>");
      }
    }
 $table['rows']=$rows;
/* 배열에 저장된 data를 그래프용 코드(json)로 변환 */
  $jsonTable=json_encode($table);
------------------------------------------------------------------------------------------------------------------------------------------
datepicker.js 코드 ==> 저장위치 (p-content/themes/twentysixteen/js/datepicker.js )


jQuery( document ).ready(function( $ ) {
jQuery( "#datepicker1,#datepicker2" ).datepicker({
dateFormat: 'yy-mm-dd'
});
});

jQuery( document ).ready(function( $ ) {
jQuery( "#datepicker3,#datepicker4" ).datepicker({
dateFormat: 'yy-mm-dd',
    prevText: '이전 달',
    nextText: '다음 달',
    monthNames: ['1월','2월','3월','4월','5월','6월','7월','8월','9월','10월','11월','12월'],
    monthNamesShort: ['1월','2월','3월','4월','5월','6월','7월','8월','9월','10월','11월','12월'],
    dayNames: ['일','월','화','수','목','금','토'],
    dayNamesShort: ['일','월','화','수','목','금','토'],
    dayNamesMin: ['일','월','화','수','목','금','토'],
    showMonthAfterYear: true,
    changeMonth: true,
    changeYear: true,
    yearSuffix: '년'    

});
});

------------------------------------------------------------------------------------------------------------------------------------------


4 $jsonTable 의 data를 구글chart로 보내서 그래프를 그린다
  - 자바스크립트 호출 ( word press  page 에 저장)
   echo("<script>location.replace('/wp-content/themes/twentysixteen/js/googlechart.js');</script>"); 
    drawChart(jsonTable);

  - 호출된 스크립트 안의 함수(drawchart 함수)
    googlechart.js 화일 ==>  저장위치( cafe24 서버) www/wp-content/themes/twentysixteen/js/googlechart.js
------------------------------------------------------------------------------------------------------------------------------------------
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript">
google.charts.load('43', {'packages':['corechart']});
google.charts.setOnLoadCallback(drawChart);
function drawChart(jsonTable) {
    var data = new google.visualization.DataTable(<jsonTable);
  var options = {
  title: 'Dust measuring',
  curveType: 'function',
  legend: { position: 'bottom' }
 };
  var chart = new google.visualization.LineChart(document.getElementById('curve_chart'));
  chart.draw(data, options);
  }
----------------------------------------------------------------------------------------------
   


3. 질문사항
-------------------------------------------------------------------------------------------------------------
 1. 상기 3번항에서 만든 $jsonTable을  4번항의 차트에 전달을 해서, 그래를 그려야 합니다
    - 예전에 워드프레스가 아닌, index.php에 모든 코드를 넣고 작성했을땐,때는 별 문제없이 잘 작동을 했는데,
      word press에서는  자바스크립트, php code , page code등이 서로 분리가 되어있어서, 서로간에 data를 주고받는 과정이
      원활치가 않습니다.

 2. 현재상태
    - 상기 코드로 실행하면, 자바 스크립트가 실행이 되지 않고,  코드를 화면에 뿌려주기만 하는 상태입니다.

 3. 어떤 방법으로 $jsonTable 데이터를 googlechart.js 안의 함수로 전달, 함수실행을  하는것이 좋은지 문의드립니다.