message d erreur graphique

Eléphanteau du PHP | 21 Messages

25 mai 2022, 08:02

Bonjour,
je realise un graphique Google sur mon site en construction. les donnees viennnent d'une base de donnee mysql.
j'arrivea avoir un graphique a barre mais je n'arrive pas a avoir un graphique en ligne. le message suivant s affiche:

Data column(s) for axis #0 cannot be of type string×

quelle peut etre la raison ?et comment la corriger ? je soupsonne un peu la date de mettre le bazar mais peut etre que je me trompe. merci d avance
<html>
  <head>
    <script type="text/javascript" src="*******/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([
          ['Date', 'Vent', 'Rafale'],

       

                  <?php 
           
            while($row = mysqli_fetch_array($result)){
                  echo"['".$row['Date']."','".$row['Vent']."','".$row['Rafale']."'],";
                }    
            
 ?>
]);

        var options = {
          title: 'Company Performance',
          hAxis: {title: 'Date',  titleTextStyle: {color: '#333'}},
          vAxis: {minValue: 0}
        };

        var chart = new google.visualization.AreaChart(document.getElementById('chart_div'));
        chart.draw(data, options);
      }
    </script>
  </head>
  <body>
    <div id="chart_div" style="width: 100%; height: 500px;"></div>
  </body>
</html>


Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

25 mai 2022, 08:52

Il faut que tu mettes tes dates en utilisant le constructeur de date :
https://developers.google.com/chart/int ... esandtimes
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 21 Messages

25 mai 2022, 11:16

Il faut que tu mettes tes dates en utilisant le constructeur de date :
******/chart/interactive/docs/datesandtimes
Merci pour cette réponse.
pour info je débute totalement en php.
j'ai étudié le document mais je ne sais pas du tout quoi en faire actuellement. Dois je le faire après la requête ou après la boucle? ou peut être autre chose.

Mammouth du PHP | 1967 Messages

25 mai 2022, 12:45

Tu dois le faire dans ta boucle. pour définir un objet Date javascript avec ta date php
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphanteau du PHP | 21 Messages

25 mai 2022, 14:03

Tu dois le faire dans ta boucle. pour définir un objet Date javascript avec ta date php
j'ai essaye pas mal de choses mais sans succes.
voici ma derniere tentative.
<?php 
           
            while($row = mysqli_fetch_array($result)){
                 Date = new date(Year, Month, Day);
                  echo"['".$row['Date']."','".$row['Vent']."','".$row['Rafale']."'],";
                 
                }    
            
 ?>

Mammouth du PHP | 2703 Messages

25 mai 2022, 14:26

il vaut mieux commencer par faire marcher l'exemple de la doc, en dur sans php :
https://developers.google.com/chart/int ... #dataparam

ensuite, toujours en dur, faire le graphique voulu. une fois que c'est bon, alimenter les données depuis php.

Mammouth du PHP | 1967 Messages

25 mai 2022, 14:29

l'objet Date doit être créer en javascript pas en php. mais c'est bien en php que tu va devoir décomposer ta date pour obtenir chaque variable.
ne connaissant pas le format stocké dans ta base, je ne sais pas le faire pour toi.
while($row = mysqli_fetch_array($result)){
                  $year = ...
                  $month = ...
                  $day = ...
                  echo"[new Date(" . $year . ", " . $month . ", " . $day . "),'".$row['Vent']."','".$row['Rafale']."'],";
                }    
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphanteau du PHP | 21 Messages

25 mai 2022, 14:52

l'objet Date doit être créer en javascript pas en php. mais c'est bien en php que tu va devoir décomposer ta date pour obtenir chaque variable.
ne connaissant pas le format stocké dans ta base, je ne sais pas le faire pour toi.
while($row = mysqli_fetch_array($result)){
                  $year = ...
                  $month = ...
                  $day = ...
                  echo"[new Date(" . $year . ", " . $month . ", " . $day . "),'".$row['Vent']."','".$row['Rafale']."'],";
                }    
Bonjour @spol.Merci pour ton aide
Dans ma base de donnée, la date apparait sous ce format .
2022-05-25
cet ID Date est au format DATE dans mysql. est ce que je peux alors la decomposer pour avoir $year,$month et $day ?

Mammouth du PHP | 1967 Messages

25 mai 2022, 15:05

