2013-10-28 68 views
0

這是我的第一篇文章,如果我提出了一些問題的人已經這樣做了,請致歉。我在其他帖子中看不到我需要的答案。我有一個PHP文件,將連接到數據庫並返回一個數組中的所有值在SQL中的數據庫。使用帶有多個y軸的SQL Server db的浮動圖表

<?php 

$server = "XXXX"; 
$database = "XXXX"; 
$user = "ReportsUser"; 
$pwd = "ReportsUser"; 
$cnn = odbc_connect("Driver={SQL Server Native Client  10.0};Server=$server;Database=$database;", $user, $pwd); 

if(!$cnn) 
{ 
    echo "error in connecting"; 
} 

$sql = odbc_exec($cnn, " 
      SELECT Months 
     ,Referrals 
      ,ProjectedVol 
     FROM mis.ReferralsBudgetvsActual 
     WHERE Months <= MONTH(GETDATE()) 
    "); 

while($result = odbc_fetch_array($sql)) 
{ 
    $allreferrals[] = array($result['Months'],$result['Referrals'],$result['ProjectedVol']); 
} 
echo json_encode(($allreferrals), JSON_NUMERIC_CHECK); 
exit; 

?> 

這種運作良好,併產生陣列如下

[[1,5981,7465],[2,5473,6962],[3,4974,7391],[4,5731,6985],[5,5891,7080],[6,5168,7136],[7,5551,7543],[8,4427,7242],[9,4617,7204],[10,4807,7642]]

現在,當這一切在jQuery的文件中走到一起,這就是我最終被卡住。我沒有看到它從第一個數據列中拉出其他列的位置,這怎麼辦?

// document ready function 
$(document).ready(function() { 

     var chartColours = ['#88bbc8', '#ed7a53', '#9FC569', '#bbdce3', '#9a3b1b', '#5a8022', '#2c7282']; 

     // function for refreshing shiftstats chart 
     make_chart(); 
     function make_chart() { 

      $.ajax({ 
       cache: 'false', 
       type: 'GET', 
       dataType: 'json', 
       url: "test.php", 
       success: function(data) { 

       var d1 = data; 
       var d2 = data;      

       //define placeholder class 
       var placeholder = $(".shifts-chart"); 
       //graph options 
       var options = { 
         grid: { 
          show: true, 
          aboveData: true, 
          color: "#3f3f3f" , 
          labelMargin: 5, 
          axisMargin: 0, 
          borderWidth: 0, 
          borderColor:null, 
          minBorderMargin: 5 , 
          clickable: true, 
          hoverable: true, 
          autoHighlight: true, 
          mouseActiveRadius: 20 
         }, 
         series: { 
          grow: { 
           active: false, 
           stepMode: "linear", 
           steps: 50, 
           stepDelay: true 
          }, 
          lines: { 
           show: true, 
           fill: false, 
           lineWidth: 4, 
           steps: false 
           }, 
          points: { 
           show:true, 
           radius: 5, 
           symbol: "circle", 
           fill: true, 
           borderColor: "#fff" 
          } 
         }, 
         legend: { 
          position: "ne", 
          margin: [0,-25], 
          noColumns: 0, 
          labelBoxBorderColor: null, 
          labelFormatter: function(label, series) { 
           // just add some space to labes 
           return label+'&nbsp;&nbsp;'; 
          } 
         }, 
         yaxis: { min: 0 }, 
         xaxis: {ticks:11, tickDecimals: 0}, 
         colors: chartColours, 
         shadowSize:1, 
         tooltip: true, //activate tooltip 
         tooltipOpts: { 
          content: "%s : %y.0", 
          shifts: { 
           x: -30, 
           y: -50 
          } 
         } 
        }; 
        $.plot(placeholder, 
         [{ 
          label: "Referrals", 
          data: d1, 
          lines: {fillColor: "#f2f7f9"}, 
          points: {fillColor: "#88bbc8"} 
         }, 
         { 
          label: "ProjectedVol", 
          data: d2, 
          lines: {fillColor: "#f2f7f9"}, 
          points: {fillColor: "#88bbc8"} 
         } 
         ], options);                
        } 
       }); 
      } 
    }); 

感謝

+0

你能解釋一下這個傳票的含義:***我沒有看到它從第一個數據列中除去了其他任何列,這怎麼辦?***你的JSON retu產生一系列複製到「d1」和「d2」中的數據。 – Mark

+0

這就是我所苦苦掙扎的一點,我可以看到爲什麼/從數據中提取d1,但是由於向JSON提供的數組包含所有列,因此如何讓JSON識別第二列? – Jez

回答

1

你需要改變你的php數組創建數據格式正確兩大系列:

$d1 = array(); 
$d2 = array(); 

while($result = odbc_fetch_array($sql)) 
{ 
    array_push($d1, array($result['Months'], $result['Referrals'])); 
    array_push($d2, array($result['Months'], $result['ProjectedVol'])); 
} 

$allreferrals = array($d1, $d2); 
echo json_encode(($allreferrals), JSON_NUMERIC_CHECK); 

這應該回到它作爲一個數組的數組:

[ 
    [[1,5981],[2,5473],[3,4974],[4,5731],[5,5891],[6,5168],[7,5551],[8,4427],[9,4617,7204],[10,4807]], 
    [[1,7465],[2,6962],[3,7391],[4,6985],[5,7080],[6,7136],[7,7543],[8,7242],[9,7204],[10,7642]] 
] 

(希望我的語法正確,我不是php的粉絲)

從評論

更新如果您在返回一系列的轉換,你可能會更好返回從PHP關聯數組:在JavaScript

$allreferrals = array('ref' => array(), 'projVol'=> array()); 

while($result = odbc_fetch_array($sql)) 
{ 
    array_push($allreferrals['ref'], array($result['Months'], $result['Referrals'])); 
    array_push($allreferrals['projVol'], array($result['Months'], $result['ProjectedVol'])); 
} 

echo json_encode(($allreferrals), JSON_NUMERIC_CHECK); 

然後回到:

$.plot(placeholder, 
    [{ 
     label: "Referrals", 
     data: data["ref"] 
     }, 
     { 
     label: "ProjectedVol", 
     data: data["projVol"] 
     }], 
options);                
+0

感謝你們,當我將它應用到我所擁有的東西時,它會像上面顯示的那樣返回數組。從這個JSON如何理解數組中有第二行?它需要是var d1 = data;再一次與var d2 = data; – Jez

+0

@Jez'd1 = data [0]'和'd2 = data [1]' – Mark

+0

棒極了,如果我有更多的話,我會在數組中添加行並更改var dX = data [X]等? – Jez