2013-06-25 48 views
2

我有以下問題。我想根據數據庫中的數據自動出現多個Highcharts網絡圖。比方說,我們有以下數據庫:(此數據庫是一個例子,也有真實的數據庫了很多行)如何使用PHP和MYSQL自動顯示多個圖表?

___________________________________________________________________ 
|  |   |  |    |   |   | 
| Year | Month | ID | Name User | Wins  | Losses | 
|_______|___________|______|_______________|____________|__________| 
| 2013  1   21  Tony Stark  3   12 |  
| 2013  1   52 Bruce Wayne  5   4  | 
| 2013  1   76  Clark Kent  9   5  | 
|__________________________________________________________________| 

而且我有以下查詢:

SELECT 
      a.year AS year1, 
      a.month AS month1, 
      a.id AS id, 
      a.name AS nameuser, 
      a.wins AS wins, 
      a.losses AS losses 
      FROM Sales a 
     WHERE 
     a.month = 1 AND 
     a.year = YEAR(NOW()) 

有了這個,使用Highcharts對圖表進行硬編碼非常容易。但我想要的是必須有每個用戶的網頁圖表。因此,我不希望所有用戶都擁有一張網頁圖表,而是希望根據數據庫中的數據將多張圖表放在一起。

因此,不是這樣的:

http://jsfiddle.net/CWSb6/

Single chart with all users

我想這(但後來彼此相鄰):

http://jsfiddle.net/DReMD/

Multiple charts, one per user

它必須使用php和mysql自動生成。因此,如果有新用戶從本月開始,並且新用戶保存在數據庫中,則頁面會自動將新用戶顯示在相關的網頁圖表中。

我覺得這很難完成,我需要一些幫助才能找到解決方案的正確方向。

編輯:

這是我目前有:

<?php 
$sql = "SELECT 
      a.year AS year1, 
      a.month AS month1, 
      a.id AS id, 
      a.name AS nameuser, 
      a.wins AS wins, 
      a.losses AS losses 
      FROM Sales a 
     WHERE 
     a.month = 1 AND 
     a.year = YEAR(NOW())"; 
     $result = $adb->pquery($sql, array()); 
     while ($row = $adb->fetch_array($result)) { 


      ?>     
<script> 
$(function() { 

$("#webchart<? echo $row["id"] ?>").highcharts({ 

    chart: { 
     polar: true, 
     type: "line" 
    }, 

    title: { 
     text: "", 
     x: -80 
    }, 
    legend: { 
     enabled: false 

     }, 
     exporting: { 
     enabled: false 
     }, 
     credits: { 
     enabled: false 
     }, 
    pane: { 
     size: "80%" 
    }, 

    xAxis: { 
     categories: ["wins", "losses", "etc", "test", 
       "junk"], 
     tickmarkPlacement: "on", 
     lineWidth: 0 
    }, 

    yAxis: { 
     gridLineInterpolation: "polygon", 
     lineWidth: 0, 
     min: 0 
    }, 

    legend: { 
     verticalAlign: "bottom", 
     y: 100, 
     layout: "vertical" 
    }, 

    series: [{ 
     name: "test", 
     data: [ <? echo $row["wins"] . ", " . $row["losses"] . ", " . $row["etc"] . ", " . $row["test"] . ", " .$row["junk"] ?>], 
     pointPlacement: "on" 
    }] 
}); 
}); 
</script> 
<div id="webchart<? echo $row["id"] ?>" style="min-width: 300px; height: 300px; margin:0 auto;"></div> 
<?} ?> 

的問題是,這個循環什麼都不返回。 (是的,我已經把div放在正確的ID)。

+0

'... WHERE \'username \'='Clark Kent'AND ...'? –

+0

這不是我想要的。我不使用它的原因是每個用戶都必須擁有一個個人網頁圖表。所以圖表必須自動顯示每個從數據庫生成的用戶。我會編輯一下這個問題。 – martini1993

+0

每個圖表都可以通過ajax獲取數據或使用php打印的變量。常見的PHP /數據庫和高圖的例子http://docs.highcharts。COM /#預處理。 –

回答

0

嗯,我認爲你的代碼幾乎是正確的,但是,從哪裏得到域 等,測試和垃圾?我嘗試你的代碼,使用mysqli,我猜是你正在使用的一樣,但你的查詢永遠不會返回這個數據。如果你changue

data: [ <?php echo $row["wins"] . ", " . $row["losses"] . ", " . $row["etc"] . ", " .  $row["test"] . ", " .$row["junk"] ?>], 

爲:

data: [ <?php echo $row["wins"] . ", " . $row["losses"] . ", " . $row["losses"] . ", " . $row["losses"] . ", " .$row["losses"] ?>], 

這個工作對我來說。

我希望這可以幫助你。

祝你好運。

相關問題