2014-01-28 3 views
1

Я использую Google диаграмму и у меня есть проблемы, чтобы передать дату от PHP для яваскриптаGoogle графика: Свидание с JSON

Я использую это:

PHP:

$dataArray = array(); 
while ($resultat = $resultats->fetch_array(MYSQLI_ASSOC)) 
$thedate = "(".$year.", ".$month.")"; 
$fixe = "12"; 
$variable = "14"; 
$dataArray[] = array($thedate, (int) $fixe, (int) $variable); 

JS:

var data = new google.visualization.DataTable(); 
data.addColumn('date', 'Date'); 
data.addColumn('number', 'Taux fixes'); 
data.addColumn('number', 'Taux variables'); 
data.addRows(<?php echo json_encode($dataArray); ?>); 

ошибка: Uncaught ошибка: несоответствие типов. Значение (2014, 1) не соответствует типу даты в столбце индекс 0

Кто-нибудь знает, как отправить дату? В каком формате? В диаграммах Google есть «новая дата (2012, 03)» в JS

Спасибо.

ответ

2

При использовании JSON, правильный формат даты является строкой, как это: 'Date(year, month, day)' (примечания нет new ключевого слова, используемого в строке), где month равен нуль индексированным (так январь 0 не 1). Единственный DataTable метод строительства, который поддерживает ввод даты таким образом проходит представление JSON в DataTable непосредственно конструктору:

var data = new google.visualization.DataTable(<?php echo json_encode($dataTable, JSON_NUMERIC_CHECK); ?>); 

Это требует перенастройки вашего PHP немного, чтобы построить правильную DataTable строку JSON. Вам необходимо создать ассоциативный массив с ключами 'cols' и 'rows'. Клавиша 'cols' задает столбцы для вашего DataTable, а ключ 'rows' содержит строки данных:

$dataTable = array (
    'cols' => array (
     array('type' => 'date', 'label' => 'Date'), 
     array('type' => 'number', 'label' => 'Taux fixes'), 
     array('type' => 'number', 'label' => 'Taux variables') 
    ), 
    'rows' => array() 
); 
while ($resultat = $resultats->fetch_array(MYSQLI_ASSOC)) { 
    // put results in $year, $month, $fixe, $variable 

    $month = $month - 1; // correcting for javascript's 0-indexed months 
    $dataTable['rows'][] = array('c' => array(
     array('v' => "Date($year, $month, 1)"), 
     array('v' => $fixe), 
     array('v' => $variable) 
    )); 
} 
Смежные вопросы