oui tu peux t'amuser à modifier ta requète pour récupèrer les 3 variables séparément
Ou en php avec explode
list($year, $month, $day) = explode("-",$row['Date']);
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphanteau du PHP | 21 Messages

25 mai 2022, 15:33

oui tu peux t'amuser à modifier ta requète pour récupèrer les 3 variables séparément
Ou en php avec explode
list($year, $month, $day) = explode("-",$row['Date']);
j'ai donc modifie mes lignes avec explode mais j'ai toujours le message d'erreur qui apparait. Voila comment j'ai fait.
  <<!DOCTYPE html>
  <html>
  <head>
    <meta charset="utf-8">
  
    <script type="text/javascript" src="*/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([
          ['Date', 'Vent', 'Rafale',],

<?php 
           
            while($row = mysqli_fetch_array($result)){
                  list($year, $month, $day) = explode("-",$row['Date']);
                  echo"['".$row['Date']."','".$row['Vent']."','".$row['Rafale']."'],";
                 
                }    
            
 ?>

        ]);

        var options = {
          title: 'Vent',
          curveType: 'function',
          legend: { position: 'bottom' }
        };

        var chart = new google.visualization.LineChart(document.getElementById('curve_chart'));

        chart.draw(data, options);
      }
    </script>
  </head>
  <body>
    <div id="curve_chart" style="width: 900px; height: 500px"></div>
  </body>
</html>

Avatar du membre
Mammouth du PHP | 1564 Messages

25 mai 2022, 17:19

C'est normale car tu réaffiche la variable $row['Date'], il te faut utiliser $year, $month et $day à la place. Avec "new Date" je suppose, j'ai pas suivi le sujet.

Eléphanteau du PHP | 21 Messages

25 mai 2022, 18:52

C'est normale car tu réaffiche la variable $row['Date'], il te faut utiliser $year, $month et $day à la place. Avec "new Date" je suppose, j'ai pas suivi le sujet.
Bonjour. Merci pour cette réponse.
j'ai vu après que j'avais oublie ce détail mais malgré tout ca ne fonctionne pas.
    <?php 
           
            while($row = mysqli_fetch_array($result))
              
          {
            $Date=($row['Date']);
            list($year, $month, $day) = explode("-",$row['Date']);
             echo"[new Date(" . $year . ", " . $month . ", " . $day . "),'".$row['Vent']."','".$row['Rafale']."'],";
             
          }    
            
    ?>

Avatar du membre
Mammouth du PHP | 1564 Messages

25 mai 2022, 20:13

$Date=($row['Date']); est inutile. Pas besoin non plus des parenthèses lors d'une assignation de variable.

Que donne var_dump(explode("-",$row['Date'])) ?

mets :
echo "debug";
var_dump(explode("-",$row['Date']));
echo "fin debug"; 
dans ta boucle et regarde le code source

Eléphanteau du PHP | 21 Messages

26 mai 2022, 08:42

$Date=($row['Date']); est inutile. Pas besoin non plus des parenthèses lors d'une assignation de variable.

Que donne var_dump(explode("-",$row['Date'])) ?

mets :
echo "debug";
var_dump(explode("-",$row['Date']));
echo "fin debug"; 
dans ta boucle et regarde le code source

Bonjour
Merci pour ton aide,
le résultat dans la console m'explose bien la date. le graphique ne s'affiche toujours pas car apparemment les variables ne sont pas définies. est ce que ces valeurs doivent être recompilées dans un autre format pour pouvoir les utiliser dans google graph ?
<!DOCTYPE html>
  <html>
  <head>
    <meta charset="utf-8">
  
    <script type="text/javascript" src="*******/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([
          ['Date', 'Vent', 'Rafale',],

