Я пытаюсь создать диаграмму Google, которая будет изменять данные при нажатии. Когда жестко закодировано все работает хорошо. Таким образом, сама диаграмма 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%']
]);
Наконец, в конце я добавляю событие щелчка, которое зацикливается по моему желанию.
Может кто-нибудь сказать мне, где я иду не так? Или есть более эффективный способ добиться этого?