循环在谷歌图表中的数据,以便我有多个版本的图表PHP

时间:2019-07-11 03:40:46

标签: php google-visualization

我正在尝试创建一个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事件,该事件根据需要循环播放。

谁能告诉我我要去哪里错了?还是有一种更好的有效方法来实现这一目标?

0 个答案:

没有答案