Я пытаюсь настроить некоторые простые диаграммы Amcharts для веб-страницы интрасети компании. За последние две недели я создал HTML/JS и создал приятную графику с использованием Amcharts (данные жестко закодированы в HTML для демонстрационных целей). Я также установил XAMPP и создал базу данных MySQL, заполненную таблицами и некоторыми данными, которые импортируются из файлов csv.Заполнение массива PHP из MySQL для использования Amcharts
Пока все работает нормально - я могу отображать красивую графику, и я могу собирать данные для подачи данных на графики. Тем не менее, я подошел к этой проблеме с двух концов (получение исходных данных в базу данных и представление данных в графике на веб-странице). Теперь мне нужно присоединиться к этим двум концам, поэтому я могу подавать Amcharts с данными из MySQL.
Я знаю, что мне нужно использовать PHP для получения данных из MySQL и поместить это в массив, который может использоваться Amcharts, но мои знания PHP очень простые, и я борюсь с кодом.
У меня есть PHP-код, который успешно соединяется с MySQL и извлекает данные для отображения в браузере - это работает. Я просто не знаю, как получить эти данные в многомерном массиве в формате, который требуется Amcharts для построения графика.
Было бы здорово, если бы вы, ребята, могли мне помочь и заполнить недостающие части. У меня есть псевдо-код для логики создания массива в качестве основы для «реального» PHP-кода.
Это псевдокод для заполнения массива:
; кодировка = UTF-8' , '', '', массив (PDO :: ATTR_EMULATE_PREPARES => ложно, PDO :: ATTR_ERRMODE = > PDO :: ERRMODE_EXCEPTION));
$stmt = $db->query("SELECT * FROM <mytable> WHERE <mycondition>"); $prevweek = "9999"; $headrowdone = 0; while($row = $stmt->fetch(PDO::FETCH_ASSOC)) { if ($prevweek < $row['WeekNumber']) { // New week so write out Category X Label ('Week') with the week number of the following data rows chartData.push($DataRow); $headrowdone = 0; } if (!$headrowdone) { $DataRow = "Week: "+$row['WeekNumber']; $headrowdone = 1; } // Write out the X-Axis Category value and the Y-Axis value $DataRow = $DataRow+$row['XAxisCategory']+": "+$row['YAxisCategory']; $prevweek = $row['WeekNumber']; } chartData.push($DataRow); ?>
В таблице SQL выглядит следующим образом:
CREATE TABLE (НомерНедели VARCHAR (4), XAxisCategory VARCHAR (50), YAxisValue целое число);
и имеет следующие данные: '1301', 'A', 10 '1301', 'B', 20 '1301', 'C', 24 '1302', 'A', 11 '1302', «B», 22 '1302', 'C', 27 '1303', 'A', 14 '1303', 'B', 23 '1303', 'C', 28 ... и т.д.
массив данных для amcharts должен выглядеть следующим образом:
вар chartData = [{недели: "1301", А: 10, Б: 20, с: 24 }, { недели: "1302",А: 11, Б: 22, С: 27 }, { Неделя: "1303", А: 14, Б: 23, С: 28 .... и т.д. }];
'json_encode' - функция, которую вы хотели сказать;) –
Отредактированный ответ, хорошее место, thx. – Cups