debugarray(3) {
  [0]=>
  string(4) "2022"
  [1]=>
  string(2) "05"
  [2]=>
  string(2) "26"
}
fin debug<br />
<b>Notice</b>:  Undefined variable: year in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
<br />
<b>Notice</b>:  Undefined variable: month in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
<br />
<b>Notice</b>:  Undefined variable: day in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
[new Date(, , ),'9.70','14.50'],debugarray(3) {
  [0]=>
  string(4) "2022"
  [1]=>
  string(2) "05"
  [2]=>
  string(2) "25"
}
fin debug<br />
<b>Notice</b>:  Undefined variable: year in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
<br />
<b>Notice</b>:  Undefined variable: month in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
<br />
<b>Notice</b>:  Undefined variable: day in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
[new Date(, , ),'14.50','22.50'],debugarray(3) {
  [0]=>
  string(4) "2022"
  [1]=>
  string(2) "05"
  [2]=>
  string(2) "24"
}
fin debug<br />
<b>Notice</b>:  Undefined variable: year in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
<br />
<b>Notice</b>:  Undefined variable: month in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
<br />
<b>Notice</b>:  Undefined variable: day in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
[new Date(, , ),'22.50','37.00'],debugarray(3) {
  [0]=>
  string(4) "2022"
  [1]=>
  string(2) "05"
  [2]=>
  string(2) "23"
}
fin debug<br />
<b>Notice</b>:  Undefined variable: year in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
<br />
<b>Notice</b>:  Undefined variable: month in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
<br />
<b>Notice</b>:  Undefined variable: day in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
[new Date(, , ),'30.60','45.10'],debugarray(3) {
  [0]=>
  string(4) "2022"
  [1]=>
  string(2) "05"
  [2]=>
  string(2) "22"
}
fin debug<br />
<b>Notice</b>:  Undefined variable: year in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
<br />
<b>Notice</b>:  Undefined variable: month in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
<br />
<b>Notice</b>:  Undefined variable: day in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
[new Date(, , ),'14.50','25.70'],debugarray(3) {
  [0]=>
  string(4) "2022"
  [1]=>
  string(2) "05"
  [2]=>
  string(2) "21"
}
fin debug<br />
<b>Notice</b>:  Undefined variable: year in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
<br />
<b>Notice</b>:  Undefined variable: month in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
<br />
<b>Notice</b>:  Undefined variable: day in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
[new Date(, , ),'14.50','17.70'],debugarray(3) {
  [0]=>
  string(4) "2022"
  [1]=>
  string(2) "05"
  [2]=>
  string(2) "20"
}
fin debug<br />
<b>Notice</b>:  Undefined variable: year in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
<br />
<b>Notice</b>:  Undefined variable: month in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
<br />
<b>Notice</b>:  Undefined variable: day in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
[new Date(, , ),'37.00','48.30'],debugarray(3) {
  [0]=>
  string(4) "2022"
  [1]=>
  string(2) "05"
  [2]=>
  string(2) "19"
}
fin debug<br />
<b>Notice</b>:  Undefined variable: year in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
<br />
<b>Notice</b>:  Undefined variable: month in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
<br />
<b>Notice</b>:  Undefined variable: day in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
[new Date(, , ),'32.20','40.20'],debugarray(3) {
  [0]=>
  string(4) "2022"
  [1]=>
  string(2) "05"
  [2]=>
  string(2) "18"
}
fin debug<br />
<b>Notice</b>:  Undefined variable: year in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
<br />
<b>Notice</b>:  Undefined variable: month in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
<br />
<b>Notice</b>:  Undefined variable: day in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
[new Date(, , ),'19.30','24.10'],debugarray(3) {
  [0]=>
  string(4) "2022"
  [1]=>
  string(2) "05"
  [2]=>
  string(2) "17"
}
fin debug<br />
<b>Notice</b>:  Undefined variable: year in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
<br />
<b>Notice</b>:  Undefined variable: month in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
<br />
<b>Notice</b>:  Undefined variable: day in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
[new Date(, , ),'11.30','17.70'],debugarray(3) {
  [0]=>
  string(4) "2022"
  [1]=>
  string(2) "05"
  [2]=>
  string(2) "16"
}
fin debug<br />
<b>Notice</b>:  Undefined variable: year in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
<br />
<b>Notice</b>:  Undefined variable: month in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
<br />
<b>Notice</b>:  Undefined variable: day in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
[new Date(, , ),'14.50','22.50'],debugarray(3) {
  [0]=>
  string(4) "2022"
  [1]=>
  string(2) "05"
  [2]=>
  string(2) "15"
}
fin debug<br />
<b>Notice</b>:  Undefined variable: year in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
<br />
<b>Notice</b>:  Undefined variable: month in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
<br />
<b>Notice</b>:  Undefined variable: day in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
[new Date(, , ),'25.70','37.00'],debugarray(3) {
  [0]=>
  string(4) "2022"
  [1]=>
  string(2) "05"
  [2]=>
  string(2) "14"
}
fin debug<br />
<b>Notice</b>:  Undefined variable: year in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
<br />
<b>Notice</b>:  Undefined variable: month in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
<br />
<b>Notice</b>:  Undefined variable: day in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
[new Date(, , ),'8.00','17.70'],debugarray(3) {
  [0]=>
  string(4) "2022"
  [1]=>
  string(2) "05"
  [2]=>
  string(2) "13"
}
fin debug<br />
<b>Notice</b>:  Undefined variable: year in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
<br />
<b>Notice</b>:  Undefined variable: month in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
<br />
<b>Notice</b>:  Undefined variable: day in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
[new Date(, , ),'8.00','16.10'],debugarray(3) {
  [0]=>
  string(4) "2022"
  [1]=>
  string(2) "05"
  [2]=>
  string(2) "12"
}
fin debug<br />
<b>Notice</b>:  Undefined variable: year in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
<br />
<b>Notice</b>:  Undefined variable: month in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
<br />
<b>Notice</b>:  Undefined variable: day in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
[new Date(, , ),'8.00','14.50'],debugarray(3) {
  [0]=>
  string(4) "2022"
  [1]=>
  string(2) "05"
  [2]=>
  string(2) "11"
}
fin debug<br />
<b>Notice</b>:  Undefined variable: year in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
<br />
<b>Notice</b>:  Undefined variable: month in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
<br />
<b>Notice</b>:  Undefined variable: day in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
[new Date(, , ),'27.40','35.40'],debugarray(3) {
  [0]=>
  string(4) "2022"
  [1]=>
  string(2) "05"
  [2]=>
  string(2) "10"
}
fin debug<br />
<b>Notice</b>:  Undefined variable: year in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
<br />
<b>Notice</b>:  Undefined variable: month in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
<br />
<b>Notice</b>:  Undefined variable: day in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
[new Date(, , ),'11.30','16.10'],debugarray(3) {
  [0]=>
  string(4) "2022"
  [1]=>
  string(2) "05"
  [2]=>
  string(2) "09"
}
fin debug<br />
<b>Notice</b>:  Undefined variable: year in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
<br />
<b>Notice</b>:  Undefined variable: month in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
<br />
<b>Notice</b>:  Undefined variable: day in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
[new Date(, , ),'11.30','17.70'],debugarray(3) {
  [0]=>
  string(4) "2022"
  [1]=>
  string(2) "05"
  [2]=>
  string(2) "08"
}
fin debug<br />
<b>Notice</b>:  Undefined variable: year in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
<br />
<b>Notice</b>:  Undefined variable: month in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
<br />
<b>Notice</b>:  Undefined variable: day in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
[new Date(, , ),'24.10','27.40'],debugarray(3) {
  [0]=>
  string(4) "2022"
  [1]=>
  string(2) "05"
  [2]=>
  string(2) "07"
}
fin debug<br />
<b>Notice</b>:  Undefined variable: year in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
<br />
<b>Notice</b>:  Undefined variable: month in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
<br />
<b>Notice</b>:  Undefined variable: day in <b>C:\Program Files\Ampps\www\test.php</b> on line <b>32</b><br />
[new Date(, , ),'24.10','30.60'],
        ]);

        var options = {
          title: 'Vent',
          curveType: 'function',
          legend: { position: 'bottom' }
        };

        var chart = new google.visualization.LineChart(document.getElementById('curve_chart'));

        chart.draw(data, options);
      };
    </script>
  </head>
  <body>
                <!-- Debut code vignette vigilance départementale  Météo-France -->

        <!-- FIN   -->
    <div id="curve_chart" style="width: 900px; height: 500px"></div>
  </body>
</html>

Avatar du membre
Mammouth du PHP | 1564 Messages

26 mai 2022, 09:30

Si tu mets cette boucle à la place, qu'est ce que donne le code source ?
<?php

while($row = mysqli_fetch_assoc($result)){ //j'utilise assoc à la place d'array, la différence est qu'avec assoc on n'a pas deux fois le même résultat retournée : une fois avec $row[0] et l'autre avec sa concordance nommée
	var_dump($row['Date']);
}    

?>