Javascript 数据数组中的Highcharts类别

Javascript 数据数组中的Highcharts类别,javascript,php,mysql,highcharts,Javascript,Php,Mysql,Highcharts,我试图从mysql表中提取数据,并将其设置为x轴类别,但我不太明白如何设置 基本上,我在一个表中有作业编号,我想把它们拉出来,并使它们成为x轴上的类别,最终,当为特定作业单击一列时,它将向下钻取更多列(这加起来占作业编号的总百分比) 下面是我尝试做的一个例子,当使用数组时,它可以处理列数据,但不能处理类别,所以它不会以这种方式工作 我该怎么做呢?我从未使用过Highcharts,但如果它没有直接访问数据库的接口,我想你所需要做的就是从mySQL查询中提取数据,并将其放入Highcharts使用

我试图从mysql表中提取数据,并将其设置为x轴类别,但我不太明白如何设置

基本上,我在一个表中有作业编号,我想把它们拉出来,并使它们成为x轴上的类别,最终,当为特定作业单击一列时,它将向下钻取更多列(这加起来占作业编号的总百分比)

下面是我尝试做的一个例子,当使用数组时,它可以处理列数据,但不能处理类别,所以它不会以这种方式工作


我该怎么做呢?

我从未使用过Highcharts,但如果它没有直接访问数据库的接口,我想你所需要做的就是从mySQL查询中提取数据,并将其放入Highcharts使用的数组中

可能是这样的:

$mysqli = new mysqli("example.com", "user", "password", "database");
if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: " . $mysqli->connect_error;
}

$countsPerJob = array();
$res = $mysqli->query( "SELECT jobNumber FROM JobTable" );
while( ($row = $res->fetch_assoc()) ) {
    if( isset( $countsPerJob[$row['jobNumber'] ) ) {
        ++$countsPerJob[$row['jobNumber']];
    } else {
        $countsPerJob[$row['jobNumber']] = 1;
    }
}
现在,
$countsPerJob
拥有数据库表中的所有信息。 然后,您可以使用
$countsPerJob
中的键用于类别和每个类别的值
在数组中输入列高度。

我从未使用过Highcharts,但如果它没有直接访问数据库的接口,我认为您需要做的就是从mySQL查询中提取数据,并将其放入Highcharts使用的数组中

可能是这样的:

$mysqli = new mysqli("example.com", "user", "password", "database");
if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: " . $mysqli->connect_error;
}

