Fusioncharts - 2D Column Stack, отображающий ограниченные записи
Я использую MySQL/PHP с PHPWrapper, чтобы использовать FusionCharts. Мне удалось получить данные, чтобы они отображались в виде двухмерных столбцов, но они застряли на 7, несмотря на наличие каких-либо ограничений.
Я использую его для отображения количества записей за каждый месяц, начиная с апреля до ноября, но первый стек начинается с мая, когда я группирую данные по месяцам в ASC. Интересным моментом является то, что когда я изменяю это на DESC, я вижу данные за октябрь-апрель (7 записей) и данные за ноябрь пропадают. Я не установил никаких ограничений, которые могли бы остановить это, но все же я могу заставить это работать.
Мой тип данных в MySQL:
acqid - INT
acq_month - DATE
fusioncharts.php и связанный с ним JS правильно вызваны в файле.
Ниже приведен код, который я использую;
<?php
// Form the SQL query that returns the top 10 most populous countries
$strQuery = "SELECT count(acqid), acq_month FROM newacq GROUP BY MONTH(acq_month) ASC";
// Execute the query, or else return the error message.
$result = $conn->query($strQuery) or exit("Error code ({$conn->errno}): {$conn->error}");
$arr=mysqli_fetch_array($result);
//while($arr=mysqli_fetch_array($result)) {
// print_r($arr);
//}
// If the query returns a valid response, prepare the JSON string
if ($result) {
// The `$arrData` array holds the chart attributes and data
$arrData = array(
"chart" => array(
"caption" => "New Acq",
"showValues" => "1",
"theme" => "zune"
)
);
$arrData["data"] = array();
// Push the data into the array
while($row = mysqli_fetch_array($result)) {
array_push($arrData["data"], array(
"label" => date("M-Y", strtotime($row["acq_month"])),
"value" => $row["count(acqid)"],
)
);
}
/*JSON Encode the data to retrieve the string containing the JSON representation of the data in the array. */
$jsonEncodedData = json_encode($arrData);
/*Create an object for the column chart using the FusionCharts PHP class constructor. Syntax for the constructor is ` FusionCharts("type of chart", "unique chart id", width of the chart, height of the chart, "div id to render the chart", "data format", "data source")`. Because we are using JSON data to render the chart, the data format will be `json`. The variable `$jsonEncodeData` holds all the JSON data for the chart, and will be passed as the value for the data source parameter of the constructor.*/
$columnChart = new FusionCharts("column2D", "myFirstChart" , 820, 300, "chart-1", "json", $jsonEncodedData);
// Render the chart
$columnChart->render();
// Close the database connection
$conn->close();
}
?>
<div id="chart-1"><!-- Fusion Charts will render here--></div>
Когда я попытался извлечь детали, выполненные в ARRAY, используя [print_r], я получил следующее сообщение;
Array ( [0] => 208 [count(acqid)] => 208 [1] => 2017-04-01 [acq_month] => 2017-04-01 ) Array ( [0] => 241 [count(acqid)] => 241 [1] => 2017-05-01 [acq_month] => 2017-05-01 ) Array ( [0] => 243 [count(acqid)] => 243 [1] => 2017-06-01 [acq_month] => 2017-06-01 ) Array ( [0] => 269 [count(acqid)] => 269 [1] => 2017-07-01 [acq_month] => 2017-07-01 ) Array ( [0] => 373 [count(acqid)] => 373 [1] => 2017-08-01 [acq_month] => 2017-08-01 ) Array ( [0] => 370 [count(acqid)] => 370 [1] => 2017-09-01 [acq_month] => 2017-09-01 ) Array ( [0] => 283 [count(acqid)] => 283 [1] => 2017-10-01 [acq_month] => 2017-10-01 ) Array ( [0] => 312 [count(acqid)] => 312 [1] => 2017-11-01 [acq_month] => 2017-11-01 )
Это действительно показывает информацию, выполненную за апрель & ноябрь включая. Если это поможет!
1 ответ
Проблема, с которой я мог разобраться, немного повозившись с кодом, была связана со значением массива после выполнения запроса.
Мне пришлось просто скрыть / прокомментировать часть "$arr=mysqli_fetch_array($result); ", и это сработало!!!
первоначально
$result = $conn->query($strQuery) or exit("Error code ({$conn->errno}): {$conn->error}");
$arr=mysqli_fetch_array($result);
Изменился на;
$result = $conn->query($strQuery) or exit("Error code ({$conn->errno}): {$conn->error}");
//$arr=mysqli_fetch_array($result);
И это сработало!!!