我正在尝试创建一个Google图表,以更改点击数据。当进行硬编码时,一切都很好。因此,谷歌图表本身可以正常工作。
我遇到的问题是PHP。在数据库中,我有一列称为teachers
。有3位老师。我得到这样的老师:
// GET TEACHERS
$teacherIDsql = "SELECT teacher_id FROM `dancers` WHERE school = '$ownerSchool'";
$teacherIDres = mysqli_query($con,$teacherIDsql);
while($idData=mysqli_fetch_array($teacherIDres)){
$teacher_Id = $idData['teacher_id'];
}
$teachersql2 = "SELECT DISTINCT teacher_name, teacher_id, current_lvl FROM `dancers` WHERE school = '$ownerSchool' AND teacher_id = '$teacher_Id'";
$teacherres2 = mysqli_query($con,$teachersql2);
我想再次调用该列中每个老师的数据,这样我将拥有3个版本的google图表,因此我需要在下一个调用中循环这些老师,并且尝试这样做:>
while($chartData2=mysqli_fetch_array($teacherres2)){
$teacher_Id2 = $chartData2['teacher_id'];
$teacherNames2 = $chartData2['teacher_name'];
$teacherNames2 = str_replace(' ', '', $teacherNames2);
$teacherNames2 = str_replace('.', '', $teacherNames2);
$var2 = 'data';
$newVar2 = $var2 . $teacher_Id2 . $teacherNames2;
$teachersql3 = "SELECT current_lvl FROM `dancers` WHERE school = '$ownerSchool' AND teacher_id = 6";
$teacherres3 = mysqli_query($con,$teachersql3);
完成此操作后,我开始尝试获取图表也需要循环的其他数据:
while($lvlrow3 = mysqli_fetch_array($teacherres3)){
$placed2[] = $lvlrow3['current_lvl'];
}
$placeNum2 = array_count_values($placed2);
$lvl_preBeginner = isset($placeNum["Pre Beginner"]) ? $placeNum["Pre Beginner"] : 0;
$lvl_beginner = isset($placeNum["Beginner"]) ? $placeNum["Beginner"] : 0;
$lvl_advanced = isset($placeNum["Advanced Beginner"]) ? $placeNum["Advanced Beginner"] : 0;
$lvl_novice = isset($placeNum["Novice"]) ? $placeNum["Novice"] : 0;
$lvl_prizeWinner = isset($placeNum["Prize Winner"]) ? $placeNum["Prize Winner"] : 0;
$lvl_prelim = isset($placeNum["Prelim Champion"]) ? $placeNum["Prelim Champion"] : 0;
$lvl_open = isset($placeNum["Open Champion"]) ? $placeNum["Open Champion"] : 0;
$lvl_major = isset($placeNum["Major"]) ? $placeNum["Major"] : 0;
$preB_decimal2 = $lvl_preBeginner / $total_students;
$preB_percent2 = round((float)$preB_decimal * 100 ) . '%';
$beginner_decimal2 = $lvl_beginner / $total_students;
$beginner_percent2 = round((float)$beginner_decimal * 100 ) . '%';
$advanced_decimal2 = $lvl_advanced / $total_students;
$advanced_percent2 = round((float)$advanced_decimal * 100 ) . '%';
$novice_decimal2 = $lvl_novice / $total_students;
$novice_percent2 = round((float)$novice_decimal2 * 100 ) . '%';
$prizeWinner_decimal2 = $lvl_prizeWinner / $total_students;
$prizeWinner_percent2 = round((float)$prizeWinner_decimal2 * 100 ) . '%';
$prelim_decimal2 = $lvl_prelim / $total_students;
$prelim_percent2 = round((float)$prelim_decimal2 * 100 ) . '%';
$open_decimal2 = $lvl_open / $total_students;
$open_percent2 = round((float)$open_decimal * 100 ) . '%';
$major_decimal2 = $lvl_major / $total_students;
$major_percent2 = round((float)$major_decimal2 * 100 ) . '%';
$total_students2 = $lvl_preBeginner + $lvl_beginner + $lvl_advanced + $lvl_novice + $lvl_prizeWinner + $lvl_prelim + $lvl_open + $lvl_major;
?>
获取数据后,我尝试像这样循环遍历整个图表数据:
//CHART BY TEACHERS
var <?php echo $newVar2; ?> = google.visualization.arrayToDataTable([
['<? $total_students2; ?> Pre-Beginners', '<?php $lvl_beginner; ?> Beginners', '<?php $lvl_advanced; ?> Advanced Beginners', '<?php echo $lvl_novice; ?> Novices', '<?php echo $lvl_prizeWinner; ?> Prize Winners', '<?php $lvl_prelim; ?> Prelim Champions', '<?php echo $lvl_open; ?> Open Champions', '<?php echo $lvl_major; ?> Majors'],
['<?php echo $preB_percent2; ?>', '<?php echo $beginner_percent2; ?>', '<?php echo $advanced_percent2; ?>', '<?php echo $novice_percent2; ?>', '<?php echo $prizeWinner_percent2; ?>', '<?php echo $prelim_percent2; ?>', '<?php echo $open_percent2; ?>', '<?php echo $major_percent2; ?>']
]);
<?php } ?>
当我查看页面源代码时,我只会看到一个:
//CHART BY TEACHERS
var data5MsLee = google.visualization.arrayToDataTable([
[' Pre-Beginners', ' Beginners', ' Advanced Beginners', '2 Novices', '0 Prize Winners', ' Prelim Champions', '1 Open Champions', '0 Majors'],
['0%', '0%', '0%', '67%', '0%', '0%', '33%', '0%']
]);
但是我想要实现的是:
//CHART BY TEACHERS
var data5MsLee = google.visualization.arrayToDataTable([
[' Pre-Beginners', ' Beginners', ' Advanced Beginners', '2 Novices', '0 Prize Winners', ' Prelim Champions', '1 Open Champions', '0 Majors'],
['0%', '0%', '0%', '67%', '0%', '0%', '33%', '0%']
]);
var data13MrCarter = google.visualization.arrayToDataTable([
[' 10 Pre-Beginners', ' Beginners', ' Advanced Beginners', '2 Novices', '0 Prize Winners', ' Prelim Champions', '0 Open Champions', '3 Majors'],
['67%', '0%', '0%', '13%', '0%', '0%', '33%', '20%']
]);
var data47MsLiz = google.visualization.arrayToDataTable([
[' Pre-Beginners', ' Beginners', ' Advanced Beginners', '2 Novices', '0 Prize Winners', ' Prelim Champions', '1 Open Champions', '0 Majors'],
['0%', '0%', '0%', '67%', '0%', '0%', '33%', '0%']
]);
最后,我添加了一个click事件,该事件根据需要循环播放。
谁能告诉我我要去哪里错了?还是有一种更好的有效方法来实现这一目标?