【问题标题】:How do I display multiple charts automatically with PHP and MYSQL?如何使用 PHP 和 MYSQL 自动显示多个图表?
【发布时间】:2013-06-22 00:45:46
【问题描述】:

我有以下问题。我想根据数据库中的数据自动显示多个 Highcharts 网络图表。假设我们有以下数据库:

___________________________________________________________________
|       |           |      |               |            |          |
| 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/

我想要这个(但然后彼此相邻):

http://jsfiddle.net/DReMD/

它必须使用 php 和 mysql 自动生成。因此,如果本月开始有新用户,并且新用户已保存在数据库中,则页面会自动显示新用户以及相关的 web 图表。

我发现这很难完成,我需要一些帮助才能找到解决方案的正确方向。

编辑:

这是我目前拥有的:

<?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>
<?} ?>

问题是这个循环什么都不返回。 (是的,我已经用正确的 id 放置了 div)。

【问题讨论】:

  • ... WHERE `username` = 'Clark Kent' AND ... ?
  • 这不是我想要的。我不使用它的原因是每个用户都必须有一个个人网络图表。因此,图表必须根据数据库生成的每个用户自动显示。我会稍微修改一下这个问题。
  • 每个图表都可以通过 ajax 或使用 php 打印变量获取数据。常见的PHP/databaes和highcharts示例docs.highcharts.com/#preprocessing.
  • @SebastianBochan 查看编辑。
  • $("#webchart echo $row["id"] ?>") 这行不正确,尝试使用 $('#webchart'+ echo $row["id "] ?>+')... 因为在您的代码中它没有被解析为 PHP。

标签: php mysql highcharts


【解决方案1】:

嗯,我认为您的代码几乎是正确的,但是,您从哪里获得这些字段 等等,测试和垃圾?我尝试你的代码,使用 mysqli,我猜你使用的是一样的,但是你的查询永远不会返回这个数据。如果你改变了

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"] ?>],

这对我有用。

希望对你有帮助。

祝你好运。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-10
    • 1970-01-01
    • 2015-06-02
    • 1970-01-01
    • 2012-10-04
    • 1970-01-01
    • 2012-08-25
    • 2016-11-10
    相关资源
    最近更新 更多