Probleme de variable avec google charts
Résolu/Fermé
mont_dani
Messages postés
232
Date d'inscription
mardi 6 juin 2017
Statut
Membre
Dernière intervention
7 mai 2024
-
21 juin 2017 à 21:20
mont_dani Messages postés 232 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 7 mai 2024 - 26 juin 2017 à 07:49
mont_dani Messages postés 232 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 7 mai 2024 - 26 juin 2017 à 07:49
A voir également:
- Probleme de variable avec google charts
- Google maps satellite - Guide
- Dns google - Guide
- Google maps - Guide
- Google - Guide
- Google earth - Télécharger - 3D
7 réponses
yg_be
Messages postés
23447
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
28 janvier 2025
Ambassadeur
1 562
21 juin 2017 à 21:36
21 juin 2017 à 21:36
bonsoir, je suggère de remplacer
par
$_SESSION['mes'] = $_POST['mes']; $mes_opcion = $_SESSION['mes']; //$mes_opcion = 03; print_r(array_values($mes_opcion)); // donne Array ( [0] => 03 )
par
$mes_opcion = intval($_POST['mes']); print_r($mes_opcion);
jordane45
Messages postés
38396
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 janvier 2025
4 732
Modifié le 21 juin 2017 à 21:41
Modifié le 21 juin 2017 à 21:41
Bonjour,
1 - On récupère PROPREMENT les variables avant de les utiliser
devient :
2 - Tu utilises l'ancienne extension mysql considérée comme OBSOLETE !
Je t'invite vivement à passer à PDO ou mysqli
3 - En attendant que tu passes à pdo ou mysqli ... pense à gérer les erreurs au niveau des requête...
par exemple :
4 - Pense à activer l'affichage des erreurs de code...
Il faut ajouter ces deux lignes au tout début de ton fichier php (juste après le <?php
Cordialement,
Jordane
1 - On récupère PROPREMENT les variables avant de les utiliser
$_SESSION['mes'] = $_POST['mes']; $mes_opcion = $_SESSION['mes'];
devient :
$mes = !empty($_POST['mes']) ? $_POST['mes'] : (!empty($_SESSION['mes']) ? $_SESSION['mes'] : NULL); $_SESSION['mes'] = $mes; //la valeur se trouve dans un array... // tu le dis toi même dans ton print_r //print_r(array_values($mes_opcion)); // donne Array ( [0] => 03 ) //il faut donc extraire la donnée de l'array ! $mes_opcion = !empty($mes) ? $mes[0] : NULL;
2 - Tu utilises l'ancienne extension mysql considérée comme OBSOLETE !
Je t'invite vivement à passer à PDO ou mysqli
3 - En attendant que tu passes à pdo ou mysqli ... pense à gérer les erreurs au niveau des requête...
par exemple :
$result = mysql_query($SQLDatos) or die(mysql_error());
4 - Pense à activer l'affichage des erreurs de code...
Il faut ajouter ces deux lignes au tout début de ton fichier php (juste après le <?php
//-------------------------------------// // Affichage des erreurs PHP //-------------------------------------// error_reporting(E_ALL); ini_set('display-errors','on');
Cordialement,
Jordane
mont_dani
Messages postés
232
Date d'inscription
mardi 6 juin 2017
Statut
Membre
Dernière intervention
7 mai 2024
22 juin 2017 à 10:57
22 juin 2017 à 10:57
Bonjour Jordane.
Merci pour ta réponse.
J'ai effectué quelques modifications.
Dans l'array retourné il manque la date(fecha).
voici le code modifié.
Merci pour ta réponse.
J'ai effectué quelques modifications.
Dans l'array retourné il manque la date(fecha).
voici le code modifié.
<?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)); // renvoi Array ( [0] => 03 ) ==> valeurs correctes //Traitement $sql = 'SELECT fecha, lluvia FROM meteo WHERE MONTH(fecha) = 03 '; $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)); // renvoi Array ( [0] => 10 [1] => 40 [2] => 5 [3] => 5 [4] => 20 [5] => 91 ) ==> valeurs correctes mais il manque la date $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"> google.setOnLoadCallback(drawChart); function drawChart() { //cargamos nuestro array $datos_lluvia creado en PHP para que se puede utilizar en JavaScript var cargaDatos = <?php echo json_encode($datos_lluvia); ?>; 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>
jordane45
Messages postés
38396
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 janvier 2025
4 732
22 juin 2017 à 11:56
22 juin 2017 à 11:56
Donc c'est bon ??
Tu mettras le sujet en RESOLU dans ce cas.
Tu mettras le sujet en RESOLU dans ce cas.
mont_dani
Messages postés
232
Date d'inscription
mardi 6 juin 2017
Statut
Membre
Dernière intervention
7 mai 2024
22 juin 2017 à 13:25
22 juin 2017 à 13:25
Nonn. Le graphique ne s'affiche pas
jordane45
Messages postés
38396
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 janvier 2025
4 732
22 juin 2017 à 13:54
22 juin 2017 à 13:54
Mais là c'est peut-être bien un souci côté javascript ....
As tu regardé dans la console si tu n'avais pas de message d'erreur ???
As tu regardé (via un console.log) ce que vaut ta variable cargaDatos dans ton code js ?
As tu regardé (via un console.log) ce que vaut ta variable datosFinales ?
As tu regardé dans la console si tu n'avais pas de message d'erreur ???
As tu regardé (via un console.log) ce que vaut ta variable cargaDatos dans ton code js ?
As tu regardé (via un console.log) ce que vaut ta variable datosFinales ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
mont_dani
Messages postés
232
Date d'inscription
mardi 6 juin 2017
Statut
Membre
Dernière intervention
7 mai 2024
22 juin 2017 à 14:50
22 juin 2017 à 14:50
effectivement, console.log(cargaDatos); ne renvoi rien.
jordane45
Messages postés
38396
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 janvier 2025
4 732
22 juin 2017 à 15:38
22 juin 2017 à 15:38
et , si dans ton code, avant le javascript tu ajoutes
Qu'est-ce que ça t'affiche ?
echo "<pre>datos_lluvia :<br>"; print_r($datos_lluvia); echo " en Json => " . json_encode($datos_lluvia); echo "</pre>";
Qu'est-ce que ça t'affiche ?
mont_dani
Messages postés
232
Date d'inscription
mardi 6 juin 2017
Statut
Membre
Dernière intervention
7 mai 2024
22 juin 2017 à 18:03
22 juin 2017 à 18:03
J ai mis ta partie de code juste avant $req->closeCursor();
ca m'affiche
datos_lluvia :
Array
(
[0] => 10
[1] => 40
[2] => 5
[3] => 5
[4] => 20
[5] => 91
)
en Json => [10,40,5,5,20,91]
ca m'affiche
datos_lluvia :
Array
(
[0] => 10
[1] => 40
[2] => 5
[3] => 5
[4] => 20
[5] => 91
)
en Json => [10,40,5,5,20,91]
jordane45
Messages postés
38396
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 janvier 2025
4 732
22 juin 2017 à 18:35
22 juin 2017 à 18:35
Et le
console.log(cargaDatos);placé juste après la déclaration de la variable dans ton js ne donne rien ??
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
38396
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 janvier 2025
23 juin 2017 à 07:38
23 juin 2017 à 07:38
Non console.log(cargaDatos); placé juste après la déclaration de la variable ne donne rien.
//cargamos nuestro array $datos_lluvia creado en PHP para que se puede utilizar en JavaScript var cargaDatos = <?php echo json_encode($datos_lluvia); ?>; console.log(cargaDatos); var datosFinales = google.visualization.arrayToDataTable(cargaDatos);
jordane45
Messages postés
38396
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 janvier 2025
4 732
>
mont_dani
Messages postés
232
Date d'inscription
mardi 6 juin 2017
Statut
Membre
Dernière intervention
7 mai 2024
23 juin 2017 à 10:19
23 juin 2017 à 10:19
//cargamos nuestro array $datos_lluvia creado en PHP para que se puede utilizar en JavaScript var cargaDatos = <?php echo json_encode($datos_lluvia); ?>; console.log( " cargaDatos : " ); console.log(cargaDatos); var datosFinales = google.visualization.arrayToDataTable(cargaDatos);
et comme ça ? Tu vois quelque chose ou non ? Tu n'as pas messages d'erreurs dans la console ?
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
38396
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 janvier 2025
23 juin 2017 à 10:53
23 juin 2017 à 10:53
C est pareil.
Excuse moi parceque tu me l'avait dit dans le mesage precedent et je ne l'avait pas regardé.
En faisant F12, j ai cela:
jsapi: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.
new3.php:52 Array(6)
new3.php:53 cargaDatos :
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:54)
Excuse moi parceque tu me l'avait dit dans le mesage precedent et je ne l'avait pas regardé.
En faisant F12, j ai cela:
jsapi: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.
new3.php:52 Array(6)
new3.php:53 cargaDatos :
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:54)
jordane45
Messages postés
38396
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 janvier 2025
4 732
23 juin 2017 à 16:38
23 juin 2017 à 16:38
Bonjour,
J'ai trouvé le souci je pense....
Tu as placé l'initialisation de ta variable dans ta fonction ....
Essayes de la placer en dehors...
Peux-tu également t'assurer que ton fichier est bien encodé en utf8 sans bom ( voir chapitre 1 : https://forums.commentcamarche.net/forum/affich-37584944-php-html-caracteres-accentues-et-l-utf8 )
J'ai trouvé le souci je pense....
Tu as placé l'initialisation de ta variable dans ta fonction ....
Essayes de la placer en dehors...
<?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 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>
Peux-tu également t'assurer que ton fichier est bien encodé en utf8 sans bom ( voir chapitre 1 : https://forums.commentcamarche.net/forum/affich-37584944-php-html-caracteres-accentues-et-l-utf8 )
jordane45
Messages postés
38396
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 janvier 2025
4 732
23 juin 2017 à 16:42
23 juin 2017 à 16:42
Sinon tu peux aussi essayer avec cette syntaxe
var cargaDatos ="<?php print(json_encode($datos_lluvia)); ?>";
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
38396
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 janvier 2025
23 juin 2017 à 18:27
23 juin 2017 à 18:27
Merci pour ton aide.
J'ai trouvé le souci je pense....
Tu as placé l'initialisation de ta variable dans ta fonction ....
Essayes de la placer en dehors...
Cela ne change rien. même message en console.
Peux-tu également t'assurer que ton fichier est bien encodé en utf8 sans bom
Je te confirme que mon fichier est bien en utf8.
Sinon tu peux aussi essayer avec cette syntaxe
var cargaDatos ="<?php print(json_encode($datos_lluvia)); ?>";
Cela ne change rien. même message en console.
J'ai passé la journée a fiare des recherches et essais, mais en vain.
Aurais-tu une autre idée?
J'ai trouvé le souci je pense....
Tu as placé l'initialisation de ta variable dans ta fonction ....
Essayes de la placer en dehors...
Cela ne change rien. même message en console.
Peux-tu également t'assurer que ton fichier est bien encodé en utf8 sans bom
Je te confirme que mon fichier est bien en utf8.
Sinon tu peux aussi essayer avec cette syntaxe
var cargaDatos ="<?php print(json_encode($datos_lluvia)); ?>";
Cela ne change rien. même message en console.
J'ai passé la journée a fiare des recherches et essais, mais en vain.
Aurais-tu une autre idée?
jordane45
Messages postés
38396
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 janvier 2025
4 732
23 juin 2017 à 18:32
23 juin 2017 à 18:32
Première chose :
pourrais tu tester ce script et me dire ce que ça te donne ?
Deuxième chose .... place ton code javascript à la fin de ta page (avant le </body>) et non dans le head....
pourrais tu tester ce script et me dire ce que ça te donne ?
<?php $datos_lluvia = array(); foreach($R=1;$R<=10;$R++) { $datos_lluvia[] = $R * 10; } ?> <!doctype html> <html lang="<?=$langDefaut?>"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </head> <body> <script type="text/javascript"> var datos_lluvia = <?php echo json_encode($datos_lluvia); ?>; console.log("datos_lluvia :"); console.log(datos_lluvia); </script> </body> </html>
Deuxième chose .... place ton code javascript à la fin de ta page (avant le </body>) et non dans le head....
jordane45
Messages postés
38396
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 janvier 2025
4 732
>
jordane45
Messages postés
38396
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 janvier 2025
Modifié le 23 juin 2017 à 21:27
Modifié le 23 juin 2017 à 21:27
ah.. et puis... au lieu d'aller charger les librairies javascript sur le site de google... je te conseille de tes télécharger dans ton site et de les instancier directement...
donc au lieu d'avoir :
Tu place le contenus des scripts en "local" sur ton serveur.. et tu modifies les lignes de code pour pointer dessus
donc au lieu d'avoir :
<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>
Tu place le contenus des scripts en "local" sur ton serveur.. et tu modifies les lignes de code pour pointer dessus
<script src="chemin_vers_le_fichier/jquery.min.js" > </script> <!-- Load the AJAX API --> <script type="text/javascript" src="chemin_vers_le_fichier/jsapi" > </script>
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
38396
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 janvier 2025
23 juin 2017 à 18:46
23 juin 2017 à 18:46
premièrec chose
erreur en ligne 4
erreur en ligne 4