JS ne reconnait pas une variable php

Résolu/Fermé
mont_dani Messages postés 232 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 7 mai 2024 - Modifié le 26 juin 2017 à 13:37
jordane45 Messages postés 38185 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 23 mai 2024 - 7 juil. 2017 à 18:25
Bonjour a tous.

J ai un probleme avec JS qui ne reconnait pas la variable php.

voici mon script

Merci pour votre aide

<?php
//Démarrage des sessions
session_start ();
 
//Affichage des erreurs PHP
error_reporting(E_ALL);
ini_set('display-errors','on');
 
 
// REQUIRE
 
require_once ('connexion.php');
 
 
//Récupération des variables AVANT de les utiliser
$mes_opcion  = !empty($_POST['mes']) ? $_POST['mes'] : (!empty($_SESSION['mes']) ? $_SESSION['mes'] : NULL);
$_SESSION['mes'] = $mes_opcion ;
print_r(array_values($mes_opcion));
 
 
//Traitement
$sql = 'SELECT fecha, lluvia FROM meteo WHERE MONTH(fecha) = ? ';
$datas = array($mes_opcion[0]);
 
try{
  $req = $connexion->prepare($sql);
  $req->execute($datas);
  $row = $req->fetchAll(PDO::FETCH_ASSOC); //on stocke les données dans un ARRAY
}catch(Exception $e){
  echo "Erreur ! ".$e->getMessage();
}
 
$datos_lluvia = array();
if(!empty($row)){
  //On parcours l'array
  foreach($row as $R)  {
    $datos_lluvia[] = (float)$R['lluvia'];
  }
}else{
  echo " La requête n'a pas retournée de données.... ";
}
 
print_r(array_values($datos_lluvia)); // da Array ( [0] => 10 [1] => 40 [2] => 5 [3] => 5 [4] => 20 [5] => 91 )
echo "<pre>datos_lluvia :<br>";
 
print_r($datos_lluvia); // da datos_lluvia :
Array
(
    [0] => 10
    [1] => 40
    [2] => 5
    [3] => 5
    [4] => 20
    [5] => 91
)
 
echo " en Json => " . json_encode($datos_lluvia); //da en Json => [10,40,5,5,20,91]
 
echo "</pre>";
$req->closeCursor();
?>
 
 
 
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" > </script>
 
<!-- Load the AJAX API -->
<script type="text/javascript" src="https://www.google.com/jsapi" > </script>
<script type="text/javascript"
src="https://www.google.com/jsapi?autoload={
'modules':[{
'name':'visualization',
'version':'1',
'packages':['corechart']
}]
}"></script>
 
<script type="text/javascript">
 var cargaDatos = <?php echo json_encode($datos_lluvia); ?>;
  console.log(cargaDatos);
  console.log( " cargaDatos : " );
 
 google.setOnLoadCallback(drawChart);
 
function drawChart() {
 
  var datosFinales = google.visualization.arrayToDataTable(cargaDatos);
 
  var options = {
         title: 'Precipitacion',
         curveType: 'function',
         legend: { position: 'bottom' }
       };
 
 var chart = new google.visualization.LineChart(document.getElementById('curve_chart'));
 
 chart.draw(datosFinales, options);
 }
  </script>
</head>
<body>
<div id="curve_chart" style="width: 900px; height: 500px"></div>
</body>
</html>

4 réponses

Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
26 juin 2017 à 14:57
Bonjour,

Si tu « affiches la source » depuis ton navigateur, ça donne quoi au niveau de ta variable JS ?
Est-ce que la console javascript te donne un message d'erreur ?

Xavier
0
mont_dani Messages postés 232 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 7 mai 2024
27 juin 2017 à 12:03
J ai cette liste d erreur

