【问题标题】:Bar Chart With 2 Different Attribute Of The Same Variable [Chart.Js]具有相同变量的 2 个不同属性的条形图 [Chart.Js]
【发布时间】:2018-12-04 08:41:26
【问题描述】:

大家好,我正在尝试显示一个条形图,显示名称为 'Feedback' VS 'Complain' 的 2 个不同属性的计数,这两个属性基于用户选择。

我按照一些教程创建了一个 Json 文件,以与从 mysql 检索的数据相同,然后显示在条形图上。所以这是根据查询接收数据的data.php

   <?php
//setting header to json
header('Content-Type: application/json');
$mysqli = mysqli_connect('localhost','root','','customercaremodule');


if(!$mysqli){
    die("Connection failed: " . $mysqli->error);
}

//query to get data from the table
$query1 = sprintf("SELECT FC_Category FROM fbcomplain where FC_Category ='Feedback'");
$Countsql1 = "SELECT count(FC_ID) AS total FROM fbcomplain WHERE FC_Category ='Feedback'";

//execute query
$result1 = $mysqli->query($query1);
$res1 = mysqli_query($mysqli,$Countsql1);
$value1 = mysqli_fetch_assoc($res1);
$feedbackrowcount = $value1['total'];
//loop through the returned data
$data1 = array();
foreach ($result1 as $row) {
    $data1[] = $row;
}

//free memory associated with result
$result1->close();


//query to get data from the table
$query2 = sprintf("SELECT FC_Category FROM fbcomplain where FC_Category ='Complain'");
$Countsql2 = "SELECT count(FC_ID) AS total FROM fbcomplain WHERE FC_Category ='Complain'";
//execute query
$result2 = $mysqli->query($query2);
$res2 = mysqli_query($mysqli,$Countsql2);
$value2 = mysqli_fetch_assoc($res2);
$complainrowcount = $value2['total'];


//loop through the returned data
$data2 = array();
foreach ($result2 as $row) {
    $data2[] = $row;
}

//free memory associated with result
$result2->close();


//close connection
$mysqli->close();

//now print the data
print json_encode($data1);
print json_encode($data2);
print json_encode($feedbackrowcount);
print json_encode($complainrowcount);
?>

然后这是我面临很多挑战的脚本功能。总的来说,我对 Chart JS 和 PHP 很陌生,如果有任何安全漏洞,请多多包涵。感谢您的任何帮助

$(document).ready(function(){
    $.ajax({
        url: "http://localhost/customercare/data.php",
        method: "GET",
        success: function(data1) {
            console.log(data1);
            var feedback = [];
            var complain = [];

            for(var i in data1) {
                feedback.push(data1[i].$feedbackrowcount);
            }


            success: function(data2) {
                console.log(data2);
                var feedback = [];
                var complain = [];

                for(var i in data2) {
                    feedback.push(data2[i].$complainrowcount);
                }

            var chartdata = {

                datasets : [
                    {
                        label: 'Feedback',
                        backgroundColor: 'rgba(200, 200, 200, 0.75)',
                        borderColor: 'rgba(200, 200, 200, 0.75)',
                        hoverBackgroundColor: 'rgba(200, 200, 200, 1)',
                        hoverBorderColor: 'rgba(200, 200, 200, 1)',
                        data: feedback
                    }
                ]
            };

            var ctx = $("#mycanvas");

            var barGraph = new Chart(ctx, {
                type: 'bar',
                data: chartdata
            });
        },
        error: function(data1) {
            console.log(data1);
        }
    });
});

【问题讨论】:

    标签: javascript php mysql chart.js


    【解决方案1】:

    你可以尝试在反馈中推送一个对象,例如:

        var bar_chart_obj_1 = {data: data1[i].$feedbackrowcount, label: "data1", id: 0};
    feedback.push(bar_chart_obj_1);
        var bar_chart_obj_2 = {data: $data2[i].$complainrowcount, label: "data2", id: 1};
    feedback.push(bar_chart_obj_2);
    

    【讨论】:

    • 试过了,没用。它说我的第 16 行有意外的令牌。 success: function(data2)
    • 在函数 php 中尝试仅返回一个对象,其键为 data1、data2、feedbackrowcount、complainrowcount。我认为对于一个 ajax 请求,您有一个响应成功/错误
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-25
    • 1970-01-01
    • 2021-09-15
    • 1970-01-01
    相关资源
    最近更新 更多