$countsPerJob = array();
$res = $mysqli->query( "SELECT jobNumber FROM JobTable" );
while( ($row = $res->fetch_assoc()) ) {
    if( isset( $countsPerJob[$row['jobNumber'] ) ) {
        ++$countsPerJob[$row['jobNumber']];
    } else {
        $countsPerJob[$row['jobNumber']] = 1;
    }
}
现在,
$countsPerJob
拥有数据库表中的所有信息。 然后,您可以使用
$countsPerJob
中的键用于类别和每个类别的值
在数组中输入列高度。

看起来您的数据比类别多?(您有6个数据点和3个类别)

但是,我认为您需要为类别提供一个数组,但您提供的是一个对象。您可以将代码更改为:

$(function () { 
    var data = {"name":"Percentage","data":[50,28,150,125,34,75]};
    var categories = [5600, 5700,5800];
    chart = new Highcharts.Chart({
        chart: {
            renderTo: 'container',
            type: 'column'
        },
        title: {
            text: 'Job Budget Report'
        },
        xAxis: {
            categories: categories
        },
        yAxis: {
            title: {
                text: '% Budget hrs'
            },
            plotLines: [{
                value: 0,
                width: 1,
                color: '#808080'
             }]
        },
        series: [data]
    });
});

看起来您的数据比类别多?(您有6个数据点和3个类别)

但是,我认为您需要为类别提供一个数组,但您提供的是一个对象。您可以将代码更改为:

$(function () { 
    var data = {"name":"Percentage","data":[50,28,150,125,34,75]};
    var categories = [5600, 5700,5800];
    chart = new Highcharts.Chart({
        chart: {
            renderTo: 'container',
            type: 'column'
        },
        title: {
            text: 'Job Budget Report'
        },
        xAxis: {
            categories: categories
        },
        yAxis: {
            title: {
                text: '% Budget hrs'
            },
            plotLines: [{
                value: 0,
                width: 1,
                color: '#808080'
             }]
        },
        series: [data]
    });
});

我不确定问题是“如何使用php/mysql实现这一点”还是“如何在highcharts中定义列名”。我会尽量回答后者。 请尝试以下代码以显示自定义列名,而不是1,2,3,…:

$(function () { 
    var data = {"name":"Percentage","data":[50,28,150,125,34,75]};
    var categories = [5600, 5700,5800,5900,6000,6100];
    chart = new Highcharts.Chart({
        chart: {
            renderTo: 'container',
            type: 'column'
        },
        title: {
            text: 'Job Budget Report'
        },
        xAxis: {
            categories: categories
        },
        yAxis: {
            title: {
                text: '% Budget hrs'
            },
            plotLines: [{
                value: 0,
                width: 1,
                color: '#808080'
             }]
        },
        series: [data]
    });
});

我不确定问题是“如何使用php/mysql实现这一点”还是“如何在highcharts中定义列名”。我会尽量回答后者。 请尝试以下代码以显示自定义列名,而不是1,2,3,…:

$(function () { 
    var data = {"name":"Percentage","data":[50,28,150,125,34,75]};
    var categories = [5600, 5700,5800,5900,6000,6100];
    chart = new Highcharts.Chart({
        chart: {
            renderTo: 'container',
            type: 'column'
        },
        title: {
            text: 'Job Budget Report'
        },
        xAxis: {
            categories: categories
        },
        yAxis: {
            title: {
                text: '% Budget hrs'
            },
            plotLines: [{
                value: 0,
                width: 1,
                color: '#808080'
             }]
        },
        series: [data]
    });
});

“类别”只是一个简单的数组。您可以将其指定为

var categories = [5600, 5700,5800];
然后在图表中:

xAxis: {
  categories: categories
}
(当然,您也可以直接在图表中填充它们)

但是,如其他地方所述,您有3个类别和6个数据点,因此您的最后3个数据点的类别将为“3”、“4”和“5”

如果该图表应为分组图表,则需要对数据进行不同的设置。
如果没有,您将需要提供更多的类别标题。

'categories'只是一个简单的数组。您可以将其指定为

var categories = [5600, 5700,5800];
然后在图表中:

xAxis: {
  categories: categories
}
(当然,您也可以直接在图表中填充它们)

但是,如其他地方所述,您有3个类别和6个数据点,因此您的最后3个数据点的类别将为“3”、“4”和“5”

如果该图表应为分组图表,则需要对数据进行不同的设置。
如果没有,您将需要提供更多的类别标题。

好吧,两者都有,我有一个向下钻取的highcharts列图。由于everyones的帮助(让我更好地理解),我通过查询获得了要显示的工作编号,并在最初的列中显示出来。然而,第二级向下钻取给我带来了一些麻烦。你能帮我做这件事吗?这里是提琴:提琴似乎工作得很好,当我点击栏的细节栏即将出现。有什么问题吗?没问题。但正如您所看到的,数据是硬编码的,所以我想知道您是否知道一个好的解决方案,可以从我的表中为每个工作提取数据。让我们以表面处理为例,当我为此提取数据时,无论单击哪个作业,都会发布每个表面处理小时数。也许我应该提出一个新问题。另一个问题会更好。别忘了在问题中加入你的数据库方案,这样人们就可以用你自己的结构来回答。如果你想看一看,这是我的新问题。两者都有,我有一个向下钻取的highcharts柱形图。由于everyones的帮助(让我更好地理解),我通过查询获得了要显示的工作编号,并在最初的列中显示出来。然而,第二级向下钻取给我带来了一些麻烦。你能帮我做这件事吗?这里是提琴:提琴似乎工作得很好,当我点击栏的细节栏即将出现。有什么问题吗?没问题。但正如您所看到的,数据是硬编码的,所以我想知道您是否知道一个好的解决方案,可以从我的表中为每个工作提取数据。让我们以表面处理为例,当我为此提取数据时,无论单击哪个作业,都会发布每个表面处理小时数。也许我应该提出一个新问题。另一个问题会更好。别忘了在问题中加入你的数据库方案,这样人们可以用你自己的结构来回答。如果你想看一看,这里是我的新问题。