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);

И это сработало!!!

Другие вопросы по тегам