Я хочу поместить свои переменные в Google Piechart, но он продолжает выбирать последнюю вещь из выбора - PullRequest
0 голосов
/ 30 сентября 2019

У меня есть эти ответы из моей базы данных, но я думаю, что это в массиве, потому что, когда я хочу поместить его в свой график, он выбирает последний, а не 1 на 1.

Я попытался поместить график вцикл while, но тогда он не работал. Даже при том, что это работает с эхом этого.

Это скрипт:

<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
   <script type="text/javascript">
     google.charts.load('current', {'packages':['corechart']});
     google.charts.setOnLoadCallback(drawChart);

     function drawChart() {

       var data = google.visualization.arrayToDataTable([
         ['Task', 'Hours per Day'],
         ['A',      <?php echo $count; ?>],
         ['B',      <?php echo $count; ?>],
         ['C',      <?php echo $count; ?>],
         ['D',      <?php echo $count; ?>],
         ['E',      <?php echo $count; ?>],
         ['F',      <?php echo $count; ?>]
       ]);

       var options = {
         title: 'Aantal antwoorden:'
       };

       var chart = new google.visualization.PieChart(document.getElementById('piechart'));

       chart.draw(data, options);
     }
   </script>

И вот как я получаю переменные:

$aantal = $row['count(answer_id)'];
for ($meme = 1; $meme <= $aantal; $meme++) {
$countAnswerQuery = "SELECT answer_id, COUNT(*), question_id  FROM survey_answers WHERE question_id = '$meme' GROUP BY answer_id ORDER BY question_id ASC";
$countanswerresult = mysqli_query($conn, $countAnswerQuery);
if ($countanswerresult ->num_rows > 0) {
  while ($row = mysqli_fetch_array($countanswerresult)) {

    $question = $row['question_id'];
    $answer = $row['answer_id'];
    $count = $row['COUNT(*)'];

Iнадеюсь, что смогу ввести переменную и изменить ее значение так же, как в эхо (которое я не включил).

enter image description here

Этотаблица БД, и это запрос количества в phpmyadmin: enter image description here

1 Ответ

2 голосов
/ 30 сентября 2019

Все ваши строки с:

['A',      <?php echo $count; ?>]
to
['F',      <?php echo $count; ?>]

У вас одинаковый номер, отсюда и ваш результат.

В общем: просто забудьте о PHP и сначала посмотрите на отправляемый ИСТОЧНИКв браузер. Этот был легко обнаружен, если вы это сделали.

И проблема заключается в вашем PHP-коде, который невозможно отладить, не видя, откуда берется $ count.

РЕДАКТИРОВАТЬ:

Чтобы уточнить:

Эта часть:

var data = google.visualization.arrayToDataTable([
         ['Task', 'Hours per Day'],
         ['A',      <?php echo $count; ?>],
         ['B',      <?php echo $count; ?>],
         ['C',      <?php echo $count; ?>],
         ['D',      <?php echo $count; ?>],
         ['E',      <?php echo $count; ?>],
         ['F',      <?php echo $count; ?>]
       ]);

Всегда имеет одинаковое количество $. И это все, что получает ваш браузер, потому что ваш веб-браузер не знает о вашем PHP или запросах к базе данных. (Это важно помнить для будущих сеансов отладки.)

Таким образом, грубое решение было бы:

(я предполагаю, что ваш опубликованный javascript получен из файла PHP в этом примере)

    <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
       <script type="text/javascript">
         google.charts.load('current', {'packages':['corechart']});
         google.charts.setOnLoadCallback(drawChart);

         function drawChart() {

           var data = google.visualization.arrayToDataTable([
             ['Task', 'Hours per Day'],
<?php
$aantal = $row['count(answer_id)'];
for ($meme = 1; $meme <= $aantal; $meme++) {
$countAnswerQuery = "SELECT answer_id, COUNT(*), question_id  FROM survey_answers WHERE question_id = '$meme' GROUP BY answer_id ORDER BY question_id ASC";
$countanswerresult = mysqli_query($conn, $countAnswerQuery);
if ($countanswerresult ->num_rows > 0) {
  while ($row = mysqli_fetch_array($countanswerresult)) {

    $question = $row['question_id'];
    $answer = $row['answer_id'];
    $count = $row['COUNT(*)'];
    // I am guessing $answer contains A, B, C, not sure.
    echo "['" . $answer . "', {$count}],";
   }
}
?>

           ]);

           var options = {
             title: 'Aantal antwoorden:'
           };

           var chart = new google.visualization.PieChart(document.getElementById('piechart'));

           chart.draw(data, options);
         }
       </script>

Что довольно уродливо по сравнению с запросом Ajax, но работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...