【问题标题】:How to pass nested foreach Values to CanvasJS chart?如何将嵌套的 foreach 值传递给 CanvasJS 图表?
【发布时间】:2016-10-05 18:22:09
【问题描述】:

我用下面的代码做了一些计算,然后我想将值传递给图表,但我无法发送它们我尝试了这个:

 $getStoreIDs = mysqli_query($dbConnection, "SELECT DISTINCT Stores_storeID FROM maintable WHERE Survey_surveyId = '$surveyID' ");

            while ($row = mysqli_fetch_array($getStoreIDs))
             { 
                $storeIDarray[] = $row;

             }

    foreach($_POST['sections'] as $selected)
            {

        foreach ($storeIDarray as $key => $row)
            {
                $storeID = $row['Stores_storeID'];



                      $storeNames= mysqli_query($dbConnection , "SELECT storeName FROM stores WHERE storeID = '".$row['Stores_storeID']."'");
                     $sectinName = mysqli_query($dbConnection , "SELECT sectionName FROM sections WHERE sectionID = '$selected' ");


                    $totalSections = mysqli_query($dbConnection, "SELECT SUM(itemPrice) AS totalSection FROM maintable WHERE items_Family_Sections_sectionID='$selected' AND Stores_storeID = '$storeID' AND Survey_surveyId = '$surveyID' ");


                } 
            }

我想传递 ($storeNames, $ectionName 和 $totalSelections) 的值 这是我的 CanvasJs 代码`

var chart1 = new CanvasJS.Chart("chartContainer1",
{
  title:{
    text: "Store Comparision"    
  },
  animationEnabled: true,
  axisY: {
    title: "Total Price"
  },
  legend: {
    verticalAlign: "bottom",
    horizontalAlign: "center"
  },
  theme: "theme2",
  data: [

  {        
    type: "column",  
    showInLegend: true, 
    legendMarkerColor: "grey",
    dataPoints: [  



    ]
  }   
  ]
});

chart1.render();`

【问题讨论】:

标签: javascript php html html5-canvas


【解决方案1】:

首先你需要把你的javascript代码放在画布图表之前,它会呈现。

如何将数据传递给视图很重要。你是作为 json 对象还是数组传递?

如果是 json 则需要先在 javscript 中解析,然后再以 php 编码发送。

在数据点参数中你可以这样传递

dataPoints: JSON.parse(<?php echo json_encode($json_managers) ?>)

或者可以在发送前通过 PHP 进行(示例代码 sn-p)

$managers = DB::table('orders')
    ->join('managers', 'orders.manager_id', '=', 'managers.id')
    ->groupBy('managers.manager_name')
    ->get(['managers.manager_name',DB::raw("sum(orders.sale) as sale")]);

    foreach($managers as $key => $value){
        $point = array("label" => $value->manager_name , "y" => $value->sale);
        array_push($data_manager_points, $point);
    }
    $json_managers = json_encode($data_manager_points,JSON_NUMERIC_CHECK);

更多信息请到这里:

http://canvasjs.com/forums/topic/how-can-i-use-php-mysql-dynamic-data/

【讨论】:

  • 你能检查一下我与canvasjs相关的新question吗?
猜你喜欢
  • 2018-07-27
  • 2017-03-23
  • 1970-01-01
  • 1970-01-01
  • 2015-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多