[英]Import data from Database to JS file
我是.js文件及其使用的新手,我正在尝试更新使用JS的图表。 我需要或尝试做的是从数据库中导入信息,以便在JS文件中使用它来填充图表。 这是图表代码和文件名。
档案名称charjs_custom.js
/*Polar chart*/
var polarElem = document.getElementById("polarChart");
var data3 = {
datasets: [{
data: [
20,
16,
7,
3,
40
],
backgroundColor: [
"#7E81CB",
"#1ABC9C",
"#B8EDF0",
"#B4C1D7",
"#01C0C8"
],
hoverBackgroundColor: [
"#a1a4ec",
"#2adab7",
"#a7e7ea",
"#a5b0c3",
"#10e6ef"
],
label: 'My dataset' // for legend
}],
labels: [
"Blue",
"Green",
"Light Blue",
"grey",
"Sea Green"
]
};
new Chart(polarElem, {
data: data3,
type: 'polarArea',
options: {
elements: {
arc: {
borderColor: ""
}
}
}
});
我需要使用数据库中的信息来更改“数据”和“标签”部分,根据已阅读的内容,我需要创建一个php文件来检索信息,但是如何将其转换为JS以及如何告诉它哪些信息在JS文件中使用。 同时链接“数据”和“标签”部分,以便信息与我的表相对应
我要使用的表是:make:id〜count
文件名chart_test.php
<?php
//database
$host="my_host"; // Host name
$username="my_username"; // Mysql username
$password="my_password"; // Mysql password
$db_name="my_database"; // Database name
//get connection
$mysqli = new mysqli($host, $username, $password, $db_name);
if(!$mysqli){
die("Connection failed: " . $mysqli->error);
}
//query to get data from the table
$query = sprintf("SELECT * FROM bureau GROUP BY make ");
//execute query
$result = $mysqli->query($query);
//close connection
$mysqli->close();
//now print the data
print json_encode($data);
?>
您可以使用JSON格式在php后端和js前端之间交换数据。 但是,我敦促您将nodejs用作后端服务。 它将与您的js代码无缝集成。
在不真正了解您的数据源的情况下,它通常会像下面这样工作。
<?php
// Lets say your managed to convert your data from your database into something like.
$graph = [
'data' => [20, 16, 7, 3, 40],
'background' => ['#7E81CB', '#1ABC9C', '#B8EDF0', '#B4C1D7', '#01C0C8'],
'hover' => ['#a1a4ec', '#2adab7', '#a7e7ea', '#a5b0c3', '#10e6ef'],
'labels' => ['Blue', 'Green', 'Light Blue', 'Grey', 'Sea Green']
];
?>
var polarElem = document.getElementById("polarChart");
var data3 = {
datasets: [{
data: <?php echo json_encode($graph['data']); ?>,
backgroundColor: <?php echo json_encode($graph['background']); ?>,
hoverBackgroundColor: <?php echo json_encode($graph['hover']); ?>,
label: 'My dataset'
}],
labels: <?php echo json_encode($graph['labels']); ?>
};
因此,如果我了解数据库的映射,我会这样做:
<?php
//database
$host="my_host"; // Host name
$username="my_username"; // Mysql username
$password="my_password"; // Mysql password
$db_name="my_database"; // Database name
//get connection
$mysqli = new mysqli($host, $username, $password, $db_name);
if(!$mysqli){
die("Connection failed: " . $mysqli->error);
}
//query to get data from the table
$query = sprintf("SELECT * FROM bureau GROUP BY make ");
//execute query
$result = $mysqli->query($query);
// Define configuration array
$config = array(
'datasets' => array(
array(
'data' => array(),
'backgroundColor' => array(), // This could be statically loaded, or dynamic if the DB has colors
'hoverBackgroundColor' => array(), // This could be statically loaded, or dynamic if the DB has colors
'label' => 'My Dataset'
)
),
'labels' => array()
);
// Loop through database result and add
while($row=mysqli_fetch_assoc($result)){
array_push($config['labels'], $row['make']); // Add label
array_push($config['datasets'][0]['data'], $row['totalValue']); // Add value
}
//close connection
$mysqli->close();
//now print the data
echo json_encode($config);
您最终对该配置执行的操作取决于您如何加载此图表。 这可能是一个AJAX请求,然后您将使用结果代替data3
例如:
$.get( "chart_test.php", function( data ) {
new Chart(polarElem, {
data: data,
type: 'polarArea',
options: {
elements: {
arc: {
borderColor: ""
}
}
}
});
}, "json" );
或嵌入到php文件中,而不是打印json_encode($config);
您将创建整个脚本:
new Chart(polarElem, {
data: <?= json_encode($config) ?>,
type: 'polarArea',
options: {
elements: {
arc: {
borderColor: ""
}
}
}
});
这完全取决于您到目前为止的设置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.