Uncaught SyntaxError: Unexpected token >
2jsapi:22 A Parser-blocking, cross site (i.e. different eTLD+1) script, https://www.google.com/uds/api/visualization/1.0/40ff64b1d9d6b3213524485974f36cc0/format+es,default+es,ui+es,corechart+es.I.js is invoked via document.write. The network request for this script MAY be blocked by the browser in this or a future page load due to poor network connectivity. If blocked in this page load, it will be confirmed in a subsequent console message.See https://www.chromestatus.com/feature/5718547946799104 for more details.
google.loader.f @ jsapi:22
(anonymous) @ jsapi?autoload={'modules':[{'name':'visualization','version':'1','packages':['corechart']}]}:54
new3.php:114 (6) [10, 40, 5, 5, 20, 91]
new3.php:115 cargaDatos :
format+es,default+es,ui+es,corechart+es.I.js:272 Uncaught Error: First row is not an array.
at gvjs_oba (format+es,default+es,ui+es,corechart+es.I.js:272)
at Object.gvjs_Cl [as arrayToDataTable] (format+es,default+es,ui+es,corechart+es.I.js:274)
at drawChart (new3.php:121)
0
jordane45 Messages postés 38185 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 23 mai 2024 4 671 > mont_dani Messages postés 232 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 7 mai 2024
27 juin 2017 à 12:15
Bonjour,
Concernant ces messages d'erreur , il me semblait t'avoir indiqué de TELECHARGER les différents fichiers JS et de les mettre DIRECTEMENT sur ton site au lieu de pointer sur les URL distantes.
Commence par faire ça puis regarde si les messages apparaissent toujours.
0
mont_dani Messages postés 232 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 7 mai 2024 > jordane45 Messages postés 38185 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 23 mai 2024
27 juin 2017 à 13:59
Pour le jquery-3.2.1.min.js c est fait.

Pour https://www.gstatic.com/charts/loader.js ce n est pas un fichier. Que dois je faire avec lui?
0
mont_dani Messages postés 232 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 7 mai 2024 > mont_dani Messages postés 232 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 7 mai 2024
27 juin 2017 à 14:14
maintenant j ai

<script src="jquery-3.2.1.min.js" > </script>
<!-- Load the AJAX API -->
<script type="text/javascript" src="src="https://www.google.com/jsapi" > </script>
<script type="text/javascript"
src="https://www.google.com/jsapi?autoload={
'modules':[{
'name':'visualization',
'version':'1',
'packages':['corechart']
}]
}";
</script>
0
mont_dani Messages postés 232 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 7 mai 2024 > mont_dani Messages postés 232 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 7 mai 2024
Modifié le 29 juin 2017 à 00:15
J ai trouver sur le web un script un peu different.



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

Le message d erreur est : new3.php:43 Uncaught SyntaxError: Unexpected token <

Merci pour ton aide.

Mon script est.
<?php
//Démarrage des sessions
session_start ();

//Affichage des erreurs PHP
error_reporting(E_ALL);
ini_set('display-errors','on');


// REQUIRE

require_once ('connexion.php');


//Récupération des variables AVANT de les utiliser
$mes_opcion  = !empty($_POST['mes']) ? $_POST['mes'] : (!empty($_SESSION['mes']) ? $_SESSION['mes'] : NULL);
$_SESSION['mes'] = $mes_opcion ;
print_r(array_values($mes_opcion)); 


//Traitement
$sql = 'SELECT fecha, lluvia FROM meteo WHERE MONTH(fecha) = ? ';
$datas = array($mes_opcion[0]);

try{
  $req = $connexion->prepare($sql);
  $req->execute($datas);
  $row = $req->fetchAll(PDO::FETCH_ASSOC); //on stocke les données dans un ARRAY
}catch(Exception $e){
  echo "Erreur ! ".$e->getMessage();
}

$datos_lluvia = array();
if(!empty($row)){
  //On parcours l'array 
  foreach($row as $R)  {
    $datos_lluvia[] = (float)$R['lluvia'];
  }
}else{
  echo " La requête n'a pas retournée de données.... ";
}

print_r(array_values($datos_lluvia));
echo "<pre>datos_lluvia :<br>";

print_r($datos_lluvia);
echo " en Json => " . json_encode($datos_lluvia);
echo "</pre>";

