Как вставить формат JSON в dataProvider с помощью библиотеки amcharts с mySql

Я хочу сделать то же самое, что и здесь, но с данными, извлеченными из базы данных mySQL и использованием библиотеки amCharts, так что здесь есть фрагмент кода, используемого для извлечения данных.

Файл data.php

<?php
include("include/connexion.php");
$requete = "SELECT * from table";
$resultat = mysql_query($requete) or die(mysql_error());
$total_vue = 0 ;
$rows = array();
while( $data = mysql_fetch_assoc( $resultat ) ) {
$rows[] = $data;
$varr = $data[ 'date' ];
$total_vue += $data[ 'temps' ];
$timestamp = strtotime( $varr );
$date = date( "m-d-Y", $timestamp );
$time = date( "G-i-s", $timestamp );
}
?>

Итак, я извлек все данные в $rows,

В моей базе данных у меня есть 3 столбца:

id    : int(11) with AUTO_INCREMENT,
temps : int(11) ,
date  : timestamp

Я смог распечатать данные в диаграмме, следуя этому Учебник по amcharts: использование загрузчика данных для подключения к диаграммам в базе данных mysql

Для отображения данных нам нужно что-то вроде этого:

"dataLoader": {
"url": "json_encode.php"},

Файл : json_encode.php содержит:

<?php
include( "data.php" );
echo  json_encode( $rows );
?>

Извлеченные данные в формате JSON.

График был прост, поэтому я хочу что-то более продвинутое. я нашел это Демонстрация amcharts: множественные наборы данных

Вот снимок кода:

var chartData1 = [
{ country: "Czech Republic", litres: 156.90},
{ country: "Ireland", litres: 131.10},
{ country: "Germany", litres: 115.80},
{ country: "Australia", litres: 109.90},
{ country: "Austria", litres: 108.30},
{ country: "UK", litres: 99.00}
];
var chart = AmCharts.makeChart( "chartdiv", {
type: "stock",
"theme": "light",
dataSets: [ {
title: "first data set",
fieldMappings: [ {
fromField: "value",
toField: "value"}, {
fromField: "volume",
toField: "volume"} ],
dataProvider: chartData1,
categoryField: "date"}]
});

Итак, в заключение я хочу вставить «json_encode.php» в dataProvider но я не нашел способ сделать это.

Что-то вроде:

"dataProvider": {
"url": "json_encode.php"},

Любая помощь будет оценена 🙂

Обновить :

ПЕРВЫЙ

файл json_encode.php при загрузке показывает

[{"id":"1","temps":"5","date":"2015-08-17 02:00:00"},{"id":"2","temps":"12","date":"2015-08-17 07:00:00"},{"id":"3","temps":"8","date":"2015-08-17 12:17:11"},{"id":"4","temps":"18","date":"2015-08-17 16:22:00"},{"id":"5","temps":"6","date":"2015-08-18 19:40:42"},{"id":"20","temps":"2","date":"2015-08-18 11:22:32"},{"id":"25","temps":"20","date":"2015-08-18 12:21:00"},{"id":"26","temps":"9","date":"2015-08-18 16:00:00"},{"id":"30","temps":"15","date":"2015-04-18 00:00:00"},{"id":"31","temps":"12","date":"2015-01-18 00:00:00"},{"id":"33","temps":"18","date":"2014-10-18 00:00:00"},{"id":"34","temps":"6","date":"2014-07-18 00:00:00"},{"id":"44","temps":"14","date":"2015-08-17 18:24:00"},{"id":"88","temps":"19","date":"2015-08-19 00:00:00"},{"id":"100","temps":"12","date":"2015-08-18 04:00:00"},{"id":"102","temps":"18","date":"2015-08-18 10:00:00"},{"id":"103","temps":"26","date":"2015-08-18 19:00:00"},{"id":"104","temps":"4","date":"2015-08-18 20:00:00"},{"id":"105","temps":"0","date":"2015-08-18 15:25:20"},{"id":"106","temps":"1","date":"2015-08-18 16:17:00"},{"id":"107","temps":"1","date":"2015-08-18 16:17:08"},{"id":"108","temps":"3","date":"2015-08-18 16:17:14"},{"id":"109","temps":"1","date":"2015-08-18 16:17:17"},{"id":"110","temps":"8","date":"2015-08-18 16:17:27"},{"id":"111","temps":"3","date":"2015-08-18 16:17:32"},{"id":"112","temps":"5","date":"2015-08-18 16:17:39"},{"id":"113","temps":"8","date":"2015-08-18 16:17:49"},{"id":"114","temps":"10","date":"2015-08-18 16:18:02"},{"id":"115","temps":"21","date":"2015-08-18 16:18:27"},{"id":"116","temps":"1","date":"2015-08-18 16:18:30"},{"id":"117","temps":"7","date":"2015-08-18 16:18:39"},{"id":"118","temps":"5","date":"2015-08-18 16:18:46"},{"id":"119","temps":"18","date":"2015-08-18 16:19:07"},{"id":"120","temps":"8","date":"2015-08-18 16:19:17"},{"id":"121","temps":"1","date":"2015-08-18 16:19:20"},{"id":"122","temps":"3","date":"2015-08-18 16:19:36"},{"id":"123","temps":"3","date":"2015-08-18 16:19:41"}]

