我在mysql数据库(practice\u database)中有一个名为'marks'的表,包含以下值:(我使用的是xampp服务器)name,sem,internal,end\u sem,avani 1 55 56 alka 1 26 29 saurabh 1 44 40 rekha 1 42 39 ralph 1 52 60 avani 2 57 51 alka 2 53 52 saurabh 2 33 22 rekha 2 37 29 ralph 2 47 55 avani 3 56 59 alka 3 47 45 saurabh 3 33 45 rekha 3 32 25 ralph 3 44 59
我需要创建一个图形,根据我在相应的下拉菜单中选择的值,显示内部和结束标记。下拉菜单必须由列sem填充。这是以下代码:
<?php
$con = mysqli_connect('localhost','root','','practice_database');
?>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<body>
<form name="frmdropdown" method="POST" >
<center>
<h2 align="right">SEMESTER</h2>
<strong> Select Semester: </strong>
<select align="right" name="empName">
<option value=""> -----ALL----- </option>
<?php
$Sem="Select DISTINCT Sem from Marks";
$exec1 = mysqli_query($con,$Sem);
while($r=mysqli_fetch_array($exec1)) {
echo "<option value='$r[0]'> $r[0] </option>";
}
?>
</select>
</body>
<title>
Create Google Charts
</title>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load("visualization", "1", {packages:["corechart"]});
google.setOnLoadCallback(drawChart);
function drawChart() {
var data = google.visualization.arrayToDataTable([
['Name', 'Internal', 'End_sem'],
<?php
if($_SERVER['REQUEST_METHOD'] == "POST")
{
$des=$_POST["empName"];
if($des=="") // if ALL is selected in Dropdown box
{
$query="SELECT Name, Internal, End_sem FROM Marks";
}
else
{
$query="SELECT Name, Internal, End_sem FROM Marks where sem='".$des."'";
}
}
while($row = mysqli_fetch_row($query)) {
echo "['".$row['Name']."',".$row['Internal'].",".$row['End_sem']."],";
}
?>
]);
var options = {
title: 'Student Performance',titleTextStyle: {color: 'black'},
hAxis: {title: 'Student Name-->', titleTextStyle: {color: 'red'}},
vAxis: {title: 'Marks', titleTextStyle: {color: 'green'}},
colors: ['blue','red'],
is3D:true
};
var chart = new google.visualization.ColumnChart(document.getElementById("columnchart"));
chart.draw(data, options);
}
</script>
</head>
<body>
<h3>Column Chart</h3>
<div id="columnchart" style="width: 900px; height: 500px; color: red;"></div>
</body>
</html>
然而,它不起作用。没有下拉菜单部分,代码可以正常工作。但是我的经理想要强制包含下拉菜单。因为我没有以前的编程经验,我发现谷歌图表更容易。有人能帮我纠正一下这段代码中的错误吗?我会很感激的。谢谢。
1条答案
按热度按时间f0ofjuux1#
问题是您没有提交查询。你在试着做一件事
mysqli_fetch_row
而不是mysqli\u结果。是否要在初始页面加载时加载所有行?然后还需要将查询放在REQUEST_METHOD
. 请执行以下操作:关于代码的一些注意事项:应该使用mysqli的面向对象样式,而不是过程样式
mysqli_
功能,特别是出于安全原因。你需要消毒$_POST["empName"]
以及防止mysql注入的查询。您应该阅读以下内容:如何防止php中的sql注入?你考虑过用javascript按学期过滤而不是重新加载页面吗?这可以很容易地实现,因为您无论如何都要在init上加载完整的数据。您可以将数据存储在
drawChart()
方法并为select定义onchange回调方法,该方法过滤行并重新绘制图表。