$req->closeCursor();
?>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
   <script type="text/javascript">
     google.charts.load('current', {packages: ['corechart']});     
   </script>

 
 <script type="text/javascript">
//cargamos nuestro array $datos_lluvia creado en PHP para que se puede utilizar en JavaScript


var cargaDatos = <?php echo json_encode($datos_lluvia); ?>;
//var cargaDatos = "<?php echo $datos_lluvia; ?>";
console.log(cargaDatos);
console.log( " cargaDatos : " );

google.setOnLoadCallback(drawChart);

function drawChart() {
 
var datosFinales = google.visualization.arrayToDataTable(cargaDatos);
 
var options = {
title: 'Precipitacion',
curveType: 'function',
legend: { position: 'bottom' }
};
 
var chart = new google.visualization.LineChart(document.getElementById('curve_chart'));
 
chart.draw(datosFinales, options);
}
 
</script>
</head>
<body>
<div id="curve_chart" style="width: 900px; height: 500px"></div>
</body>
</html>




EDIT : (encore une fois....) Ajout du LANGAGE dans les balises de code (ça permet d'avoir la coloration syntaxique et les numéros de ligne).
Explications disponibles ici :ICI

Merci d'y penser dans tes prochains messages.
0
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
Modifié le 29 juin 2017 à 12:36
Bonjour,

Tu n'as pas donné le code source généré (celui qu'on obtient dans le navigateur en « affichant la source »).
Or c'est probablement là qu'on verra le problème, puisque ton erreur survient a priori dans le navigateur et non côté serveur.

Par ailleurs, ta page html n'est pas correcte à cause des « echo » et « print_r » de ton code php.
Ces éléments sont importants pour voir ce qu'il se passe, mais il faut les supprimer (ou commenter) quand tu n'en as plus besoin.
Comme ils apparaissent dans la page html avant le tag <html>, ils peuvent très probablement poser des soucis aux navigateurs et scripts.
Mets en commentaires ces lignes-là :
/*
print_r(array_values($datos_lluvia));
echo "<pre>datos_lluvia :<br>";

print_r($datos_lluvia);
echo " en Json => " . json_encode($datos_lluvia);
echo "</pre>";
*/


Xavier
0
mont_dani Messages postés 232 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 7 mai 2024
29 juin 2017 à 14:40
J ai supprimer les comentaires et voici le code source
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="js/loader.js"></script>
<script type="text/javascript" src="js/jquery-3.2.1.min.js"></script>

<script type="text/javascript">

//cargamos nuestro array $datos_lluvia creado en PHP para que se puede utilizar en JavaScript

var cargaDatos = [10,40,5,5,20,91];
console.log(cargaDatos);
console.log( " cargaDatos : " );

google.charts.setOnLoadCallback(drawChart);

function drawChart() {

var datosFinales = google.visualization.arrayToDataTable(cargaDatos);

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

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

chart.draw(datosFinales, options);
}

</script>
</head>
<body>
<div id="curve_chart" style="width: 900px; height: 500px"></div>
</body>
</html>
0
jordane45 Messages postés 38185 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 23 mai 2024 4 671 > mont_dani Messages postés 232 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 7 mai 2024
29 juin 2017 à 14:48
Tu restes sur ton ancien code ou tu passes à l'ajax comme je te l'ai indiqué ??
(car je vois que tu as chargé Jquery....)
0
mont_dani Messages postés 232 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 7 mai 2024 > jordane45 Messages postés 38185 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 23 mai 2024
29 juin 2017 à 16:17
Si je comprend bien l ajax, je dois faire

un fichier qui contient tout le php pour recuperer les données
et
un autre qui contient le js pour faire le graph.

Et je remplace le getdata.php par la url de mon fichier php

Est ce que c'est correct?
0
mont_dani Messages postés 232 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 7 mai 2024 > mont_dani Messages postés 232 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 7 mai 2024
Modifié le 29 juin 2017 à 17:39
J ai creer un ficher new1.php qui recupere les donnes et contient
<?php
//Démarrage des sessions
session_start ();

