2016-03-18 3 views
-1

Мне было предложено создать комбинированную диаграмму с осью 2 Y и 1 строкой (mscolumn3dlinedy в соответствии с документацией (http://www.fusioncharts.com/dev/chart-attributes.html?chart=mscolumn3dlinedy), которая может извлекать данные из MySQL, и мне трудно это делать. В документах FusionCharts есть примеры для создания диаграмм с использованием MySQL и PHP, но единственный пример включает в себя диаграмму столбцов 2d, которые имеют довольно простую структуру.FusionCharts Комбинированная диаграмма MySQL

Проблема заключается в том, что в этом примере (http://www.fusioncharts.com/dev/using-with-server-side-languages/php/creating-charts-with-data-from-a-database.html) они используют в то время как итератор помещает данные MySQL в массив и рассматривает объединенную диаграмму, которую я должен сделать, она должна использовать больше массивов или, по крайней мере, это то, что я думаю. Поэтому я не знаю, как это сделать.

44445164 +10617451515053691368888

У меня есть таблица с 6 полями: DT (время передачи данных) TP (целое значение) OPEN_AMT (целое значение) IN_AMT (нуль) OUT_AMT (нуль) END_AMT (целое значение)

штурманской должен выглядеть
this

штурманской я получаю это

Он пуст, но я получаю данные из базы данных. Если вы посмотрите на исходный код моей страницы, вы увидите, что структура диаграммы немного перепутана, но данные есть. (http://sisfacil.cl/securestart/graficos.php

Я пытался смотреть в документации, но я просто не могу найти ничего, что помогает мне.

Код диаграммы это

<?php 
    $stmt = "SELECT * FROM datos_grafico_01 
      WHERE year(DT)=2016 
      AND month(DT)=3"; 

    $result = $mysqli->query($stmt) or exit("Error code ({$mysqli->errno}): {$mysqli->error}"); 

    if ($result) { 
     $arrData = array(
      "chart" => array(
       "caption" => "Merchandise", 
       "xAxisname" => "Días de Marzo", 
       "pYAxisName" => "$", 
       "sYAxisName" => "$", 
       "numberPrefix" => "$", 
       "sNumberSuffix" => "$", 
       "sYAxisMaxValue" => "6000000000", 
       "paletteColors" => "#0075c2,#1aaf5d,#f2c500", 
       "bgColor" => "#ffffff", 
       "showBorder" => "0", 
       "showCanvasBorder" => "0", 
       "usePlotGradientColor" => "0", 
       "plotBorderAlpha" => "10", 
       "legendBorderAlpha" => "0", 
       "legendBgAlpha" => "0", 
       "legendShadow" => "0", 
       "showHoverEffect" => "1", 
       "valueFontColor" => "#ffffff", 
       "rotateValues" => "1", 
       "placeValuesInside" => "1", 
       "divlineColor" => "#999999", 
       "divLineDashed" => "1", 
       "divLineDashLen" => "1", 
       "divLineGapLen" => "1", 
       "canvasBgColor" => "#ffffff", 
       "captionFontSize" => "14", 
       "subcaptionFontSize" => "14", 
       "subcaptionFontBold" => "0" 
       )/* 
      "categories" => array(
       "category" => array(
       "label" => "2", 
       "label" => "3", 
       "label" => "4", 
       "label" => "5", 
       "label" => "6", 
       "label" => "7", 
       "label" => "8", 
       "label" => "9", 
       "label" => "10", 
       "label" => "11", 
       "label" => "12", 
       "label" => "13", 
       "label" => "14", 
       "label" => "15", 
       "label" => "16", 
       "label" => "17", 
       "label" => "18", 
       "label" => "19", 
       "label" => "20", 
       "label" => "21", 
       "label" => "22", 
       "label" => "23", 
       "label" => "24", 
       "label" => "25", 
       "label" => "26", 
       "label" => "27", 
       "label" => "28", 
       "label" => "29", 
       "label" => "30", 
       "label" => "31" 
       ) 
      )*/ 
     ); 

    $arrData["categories"] = array(); 
    $cat["category"] = array(); 

    //Vaciar los datos de mysql en el arreglo 
     while($row = mysqli_fetch_array($result)) { 
      array_push($cat["category"], array(
        "label" => $row["DT"] 
       ) 
      ); 
     } 

     array_push($arrData["categories"], array(
       $cat["category"] 
      ) 
     ); 


    $arrData["dataset"] = array(); 
    $data1["data"] = array(); 
    $data2["data"] = array(); 
    $data3["data"] = array(); 


    //Vaciar los datos de mysql en el arreglo 
     while($row = mysqli_fetch_array($result)) { 
      array_push($data1["data"], array(
        "value" => $row["IN_AMT"] 
        ) 
      ); 

      array_push($data2["data"], array(
        "value" => $row["OUT_AMT"] 
       ) 
      ); 

      array_push($data3["data"], array(
        "value" => $row["END_AMT"] 
       ) 
      ); 
     } 

     array_push($arrData["dataset"], array(
      "seriesname" => "INT_AMT", 
      $data1["data"], 
      "seriesname" => "OUT_AMT", 
      $data2["data"], 
      "seriesname" => "END_AMT", 
      "renderAs"=> "line", 
      "parentYAxis"=> "S", 
      "showValues"=> "0", 
      $data3["data"] 
      ) 
     ); 

     $jsonEncodedData = json_encode($arrData); 

     $myChart = new FusionCharts("mscolumn3dlinedy", "MySQLChart", 800, 600, "chartContainer", "json", $jsonEncodedData); 

     $myChart->render(); 

     $mysqli->close(); 
    } 

?> 

Обратите внимание, что первый категория категорий прокомментирована, так как я извлекаю ее из базы данных ниже, используя массивы.

Я не специалист по программированию, поэтому я мог бы использовать любую помощь, особенно со структурой диаграммы и кодом этого.

Например, структура должна выглядеть в наборе данных части:

"dataset": [ 
    { 
     "seriesname": "Food Products", 
     "data": [ 
      { 
       "value": "11000" 
      }, 
      { 
       "value": "14000" 
      }, 
      { 
       "value": "10500" 
      }, 
      { 
       "value": "15000" 
      } 
     ] 
    }, 
    { 
     "seriesname": "Non-Food Products", 
     "data": [ 
      { 
       "value": "14400" 
      }, 
      { 
       "value": "14800" 
      }, 
      { 
       "value": "8300" 
      }, 
      { 
       "value": "11800" 
      } 
     ] 
    }, 
    { 
     "seriesname": "Profit %", 
     "renderAs": "line", 
     "parentYAxis": "S", 
     "showValues": "0", 
     "data": [ 
      { 
       "value": "14" 
      }, 
      { 
       "value": "16" 
      }, 
      { 
       "value": "15" 
      }, 
      { 
       "value": "17" 
      } 
     ] 
    } 

Но мой, при визуализации диаграммы показывает только что-то вроде

"dataset":[{"seriesname":"END_AMT","0":[],"1":[],"renderAs":"line","parentYAxis":"S","showValues":"0","2":[]}]}}); 
     }); 

