2013-07-02 2 views
0

실제 질문은 날짜가 첫 번째 열에 사용될 때 Google 차트 데이터 테이블 양식에 MySql 쿼리를 채우는 방법입니까?MySql 데이터베이스의 Google 차트 열 그래프

Google Charts API를 사용하여 세로 막 대형 차트를 만들려고합니다. 문제는 데이터가 시계열 데이터라는 것입니다. 많은 날짜가 표시됩니다. 데이터 테이블을 생성하기 위해이 작업을 수행하는 방법은 날짜에 0 열을 지정하고 이후의 각 열은 측정중인 데이터를 나타냅니다. 그 정보는 문서에서 파생됩니다. 데이터를 후속 열에 할당하는 방법을 파악할 수 없습니다. 나는 이것에 대해 지금 광범위하게 연구 해왔다. 거기에 가까운 대답이 있지만, 나는 이것을 위해 일할 수 없다. 다음은 현재 차트 데이터 테이블을 생성하는 코드입니다.

$invArr = array('cols' => array(

          array('label' => 'date', 'type' => 'date'), 
          array('label' => 'SKU', 'type' => 'number')), 
      'rows' => array()); 

while($row = mysql_fetch_row($query)) { 
    $invArr['rows'][] = array('c' => array(array('v' => $row[0]), array('v' => $row[1]))); 
} 

Google 차트 문서에서 열 0은 항상 연속 데이터의 날짜라는 것을 알고 있습니다. 각 후속 열은 측정되는 데이터이며,이 경우 SKU 번호입니다. 각 행의 첫 번째 배열에 날짜를 나타내고 이후 배열은 qtyoh 데이터를 나타낼 필요가 있습니다. 어떻게해야할지 모르겠다.

+0

나는 당신이 여기에서 묻고있는 것을 100 % 확신하지 못한다. (그리고 코멘트/대답의 부족을 고려할 때, 나는 그것에 대해 혼자가 아니라고 생각한다). 문제가 무엇인지 설명해 주시겠습니까? 날짜는 원하지만 날짜는 표시하지 않고 별도의 값 배열을 표시하십시오. – jmac

+0

응답 해 주셔서 대단히 감사합니다. 나는 이것을하는 방법을 묻고 있었다. 그래서 내가 모범이 없다. 약 5 분 전에 이걸 알아 냈어. 나는 이것에 대해 몇 가지 예를 찾을 수 있었는지 놀랐다. 나는 곧 답변을 게시 할 것이다. – attentionjay

+0

실제 질문에 선명도를 추가하기 위해 제 질문을 편집했습니다. 나는 대답을 가지고 있지만, 그것은 clunky하고 아마도 크게 단순화 수 있습니다. – attentionjay

답변

0

나는 이것을 며칠 동안 연구했고 마침내 여러 가지 질문에 대한 답변을 하나로 결합하여 문제를 해결할 수있었습니다.

나는 뚜렷한 날짜를 쿼리하여 배열에 배치하는 것으로 시작했습니다. json 인코딩 할 때 날짜가 문자열이기 때문에이 작업은 매우 중요합니다. 그것을 분석하여 날짜 (년, 월, 일) 형식으로 정확하게 전달하는 것이 중요합니다. 나중에 변수를 사용하여 날짜를 나타내는 것도 중요합니다.

$dateArray = array(); 

while($row = mysql_fetch_row($queryDates)) { 

    $dtArray = explode('-',$row[0]); 
    $day = (int) $dtArray[1]; 
    $month = ((int) $dtArray[0])-1; 
    $year = (int) $dtArray[2]; 
    $dateArray[] = "Date($year, $month, $day)"; 

} 

그런 다음 SKU의 쿼리를 반복하여 테이블의 열을 설정합니다.

$invArr = array(
    'cols' => array(
     array('label' => 'Date', 'type' => 'date') 
     ) 
    ); 

while($row = mysql_fetch_row($querySkus)) { 
$invArr['cols'][] = array('label' => $row[0], 'type' => 'number'); 

} 

다음으로 수량을 쿼리하여 배열에 배치하십시오. 그런 다음 각 값을 반복하고 테이블 배열 ($ inVarr)을 채 웁니다.

$quantities = array(); 
while($row = mysql_fetch_row($queryQty)) { 
    $quantities[] = (int) $row[0]; 
} 

$qtyCounter = 0; 
for($i=0;$i<count($dateArray);$i++) { 

    $invArr['rows'][] = array(
     'c' => array(
       array('v' => $dateArray[$i]), 
       array('v' => $quantities[$qtyCounter]), 
       array('v' => $quantities[$qtyCounter+1]), 
       array('v' => $quantities[$qtyCounter+2]) 
       ) 
      ); 
    $qtyCounter=$qtyCounter+3; 

} 

그러면 데이터 테이블의 데이터를 반환하는 json 인코딩 된 배열을 반향시킬 수 있습니다.

echo json_encode ($ invArr);

저는 이것이 다소 어색하다고 생각하지만 작동합니다.