с использованием dataLoader, как @martynasma предлагает получить диаграмму, но без каких-либо данных: кажется, что дата была хорошо извлечена, но у меня нет данных (примечание: я использовал data.php, который я поместил выше)

диаграммы успешно загружены, но не данные

ВТОРОЙ

, при изменении data.php на то, что @martynasma предложило загружать диаграммы, но без каких-либо данных или даты.

файл json_encode.php показывает

[{"date":1439769600,"value":"5"},{"date":1439787600,"value":"12"},{"date":1439806631,"value":"8"},{"date":1439821320,"value":"18"},{"date":1439919642,"value":"6"},{"date":1439889752,"value":"2"},{"date":1439893260,"value":"20"},{"date":1439906400,"value":"9"},{"date":1429308000,"value":"15"},{"date":1421535600,"value":"12"},{"date":1413583200,"value":"18"},{"date":1405634400,"value":"6"},{"date":1439828640,"value":"14"},{"date":1439935200,"value":"19"},{"date":1439863200,"value":"12"},{"date":1439884800,"value":"18"},{"date":1439917200,"value":"26"},{"date":1439920800,"value":"4"},{"date":1439904320,"value":"0"},{"date":1439907420,"value":"1"},{"date":1439907428,"value":"1"},{"date":1439907434,"value":"3"},{"date":1439907437,"value":"1"},{"date":1439907447,"value":"8"},{"date":1439907452,"value":"3"},{"date":1439907459,"value":"5"},{"date":1439907469,"value":"8"},{"date":1439907482,"value":"10"},{"date":1439907507,"value":"21"},{"date":1439907510,"value":"1"},{"date":1439907519,"value":"7"},{"date":1439907526,"value":"5"},{"date":1439907547,"value":"18"},{"date":1439907557,"value":"8"},{"date":1439907560,"value":"1"},{"date":1439907576,"value":"3"},{"date":1439907581,"value":"3"}]

кажется, что с датой что-то не так

графики загружены, но без данных и даты, показывающей 1970 год !!!

Теперь я добавил некоторые данные в mySql
Это данные
ДАННЫЕ, полученные из базы данных mySql

это то, что я получаю, я рад, что некоторые данные выходят, но это не то, что я хочу

появляются только некоторые данные, которые я добавил недавно

@martynasma Хорошо, я обновил minPeriod и метки времени, но я все еще не могу получить правильную дату, обратите внимание, что json_encode.php содержит что-то вроде {"date":1439769600,"value":"5"} поле даты это НЕ ПРАВИЛЬНО, и именно поэтому на загруженной странице я получаю 1970-01-17 00:00 … я думаю, что MySql установить дату, как это, если он не нашел правильную дату
Нет, я искал, чтобы разрешить формат даты, и я смог получить правильное значение с помощью небольшой модификации вашего кода

while( $data = mysql_fetch_assoc( $resultat ) ) {
$rows[] = array(
"date" =>  date( 'Y-m-d H:i:s', strtotime( $data['date'])  ),
"value" => $data[ 'temps' ]
);
}

после этого страница загружена с правильной датой, но все еще не получает данные, и графики выглядят странно

график с точной датой, но панель исчезает

Вы можете увидеть это на панели зума я получаю только 1 час и Макс а остальные исчезли, и я не знаю почему

вот как это должно выглядеть , этот захват, если из вторых данных, как я нашел из учебника
оригинальные графики из amcharts

1

Решение

Если вы хотите использовать Data Loader на биржевой диаграмме, вам нужно добавить dataLoader блок в вашем определении набора данных. т.е .:

var chart = AmCharts.makeChart( "chartdiv", {
"type": "stock",
"dataSets": [ {
"title": "first data set",
"fieldMappings": [ {
"fromField": "value",
"toField": "value"}, {
"fromField": "volume",
"toField": "volume"} ],
"categoryField": "date",
"dataLoader": {
"url": "json_encode.php"}
} ],
// the rest of your Stock Chart config
// ...
} );

Есть раздел об этом в Data Loader doc.

Сказав это, ваш PHP-скрипт, который генерирует данные JSON, похоже, не настроен для полей, определенных в вашем наборе данных. fieldMappings,

Кроме того, он разделяет дату и время на отдельные поля. Биржевая диаграмма не может считывать даты и время из отдельных полей, поэтому вам нужно иметь одно.

Я полагаю, ваш PHP-скрипт может быть переделан так:

<?php
$requete = "SELECT * from table";
$resultat = mysql_query( $requete ) or die( mysql_error() );
$rows = array();
while( $data = mysql_fetch_assoc( $resultat ) ) {
$rows[] = array(
"date" => strtotime( $data[ 'date' ] ) * 1000,
"value" => $data[ 'temps' ]
);
}
echo json_encode( $rows );
?>

Следующее должно создать JSON, который должен работать с вашей конфигурацией диаграммы.

Обратите внимание, что я умножаю дату на 1000, потому что временная метка PHP указана в секундах, а временная метка JavaScript — в миллисекундах.

Кроме того, кажется, у вас есть почасовые данные. Вам нужно будет установить minPeriod в categoryAxesSettings на «чч», чтобы график знал, что это не ежедневные данные. т.е .:

"categoryAxesSettings": {
"minPeriod": "hh",
// the rest of your category axes settings
// ...
}

И, наконец, расширение PHP MySQL устарело. Рассмотреть возможность перехода на MySQLi, что является правильным способом доступа к базе данных MySQL в современных средах PHP.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]