//Affichage des erreurs PHP
error_reporting(E_ALL);
ini_set('display-errors','on');


// REQUIRE

require_once ('connexion.php');


//Récupération des variables AVANT de les utiliser
$mes_opcion  = !empty($_POST['mes']) ? $_POST['mes'] : (!empty($_SESSION['mes']) ? $_SESSION['mes'] : NULL);
$_SESSION['mes'] = $mes_opcion ;
//print_r(array_values($mes_opcion)); 


//Traitement
$sql = 'SELECT fecha, lluvia FROM meteo WHERE MONTH(fecha) = ? ';
$datas = array($mes_opcion[0]);

try{
  $req = $connexion->prepare($sql);
  $req->execute($datas);
  $row = $req->fetchAll(PDO::FETCH_ASSOC); //on stocke les données dans un ARRAY
}catch(Exception $e){
  $result['ERROR'][] = "Erreur ! ".$e->getMessage();
}

$req->closeCursor();

$datos_lluvia = array();
if(!empty($row)){
  //On parcours l'array 
  foreach($row as $R)  {
   $result[] = (float)$R['lluvia'];
  }
}else{
  $result['ERROR'][] = " La requête n'a pas retournée de données.... ";
}

//echo  json_encode($result);
?>


et un ficher new4.php pour traiter le graph qui contient
<?php
//Démarrage des sessions
session_start ();

?>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <script type="text/javascript" src="js/loader.js"></script>
    <script type="text/javascript" src="js/jquery-3.2.1.min.js"></script>
 
 <script type="text/javascript">
      google.charts.load('current', {'packages':['corechart']});
      
   
     
  //cargamos nuestro array $datos_lluvia creado en PHP para que se puede utilizar en JavaScript 

var jsonData = $.ajax({
   url: "new1.php",
          dataType: "json",
          async: false
          }).responseText;
    
console.log(jsonData);


google.charts.setOnLoadCallback(drawChart);
function drawChart() {
 
var datosFinales = google.visualization.arrayToDataTable(jsonData);


var options = {
title: 'Precipitacion',
curveType: 'function',
legend: { position: 'bottom' }
};
 
var chart = new google.visualization.LineChart(document.getElementById('curve_chart'));
 
chart.draw(datosFinales, options);
}
 
</script>
</head>
<body>
<div id="curve_chart" style="width: 900px; height: 500px"></div>
</body>
</html>




erreur console:
1- [Deprecation] Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check https://xhr.spec.whatwg.org/
2- jsapi_compiled_default_module.js:81 Uncaught (in promise) Error: Not an array
at gvjs_zba (jsapi_compiled_default_module.js:81)
at Object.gvjs_sm [as arrayToDataTable] (jsapi_compiled_default_module.js:83)
at drawChart (new4.php:27)
at <anonymous>

et le code source est
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <script type="text/javascript" src="js/loader.js"></script>
    <script type="text/javascript" src="js/jquery-3.2.1.min.js"></script>
 
 <script type="text/javascript">
      google.charts.load('current', {'packages':['corechart']});
      
   
     
  //cargamos nuestro array $datos_lluvia creado en PHP para que se puede utilizar en JavaScript 

var jsonData = $.ajax({
   url: "new1.php",
          dataType: "json",
          async: false
          }).responseText;
    
console.log(jsonData);


google.charts.setOnLoadCallback(drawChart);
function drawChart() {
 
var datosFinales = google.visualization.arrayToDataTable(jsonData);


var options = {
title: 'Precipitacion',
curveType: 'function',
legend: { position: 'bottom' }
};
 
var chart = new google.visualization.LineChart(document.getElementById('curve_chart'));
 
chart.draw(datosFinales, options);
}
 
</script>
</head>
<body>
<div id="curve_chart" style="width: 900px; height: 500px"></div>
</body>
</html>



qu'en penses-tu?


EDIT : ENCORE ET ENCORE ET ENCORE !!!!!!!!!
=> Ajout du LANGAGE dans les balises de code (la coloration syntaxique).

