JPGARPH Erreur 25121
Fermé
mont_dani
Messages postés
232
Date d'inscription
mardi 6 juin 2017
Statut
Membre
Dernière intervention
7 mai 2024
-
6 juin 2017 à 08:22
mont_dani Messages postés 232 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 7 mai 2024 - 14 juin 2017 à 07:35
mont_dani Messages postés 232 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 7 mai 2024 - 14 juin 2017 à 07:35
A voir également:
- Uncaught domexception: failed to execute 'getrangeat' on 'selection': 0 is not a valid index.
- Erreur 0x80070643 - Accueil - Windows
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- Erreur 1001 outlook - Accueil - Bureautique
- Code erreur f3500-32 ✓ - Forum Bbox Bouygues
- Erreur g030 - Forum Bbox Bouygues
2 réponses
jordane45
Messages postés
38429
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 février 2025
4 735
Modifié le 6 juin 2017 à 10:04
Modifié le 6 juin 2017 à 10:04
Bonjour,
essayes ça :
NB: J'ai placé le maximum de PHP AVANT le HTML.
Cela rend le code plus lisible et plus facile à maintenir.
NB²: Tu avais des erreurs de balises HTML ( mal placées...)
NB3 : Vu que tu sembles utiliser le PDO, penses à activer la gestion des erreurs comme ceci : https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Cordialement,
Jordane
essayes ça :
<?php //Démarrage des sessions session_start (); //Affichage des erreurs PHP error_reporting(E_ALL); ini_set('display-errors','on'); // REQUIRE require_once ('jpgraph/src/jpgraph.php'); require_once ('jpgraph/src/jpgraph_line.php'); require_once ('connexion.php'); //Récupération PROPRE des variables AVANT de les utiliser $mes_opcion = !empty($_POST['mes']) ? $_POST['mes'] : (!empty($_SESSION['mes']) ? $_SESSION['mes'] : NULL); $_SESSION['mes'] = $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(); } $ydata = array(); if(!empty($row)){ //On parcours l'array foreach($row as $R) { $ydata[] = (float)$R['lluvia']; } }else{ echo " La requête n'a pas retournée de données.... "; } $req->closeCursor(); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" > <head> <meta http-equiv="Content-Type" content="text/html" /> <meta charset="UTF-8"> <link rel="stylesheet" href="general.css" type="text/css" media="screen"/> <link rel="stylesheet" href="print.css" type="text/css" media="print" /> <style type="text/css" media="all"> </style> </head> <body> <?php // Size of the overall graph $width=350; $height=250; // Create the graph and set a scale. // These two calls are always required $graph = new Graph($width,$height); $graph->SetScale('intlin'); $graph->SetShadow(); // Setup margin and titles $graph->SetMargin(40,20,20,40); $graph->title->Set('Calls per operator (June,July)'); $graph->subtitle->Set('(March 12, 2008)'); $graph->xaxis->title->Set('Operator'); $graph->yaxis->title->Set('# of calls'); $graph->yaxis->title->SetFont( FF_FONT1 , FS_BOLD ); $graph->xaxis->title->SetFont( FF_FONT1 , FS_BOLD ); // Create the first data series $lineplot=new LinePlot($ydata); $lineplot->SetWeight( 2 ); // Two pixel wide // Add the plot to the graph $graph->Add($lineplot); // Display the graph $graph->Stroke(); ?> </body> </html>
NB: J'ai placé le maximum de PHP AVANT le HTML.
Cela rend le code plus lisible et plus facile à maintenir.
NB²: Tu avais des erreurs de balises HTML ( mal placées...)
NB3 : Vu que tu sembles utiliser le PDO, penses à activer la gestion des erreurs comme ceci : https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Cordialement,
Jordane
jordane45
Messages postés
38429
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 février 2025
4 735
7 juin 2017 à 11:47
7 juin 2017 à 11:47
Bon..
déjà :
Tu as sûrement oublié d'initialiser l'index à 1.
Ensuite...
Oulaaaa !!!!
Qu'est-ce que tu fais ????
Que vient faire cette ligne ici :
Tu REMPLACES dans $ydata .. les données par les DATES ???
Non!!
Pour afficher les dates sur ton graphes .. c'est le $xdata qu'il faut remplir et non le ydata.
(le Ydata contient les VALEURS en Y ... et le Xdata... c'est l'absice (l'axe des X) )
Donc :
puis faudra donc faire un
Voir l'exemple ici :
https://jpgraph.net/download/manuals/chunkhtml/ch14s10.html
.
déjà :
print_r(array_values($ydata));
Array ( [0] => 10 [1] => 40 [2] => 5 [3] => 5 [4] => 20 [5] => 91 ) qui est parfaitement correct avec la BD.
Tu as sûrement oublié d'initialiser l'index à 1.
$index=1; foreach($row as $R) { $ydata[$index] = (float)$R['lluvia']; $index ++; }
Ensuite...
Dans
foreach($row as $R) {
$ydata[$index] = (float)$R['lluvia'];
$index ++;
}
j ai fait
foreach($row as $R) {
$ydata[$index] = (float)$R['lluvia'];
$ydata[$index] = (float)$R['fecha'];
$index ++;
}
Oulaaaa !!!!
Qu'est-ce que tu fais ????
Que vient faire cette ligne ici :
$ydata[$index] = (float)$R['fecha'];
Tu REMPLACES dans $ydata .. les données par les DATES ???
Non!!
Pour afficher les dates sur ton graphes .. c'est le $xdata qu'il faut remplir et non le ydata.
(le Ydata contient les VALEURS en Y ... et le Xdata... c'est l'absice (l'axe des X) )
Donc :
$ydata = array(); $xdata = array(); if(!empty($row)){ $index=1; foreach($row as $R) { $ydata[$index] = (float)$R['lluvia']; $xdata[$index] = $R['fecha']; $index ++; } }else{ echo " La requête n'a pas retournée de données.... "; exit(); }
puis faudra donc faire un
$lineplot = new LinePlot($data,$xdata);
Voir l'exemple ici :
https://jpgraph.net/download/manuals/chunkhtml/ch14s10.html
.
mont_dani
Messages postés
232
Date d'inscription
mardi 6 juin 2017
Statut
Membre
Dernière intervention
7 mai 2024
7 juin 2017 à 13:54
7 juin 2017 à 13:54
Jordane,
Tout d'abord excuse moi pour ce mélange que j'ai fait.
Bien sur, je suis d'accord avec toi pour mettre les dates sur l'axe x.
Pour le moment je doit arriver a ce que le graph reconnaisse la variable $ydata sans riem faire avec l'axe x, comme dans le modele.. Et ca , ca reste un mystère...
Tout d'abord excuse moi pour ce mélange que j'ai fait.
Bien sur, je suis d'accord avec toi pour mettre les dates sur l'axe x.
Pour le moment je doit arriver a ce que le graph reconnaisse la variable $ydata sans riem faire avec l'axe x, comme dans le modele.. Et ca , ca reste un mystère...
jordane45
Messages postés
38429
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 février 2025
4 735
>
mont_dani
Messages postés
232
Date d'inscription
mardi 6 juin 2017
Statut
Membre
Dernière intervention
7 mai 2024
7 juin 2017 à 13:56
7 juin 2017 à 13:56
juste pour être sûr .... ton fichier est bien en utf8 sans bom ?
Peux tu vérifier (en t'appuyant sur ça : https://forums.commentcamarche.net/forum/affich-37584944-php-html-caracteres-accentues-et-l-utf8#1-verifiez-l-encodage-des-fichiers )
Peux tu vérifier (en t'appuyant sur ça : https://forums.commentcamarche.net/forum/affich-37584944-php-html-caracteres-accentues-et-l-utf8#1-verifiez-l-encodage-des-fichiers )
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
38429
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 février 2025
7 juin 2017 à 14:35
7 juin 2017 à 14:35
Je te confirme mon fichier est bien en utf8 sans bom.
connexion.php
<?php
try{
$connexion =new PDO('mysql:host=localhost;
dbname=meteo_test_3; charset=utf8', 'root', '');
// Activation des erreurs PDO
$connexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH
$connexion->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
} catch(PDOException $e) {
die('Erreur : ' . $e->getMessage());
}
?>
connexion.php
<?php
try{
$connexion =new PDO('mysql:host=localhost;
dbname=meteo_test_3; charset=utf8', 'root', '');
// Activation des erreurs PDO
$connexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH
$connexion->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
} catch(PDOException $e) {
die('Erreur : ' . $e->getMessage());
}
?>
jordane45
Messages postés
38429
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 février 2025
4 735
>
mont_dani
Messages postés
232
Date d'inscription
mardi 6 juin 2017
Statut
Membre
Dernière intervention
7 mai 2024
7 juin 2017 à 14:54
7 juin 2017 à 14:54
Donc le fichier est en utf8.
La connexion à la bdd est en utf8 aussi
Ok.
On peut refaire un teste avec ce code ?
Si ça fonctionne... ça vient bien des données transmises par la bdd... et faudra qu'on trouve pourquoi.
Si ça ne fonctionne pas... c'est que ton appel au script n'est pas le bon.
La connexion à la bdd est en utf8 aussi
Ok.
On peut refaire un teste avec ce code ?
<?php //Démarrage des sessions session_start (); //Affichage des erreurs PHP error_reporting(E_ALL); ini_set('display-errors','on'); // REQUIRE require_once ('jpgraph/src/jpgraph.php'); require_once ('jpgraph/src/jpgraph_line.php'); require_once ('connexion.php'); //Récupération PROPRE des variables AVANT de les utiliser $mes_opcion = !empty($_POST['mes']) ? $_POST['mes'] : (!empty($_SESSION['mes']) ? $_SESSION['mes'] : NULL); $_SESSION['mes'] = $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(); } $ydata = array(); $xdata = array(); if(!empty($row)){ $index=1; foreach($row as $R) { $ydata[$index] = intval($R['lluvia']); $xdata[$index] = $R['fecha']; $index ++; } }else{ echo " La requête n'a pas retournée de données.... "; print_r($datas); exit(); } $req->closeCursor(); */ $ydata = array(11, 3, 8, 12, 5, 1, 9, 13, 5, 7); ?> <!DOCTYPE> <html> <head> <meta http-equiv="Content-Type" content="text/html" /> <meta charset="UTF-8"> <link rel="stylesheet" href="general.css" type="text/css" media="screen"/> <link rel="stylesheet" href="print.css" type="text/css" media="print" /> <style type="text/css" media="all"> </style> </head> <body> <div id="graphique"> <?php // Size of the overall graph $width=350; $height=250; // Create the graph and set a scale. // These two calls are always required $graph = new Graph($width,$height); $graph->SetScale('intlin'); $graph->SetShadow(); $graph->img->SetAntiAliasing(); // Setup margin and titles $graph->SetMargin(40,20,20,40); $graph->title->Set('Calls per operator (June,July)'); $graph->subtitle->Set('(March 12, 2008)'); $graph->xaxis->title->Set('Operator'); $graph->yaxis->title->Set('# of calls'); $graph->yaxis->title->SetFont( FF_FONT1 , FS_BOLD ); $graph->xaxis->title->SetFont( FF_FONT1 , FS_BOLD ); // Create the first data series $lineplot=new LinePlot($ydata); $lineplot->SetWeight(2); // Two pixel wide // Add the plot to the graph $graph->Add($lineplot); // Display the graph $graph->Stroke(); ?> </div> </body> </html>
Si ça fonctionne... ça vient bien des données transmises par la bdd... et faudra qu'on trouve pourquoi.
Si ça ne fonctionne pas... c'est que ton appel au script n'est pas le bon.
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
38429
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 février 2025
7 juin 2017 à 15:08
7 juin 2017 à 15:08
Désolé cela ne fonctionne pas.
6 juin 2017 à 09:47
Merci pour ta réponse et les modif du script.
La gestion des erreurs etait activée dans connexion.php.
Je continue avec le même probléme. (carré blanc au milieu de l'écran.)
6 juin 2017 à 10:05
Regarde si tu n'y vois pas une erreur php
Modifié le 6 juin 2017 à 10:48
si je bloque l'affichage de la ligne ydata (Create the first data series)
j'ai le code suivant:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<meta http-equiv="Content-Type" content="text/html" />
<meta charset="UTF-8">
<link rel="stylesheet" href="general.css" type="text/css" media="screen"/>
<link rel="stylesheet" href="print.css" type="text/css" media="print" />
<style type="text/css" media="all">
</style>
</head>
<body>
JpGraph Error: 25026 Can't draw unspecified Y-scale. You have either: 1. Specified an Y axis for auto scaling but have not supplied any plots. 2. Specified a scale manually but have forgot to specify the tick steps
J ai fait un "inspecter" de la page avec le carre blanc et voici le resultat:
Dans HTML - console j ai erreur suivante
Uncaught DOMException: Failed to execute 'getRangeAt' on 'Selection': 0 is not a valid index.
at file:///C:/Users/PC%20Lenovo/AppData/Local/Google/Chrome/User%20Data/Default/Extensions/fbhgckgfljgjkkfngcoeajbgndkeoaaj/1.0_0/script.js:9:26
2jp_graph.php:1 Error in event handler for (unknown): TypeError: Cannot read property 'farewell' of undefined
6 juin 2017 à 13:06
Change juste ça pour voir et re-teste
6 juin 2017 à 14:21