【发布时间】:2021-04-28 07:03:19
【问题描述】:
我正在为我学校的一个项目工作,但我的代码有问题。 说明:我制作了一个从我的数据库中填充的下拉菜单,它运行良好。在下拉列表中都是带有“ID”的所有“工作站”,所以当我选择一个工作站时,我通过 GET 方法将它发送到我的 data.php 文件,然后创建一个包含来自所选工作站的所有数据的 json 文件数据我创建了几个图表。问题是无论我选择什么工作站,它都只显示预定义的工作站(Station 1)。
这是 jquery 代码,它获取下拉值并将其放入 var dropd 中,然后发送到 data.php 文件。
$(document).ready(function() {
$("#button1").click(function(){
var dropd = $("#drop").val();
console.log(dropd);
$.getJSON('data.php', {id: dropd});
function grab() {
return new Promise((resolve, reject) => {
$.ajax({
url: "data.php",
method: "GET",
success: function(data) {
},
error: function(error) {
reject(error);
}
});
});
}
grab().then((data) => {
console.log('Recieved our data', data);
let Zeit = [];
let Luft = [];
try {
data.forEach((item) => {
Zeit.push(item.Zeit);
Luft.push(item.Luftfeuchtigkeit);
});
let chartdata1 = {
labels: [...Zeit],
datasets: [{
label: 'Luftfeuchtigkeit',
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: [...Luft]
}]
};
let ctx = $("#myChart1");
let barGraph = new Chart(ctx, {
type: 'line',
data: chartdata1
});
} catch (error) {
console.log('Error parsing JSON data', error);
}
}).catch((error) => {
console.log(error);
});
这是我的 data.php 文件,它为我的图表创建 json 文件。
<?php
header('Content-Type: application/json');
$conn = mysqli_connect("localhost","root","","usera01");
$id = isset($_GET['dropd']) ? $_GET['dropd'] : false;
if ($id) {
//echo ($_GET['dropd']);
} else {
$id = 1;
}
$sqlQuery = "SELECT idDatenNr, Luftfeuchtigkeit, Lichtverhältnis, Bodenfeuchtigkeit,Temperatur, Zeit, fi_idStation FROM daten WHERE fi_idStation = '$id'";
$result = mysqli_query($conn,$sqlQuery);
$data = array();
foreach ($result as $row) {
$data[] = $row;
}
mysqli_close($conn);
echo json_encode($data);
?>
对不起,如果它看起来有点乱,但我对 jquery 和 php 很陌生。谢谢。
这是我的图表的完整代码,包括选择。
<select id ="drop">
<option disabled selected>--Wähle Station aus--</option>
<?php
$records = mysqli_query($db, "SELECT idStation, Stationname FROM station WHERE fi_idFirma = $id");
while($data = mysqli_fetch_array($records))
{
echo "<option value='".$data['idStation']."'>" .$data['Stationname']."</option>";
}
?>
</select>
<button id="button1">Lade Tabelle</button>
<div>
<canvas id="myChart1"></canvas>
</div>
<div>
<canvas id="myChart2"></canvas>
</div>
<div>
<canvas id="myChart3"></canvas>
</div>
<div>
<canvas id="myChart4"></canvas>
</div>
<script>
$(document).ready(function() {
$("#button1").click(function(){
var dropd = $("#drop").val();
console.log(dropd);
$.ajax({ url: "data.php", method: "GET", data: { id : dropd }, success: function(data) { }, error: function(error) { reject(error); } });
function grab() {
return new Promise((resolve, reject) => {
$.ajax({
url: "data.php",
method: "GET",
success: function(data) {
},
error: function(error) {
reject(error);
}
});
});
}
grab().then((data) => {
console.log('Recieved our data', data);
let Zeit = [];
let Luft = [];
try {
data.forEach((item) => {
Zeit.push(item.Zeit);
Luft.push(item.Luftfeuchtigkeit);
});
let chartdata1 = {
labels: [...Zeit],
datasets: [{
label: 'Luftfeuchtigkeit',
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: [...Luft]
}]
};
let ctx = $("#myChart1");
let barGraph = new Chart(ctx, {
type: 'line',
data: chartdata1
});
} catch (error) {
console.log('Error parsing JSON data', error);
}
}).catch((error) => {
console.log(error);
});
function grab() {
return new Promise((resolve, reject) => {
$.ajax({
url: "data.php",
method: "GET",
success: function(data) {
resolve(data);
},
error: function(error) {
reject(error);
}
});
});
}
grab().then((data) => {
console.log('Recieved our data', data);
let Zeit = [];
let Boden = [];
try {
data.forEach((item) => {
Zeit.push(item.Zeit);
Boden.push(item.Bodenfeuchtigkeit);
});
let chartdata2 = {
labels: [...Zeit],
datasets: [{
label: 'Bodenfeuchtigkeit',
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: [...Boden]
}]
};
let cty = $("#myChart2");
let barGraph = new Chart(cty, {
type: 'line',
data: chartdata2
});
} catch (error) {
console.log('Error parsing JSON data', error)
}
}).catch((error) => {
console.log(error);
});
grab().then((data) => {
console.log('Recieved our data', data);
let Zeit = [];
let Temp = [];
try {
data.forEach((item) => {
Zeit.push(item.Zeit);
Temp.push(item.Temperatur);
});
let chartdata3 = {
labels: [...Zeit],
datasets: [{
label: 'Temperatur',
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: [...Temp]
}]
};
let ctt = $("#myChart3");
let barGraph = new Chart(ctt, {
type: 'line',
data: chartdata3
});
} catch (error) {
console.log('Error parsing JSON data', error);
}
}).catch((error) => {
console.log(error);
});
function grab() {
return new Promise((resolve, reject) => {
$.ajax({
url: "data.php",
method: "GET",
success: function(data) {
resolve(data);
},
error: function(error) {
reject(error);
}
});
});
}
grab().then((data) => {
console.log('Recieved our data', data);
let Zeit = [];
let Licht = [];
try {
data.forEach((item) => {
Zeit.push(item.Zeit);
Licht.push(item.Lichtverhältnis);
});
let chartdata4 = {
labels: [...Zeit],
datasets: [{
label: 'Lichtverhältnis',
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: [...Licht]
}]
};
let cte = $("#myChart4");
let barGraph = new Chart(cte, {
type: 'line',
data: chartdata4
});
} catch (error) {
console.log('Error parsing JSON data', error)
}
}).catch((error) => {
console.log(error);
});
});
});
</script>
【问题讨论】:
标签: php jquery charts drop-down-menu get