Explications disponibles ici :ICI

Merci d'y penser dans tes prochains messages.
Jordane45
0
jordane45 Messages postés 38185 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 23 mai 2024 4 671 > mont_dani Messages postés 232 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 7 mai 2024
29 juin 2017 à 17:54
Bon...
Déjà (par ce que j'en ai marre de devoir éditer tous tes messages :
<gras Pour poster du code sur le forum.. merci d'utiliser la coloration syntaxique (les balises de code en y PRÉCISANT LE LANGAGE !!! </gras>).
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

Ensuite...
1- [Deprecation] Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check https://xhr.spec.whatwg.org/

Ca ce n'est qu'un WARNING .. pas une erreur.

Puis :
Pourquoi ... est-ce que ton code (javascript) .. ne correspond pas à celui donné en exemple ?
As tu essayé de juste copier/coller le code qui se trouve dans le lien que je t'ai donné ??
Par exemple...
Dans ton Javascript .. ne mettre que :
 // Load the Visualization API and the piechart package.
    google.charts.load('current', {'packages':['corechart']});
      
    // Set a callback to run when the Google Visualization API is loaded.
    google.charts.setOnLoadCallback(drawChart);
      
    function drawChart() {
      var jsonData = $.ajax({
          url: "new1.php",
          dataType: "json",
          async: false
          }).responseText;
          
      // Create our data table out of JSON data loaded from server.
      var data = new google.visualization.DataTable(jsonData);

      // Instantiate and draw our chart, passing in some options.
      var chart = new google.visualization.PieChart(document.getElementById('curve_chart'));
      chart.draw(data, {width: 400, height: 240});
    }

    </script>


NB: Pour éviter le warning (voir mon point N°1 ) il suffit de remplacer :
async: false

par
async: true



A la limite... on pourrait même un peu modifier le code proposé par celui la : (j'en profite pour y ajouter un peu de debug )

// Load the Visualization API and the piechart package.
google.charts.load('current', {'packages':['corechart']});
  
// Set a callback to run when the Google Visualization API is loaded.
google.charts.setOnLoadCallback(drawChart);
   
function drawChart(){
  $.ajax({
      url: "new1.php",
      dataType: "json",
      async: true,
      success: function(jsonData){
         console.log(jsonData);
        // Create our data table out of JSON data loaded from server.
        var data = new google.visualization.DataTable(jsonData);
        // Instantiate and draw our chart, passing in some options.
        var chart = new google.visualization.PieChart(document.getElementById('curve_chart'));
        chart.draw(data, {width: 400, height: 240});
      },
      error:function(jqXHR, textStatus){
        alert('error :' jqXHR.status + ' : ' +textStatus);
      }
  });      
}  




Si le message d'erreur jsapi_compiled_default_module.js:81 Uncaught (in promise) Error: Not an array
at gvjs_zba (jsapi_compiled_default_module.js:81)
persiste, tu pourras essayer de changer la ligne
var data = new google.visualization.DataTable(jsonData); 
par
var data = new google.visualization.DataTable($.parseJSON(jsonData));
0
mont_dani Messages postés 232 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 7 mai 2024
6 juil. 2017 à 12:33
Bonjour Jordane

J ai modifié le script en enlevant tout ce qui traite du graph et j'ai conservé la ligne de récupération des données en JS
Voici le code. (inserer avec "code php" ou le console.log ne renvoit rien.

<?php
//Démarrage des sessions
session_start ();

//Affichage des erreurs PHP
error_reporting(E_ALL);
ini_set('display-errors','on');


// REQUIRE

require_once ('connexion.php');


//Récupération des variables AVANT de les utiliser
$mes_opcion  = !empty($_POST['mes']) ? $_POST['mes'] : (!empty($_SESSION['mes']) ? $_SESSION['mes'] : NULL);
$_SESSION['mes'] = $mes_opcion ;
print_r(array_values($mes_opcion)); 


//Traitement
$[/sql/sqlintro.php3 sql] = 'SELECT fecha, lluvia FROM meteo WHERE MONTH(fecha) = ? ';
$datas = array($mes_opcion[0]);

try{
  $req = $connexion->prepare($sql);
  $req->execute($datas);
  $row = $req->fetchAll(PDO::FETCH_ASSOC); //on stocke les données dans un ARRAY
}catch(Exception $e){
  echo "Erreur ! ".$e->getMessage();
}

$datos_lluvia = array();
if(!empty($row)){
  //On parcours l'array 
  foreach($row as $R)  {
    $datos_lluvia[] = (float)$R['lluvia'];
  }
}else{
  echo " La requête n'a pas retournée de données.... ";
}

print_r(array_values($datos_lluvia));
echo "<pre>datos_lluvia :<br>";

print_r($datos_lluvia);
echo " en Json => " . json_encode($datos_lluvia);
echo "</pre>";
//les echo renvoient bien les données
$req->closeCursor();

?>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  
<script type="text/javascript">
  
var cargaDatos = <?php echo json_encode($datos_lluvia); ?>;
console.log(cargaDatos);
console.log( " cargaDatos : " );
/* console.log ne renvoi rien*/
</script>
</head>
</html>


0
jordane45 Messages postés 38185 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 23 mai 2024 4 671
7 juil. 2017 à 01:08
le console.log ne renvoit rien

Même pas le mot " cargaDatos " ??
Tu pourrais nous faire une capture écran de ta console lorsque tu affiches cette page ??

Et lorsque tu affiches cette page ...est-ce que la parti php
print_r(array_values($datos_lluvia));
echo "<pre>datos_lluvia :<br>";

print_r($datos_lluvia);
echo " en Json => " . json_encode($datos_lluvia);
echo "</pre>";

affiche quelque chose dans ta page ??

ce fichier est-il bien encodé en utf8 sans bom ? (je parle de l'encodage du fichier ......pas de la déclaration php ou html que tu aurais pu inscrire dans ton code ! )
Voir chapitre 1 ici pour les explications :
https://forums.commentcamarche.net/forum/affich-37584944-php-html-caracteres-accentues-et-l-utf8
(là aussi je veux bien un screen pour pouvoir m'assurer de mes propres yeux que tu as bien vérifié et compris ce que j'ai dit ..... )
0
mont_dani Messages postés 232 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 7 mai 2024
Modifié le 7 juil. 2017 à 15:29
Bonjour Jordane

Console.log ne renvoit rien même pas le mot cargaDatos

le php renvoi
Array ( [0] => 03 ) Array ( [0] => 10 [1] => 40 [2] => 5 [3] => 5 [4] => 20 [5] => 91 )
datos_lluvia :
Array
(
[0] => 10
[1] => 40
[2] => 5
[3] => 5
[4] => 20
[5] => 91
)
en Json => [10,40,5,5,20,91]

image impr ecran


Console.log renvoit ceci
Imprime ecran de la console




mon fichier est encode en utf8 sans bom
imprime ecran
.


En mettant le code complet ci dessous

<?php
//Démarrage des sessions
session_start ();

//Affichage des erreurs PHP
error_reporting(E_ALL);
ini_set('display-errors','on');


// REQUIRE

require_once ('connexion.php');


//Récupération des variables AVANT de les utiliser
$mes_opcion  = !empty($_POST['mes']) ? $_POST['mes'] : (!empty($_SESSION['mes']) ? $_SESSION['mes'] : NULL);
$_SESSION['mes'] = $mes_opcion ;
print_r(array_values($mes_opcion)); 


//Traitement
$sql = 'SELECT fecha, lluvia FROM meteo WHERE MONTH(fecha) = ? ';
$datas = array($mes_opcion[0]);

try{
  $req = $connexion->prepare($sql);
  $req->execute($datas);
  $row = $req->fetchAll(PDO::FETCH_ASSOC); //on stocke les données dans un ARRAY
}catch(Exception $e){
  echo "Erreur ! ".$e->getMessage();
}

$datos_lluvia = array();
if(!empty($row)){
  //On parcours l'array 
  foreach($row as $R)  {
    $datos_lluvia[] = (float)$R['lluvia'];
  }
}else{
  echo " La requête n'a pas retournée de données.... ";
}

print_r(array_values($datos_lluvia));
echo "<pre>datos_lluvia :<br>";

print_r($datos_lluvia);
echo " en Json => " . json_encode($datos_lluvia);
echo "</pre>";

$req->closeCursor();

?>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="js/loader.js"></script>
<script type="text/javascript" src="js/jquery-3.2.1.min.js"></script>  
<script language="javascript" type="text/javascript">
 
google.charts.load('current', {'packages':['corechart']});
 
var cargaDatos = <?php echo json_encode($datos_lluvia); ?>;
console.log(cargaDatos);
console.log( " cargaDatos : " );

google.charts.setOnLoadCallback(drawChart);

function drawChart() {
	
var datosFinales = google.visualization.arrayToDataTable('cargaDatos');
 
var options = {
title: 'Precipitacion',
curveType: 'function',
legend: { position: 'bottom' }
};
 
var chart = new google.visualization.LineChart(document.getElementById('curve_chart'));
 
chart.draw(datosFinales, options);
}
</script>
</head>
<body>
<div id="curve_chart" style="width: 900px; height: 500px"></div>
</body>
</html>


erreur dans la console

(6) [10, 40, 5, 5, 20, 91]
new3.php:39 cargaDatos :
jsapi_compiled_default_module.js:81 Uncaught (in promise) Error: Not an array
at gvjs_zba (jsapi_compiled_default_module.js:81)
at Object.gvjs_sm [as arrayToDataTable] (jsapi_compiled_default_module.js:83)
at drawChart (new3.php:45)
at <anonymous>
0
jordane45 Messages postés 38185 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 23 mai 2024 4 671
7 juil. 2017 à 15:31
Heu.... la console.... non seulement elle affiche bien le mot cargaDatos .. mais en plus elle affiche bien le contenu de ta variable .....
je les vois d'ici dans ton imprime écran ..... :-(
0
jordane45 Messages postés 38185 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 23 mai 2024 4 671 > jordane45 Messages postés 38185 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 23 mai 2024
7 juil. 2017 à 16:01
regarde :
0
mont_dani Messages postés 232 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 7 mai 2024 > jordane45 Messages postés 38185 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 23 mai 2024
7 juil. 2017 à 18:15
oui d accord avec toi

mais d ou vient cette erreur avec le code complet

erreur dans la console

(6) [10, 40, 5, 5, 20, 91]
new3.php:39 cargaDatos :
jsapi_compiled_default_module.js:81 Uncaught (in promise) Error: Not an array
at gvjs_zba (jsapi_compiled_default_module.js:81)
at Object.gvjs_sm [as arrayToDataTable] (jsapi_compiled_default_module.js:83)
at drawChart (new3.php:45)
at <anonymous>
0
jordane45 Messages postés 38185 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 23 mai 2024 4 671 > mont_dani Messages postés 232 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 7 mai 2024
7 juil. 2017 à 18:25
là c'est une erreur au niveau de la librairie ....
Tu utilises "arrayToDataTable"
Il attend un array.... et visiblement tu lui donnes un objet json... normal qu'il tire la tronche ...

Quoi qu'il en soit... je t'avais donné un code permettant de récupérer les données via AJAX.
https://forums.commentcamarche.net/forum/affich-34684758-js-ne-reconnait-pas-une-variable-php#22
L'avais tu essayé ???
Si il ne fonctionnait pas..... qu'est-ce qui apparaissait dans la console ??? (et cette fois... avant de me dire "rien" .. vérifie bien !!! )


Sinon du côté de ton code à toi ...
tu peux essayer de remplacer le code
var datosFinales = google.visualization.arrayToDataTable(jsonData);


par :
var datosFinales = new google.visualization.DataTable(jsonData);

Et si ça ne marche toujours pas.. par
var datosFinales = new google.visualization.DataTable($.parseJSON(jsonData));
0