SO .. Если это был текст TL, DR .. и некоторые из вас, вероятно, попросят упростить мой вопрос .. это было бы:

Что я делаю неправильно, что когда я делаю свою комбинированную диаграмму, структура становится беспорядочной d вверх и не загружается должным образом?

Если вам нужно несколько коротких советов, чтобы указать на

  • I AM извлечения данных из MySQL.(См исходного кода)
  • Я посасывать массивы (и, вероятно, при программировании в целом)
  • FusionChart документация не имеет множественный/комбинированный пример диаграммы для MySQL
  • Я думаю, что проблемы являются массивами, которые я сделал.

EDIT:

мне удалось решить эту проблему. Я просто добавил array_value для извлечения значений в array_push.

<?php 

    $stmt = "SELECT DAY(DT) as DT, IN_AMT, OUT_AMT, END_AMT FROM datos_grafico_01 WHERE year(DT)=2016 AND month(DT)=3 ORDER BY DT ASC"; 

    $result = $mysqli->query($stmt) or exit("Error code ({$mysqli->errno}): {$mysqli->error}"); 

    if ($result) { 
     $arrData = array(
      "chart" => array(
       "caption" => "Merchandise", 
       "xAxisname" => "Días de Marzo", 
       "pYAxisName" => "$", 
       "sYAxisName" => "$", 
       "numberPrefix" => "$", 
       "sNumberSuffix" => "$", 
       "paletteColors" => "#0075c2,#1aaf5d,#f2c500", 
       "bgColor" => "#ffffff", 
       "showBorder" => "0", 
       "showCanvasBorder" => "0", 
       "usePlotGradientColor" => "0", 
       "plotBorderAlpha" => "10", 
       "legendBorderAlpha" => "0", 
       "legendBgAlpha" => "0", 
       "legendShadow" => "0", 
       "showHoverEffect" => "1", 
       "valueFontColor" => "#ffffff", 
       "rotateValues" => "1", 
       "placeValuesInside" => "1", 
       "divlineColor" => "#999999", 
       "divLineDashed" => "1", 
       "divLineDashLen" => "1", 
       "divLineGapLen" => "1", 
       "canvasBgColor" => "#ffffff", 
       "captionFontSize" => "14", 
       "subcaptionFontSize" => "14", 
       "subcaptionFontBold" => "0" 
       ) 
     ); 

    $arrData["categories"] = array(); 
    $cat["category"] = array(); 
    $arrData["dataset"] = array(); 
    $data1["data"] = array(); 
    $data2["data"] = array(); 
    $data3["data"] = array(); 
    //Vaciar los datos de mysql en el arreglo 
     while($row = mysqli_fetch_array($result)) { 
      array_push($cat["category"], array(
        "label" => $row["DT"] 
       ) 
      ); 
      array_push($data1["data"], array(
        "value" => $row["IN_AMT"] 
        ) 
      ); 
      array_push($data2["data"], array(
        "value" => $row["OUT_AMT"] 
       ) 
      ); 
      array_push($data3["data"], array(
        "value" => $row["END_AMT"] 
       ) 
      ); 
     } 
     array_push($arrData["categories"], array(
       "category" => array_values($cat["category"]) 
      ) 
     ); 
     array_push($arrData["dataset"], array(
      "seriesname" => "IN_AMT", 
      "data" => array_values($data1["data"]) 
      ) 
     ); 
     array_push($arrData["dataset"], array(
      "seriesname" => "OUT_AMT", 
      "data" => array_values($data2["data"]) 
      ) 
     ); 
     array_push($arrData["dataset"], array(
      "seriesname" => "END_AMT", 
      "renderAs"=> "line", 
      "parentYAxis"=> "S", 
      "showValues"=> "0", 
      "data" => array_values($data3["data"]) 
      ) 
     ); 

     $jsonEncodedData = json_encode($arrData); 

     $myChart = new FusionCharts("mscolumn3dlinedy", "MySQLChart", 1200, 1000, "chartContainer", "json", $jsonEncodedData); 

     $myChart->render(); 

     $mysqli->close(); 
    } 

?> 

Это сработало. Кроме того, мне пришлось изменить порядок кода и упростить его, так как у меня было больше 1. В любом случае диаграмма выглядит плохо, но это связано с тем, что данные из таблиц беспорядочны.

+1

Pleae удалите 'Solved' в своем названии и опубликуйте решение, которое вы нашли как правильный ответ. – usr2564301

ответ

0

Вы можете передать этот многофункциональный образец серии диаграммы, созданный с помощью PHP-MySQL: https://www.dropbox.com/s/ruk3hth9xs6ejou/mschart_php-sql.rar?dl=0

Это вам ГПУ форматировать данные в формате JSON, а также для комбинации типа диаграммы необходимо добавить соответствующий атрибут.

+0

Спасибо, но это мне не помогло. Моя проблема в том, что в массиве, который я делаю для набора данных, имя серии и данные переписываются, я думаю –

Смежные вопросы