PHP 7.2 et JPGraph 4.2 affichage graph

Rechercher
Boutique en ligne, solution e-commerce, script PHP et PERL : RAYNETTE

PHP 7.2 et JPGraph 4.2 affichage graph

Par papy71  -  21 reponses  -  Le 22/05/2018 13:52  -  Editer  - 

Bonjour,
Je viens auprès de vous pour un problème d'affichage d'un Graphique.
Ce graphique s'affiche avec php 5.4 et JPGraph 4.2 sous Vista en local.
Aujourd'hui, je suis sous Windows 10 , chez un hébergeur et j'ai repris ce programme pour passer de MySQL en MySQLi.
Mon problème est le suivant, j'ai une page noir au lieu d'un histogramme avec le message suivant:
L'image "http://*****" ne peut être affichée car elle contient des erreurs.

j'ai bien le résultat de ma requête comme sous Vista...

Mais, faut-il configurer quelque chose sur le site de l'hébergeur ? dans Windows ? ou encore écrire du code en début de ma page d'affichage de mon graphique?

Je débute depuis 3 mois en PHP, en suivant des cours sur le web, et j'ai 70 ans.
Merci d'avance pour votre aide ou conseils.
Cordialement.

Code de ce graphique:

    <?php //Graphique lié avec table releve   

    //  Pour réaliser l'histo d'une table,  production PV sur un mois....  

        include ("connexion1.php");   
        require_once ('src/jpgraph.php');  
        require_once ('src/jpgraph_line.php');  
        require_once ('src/jpgraph_bar.php');   


        $Date = array('Date');  
        $PV  = arrau ('PV');  

     // requête  
        $resultat = mysqli_query($bdd, 'SELECT Date, PV FROM annuelle LIMIT 1,31');  
        while($donnees = mysqli_fetch_assoc($resultat))  
      {  
        $tableau[$donnees['Date']-1] = $donnees['Date'];  
        $tableau[$donnees['PV']-1] = $donnees['PV'];  
      }  

    // Contrôler des valeurs de la requête...  
        printf('<pre>%s</pre>', print_r($tableau, $donnees['Date']));  
        //Exit;   

    // Création du conteneur  

        $graph = new Graph(1200,650);  

    // Fixer les marges  
        $graph->img->SetMargin(50,20,50,50);      

    // Lissage sur fond blanc (évite la pixellisation)  
        $graph->img->SetAntiAliasing("white");  

    // A détailler  
        $graph->SetScale("textlin");  

    // Ajouter une ombre  
        $graph->SetShadow(5);  

    // Ajouter le titre du graphique  
        $graph->title->Set("Production des PV");  

    // Afficher la grille de l'axe des ordonnées  
        $graph->ygrid->Show(1);  

    //Fixer la couleur de l'axe (bleu avec transparence : @0.7)  
        $graph->ygrid->SetColor('blue@0.7');  

    // Des tirets pour les lignes  
        $graph->ygrid->SetLineStyle('dashed');  

    // Afficher la grille de l'axe des ordonnées  
        $graph->ygrid->Show(1);  

    // Fixer la couleur de l'axe (bleu avec transparence : @0.7)  
        $graph->ygrid->SetColor('blue@0.7');  

    // Des tirets pour les lignes  
        $graph->ygrid->SetLineStyle('dashed');  

    // Afficher la grille de l'axe des abscisses  
        $graph->xgrid->Show();  

    // Fixer la couleur de l'axe (rouge avec transparence : @0.7)  
        $graph->xgrid->SetColor('red@0.9');  

    // Des tirets pour les lignes  
        $graph->xgrid->SetLineStyle('dashed');  

    // Apparence de la police  
        $graph->title->SetFont(FF_ARIAL,FS_BOLD,9);  

    // Créer une courbes  
        $histo = new BarPlot($tableau, $donnees);  

    // Afficher les valeurs pour chaque point  
        $histo->value->Show();  

    // Valeurs: Apparence de la police  
        $histo->value->SetFont(FF_ARIAL,FS_NORMAL,9);  
        $histo->value->SetFormat('%d');  
        $histo->value->SetColor("red");  

    // Couleur de la courbe  
        $histo->SetColor("red");  
        $histo->SetCenter();  

    // Paramétrage des axes  
        $graph->xaxis->title->Set("Jours");  
        $graph->yaxis->title->Set("Watts");  
        $graph->yaxis->title->SetFont(FF_FONT2,FS_BOLD);  
        $graph->xaxis->title->SetFont(FF_FONT2,FS_BOLD);  
        $graph->xaxis->SetTickLabels($moisFr);  

    // Ajouter la courbe au conteneur  
        $graph->Add($histo);  


        $graph->Stroke();  
        mysqli_free_result($resultat);  

    ?>
 

Réponses apportées à cette discussion

Par Cyrano  -  Le 24/05/2018 00:49  -  Haut de page  - 

Bonsoir Papy71,
il faudrait tâcher de voir quelles sont les erreurs en question dans le fichier, et pour ça, il faudrait l'ouvrir avec un éditeur de texte du style Notepad++ : Ce sera bien entendu illisible, comme toute image qu'on essaye d'ouvrir autrement qu'avec un navigateur, sauf des erreur PHP qui devraient être inscrites en clair.
À partir de là on devrait pouvoir avancer beaucoup plus efficacement.

 
Par papy71  -  Le 24/05/2018 16:06  -  Haut de page  - 

Bonjour Cyrano.

Merci de prendre mon post en considération afin de m'aider.

Je ne vois pas comment ouvrir mon image ( ecran noir, même pas le carré avec la croix ).

Voici le lien provisoire.
http://pv-solaire.alwaysdata.net/histo1.php

Merci pour votre aide.

Cdt.

 
Par Cyrano  -  Le 24/05/2018 16:31  -  Haut de page  - 

s'il y a un carré noir, c'est déjà ça : clic-droit dessus, enregistrer l'image sous => et une fois enregistrée, aller la chercher dans l'explorateur, clic-droit dessus et [Ouvrir Avec] => sélectionner un éditeur de texte type Notepad++

 
Par papy71  -  Le 24/05/2018 16:38  -  Haut de page  - 

Je ne vois pas de carré nul part. l'ecran est tout noir avec en haut centré la phrase ci dessus cité.

vous devez voir la même chose avec mon lien.

merci d'avance

 
Par papy71  -  Le 26/05/2018 19:34  -  Haut de page  - 

Je viens de charger un modèle simple de 3 lignes, c'est bon, je vois le graph.

Mais dès que je place la ligne suivante de connexion en début de programme;

require_once ("connexion.php");

j'ai de suite le message d'erreur de mon post.

Dans le fichier connexion, il y a simplement une connexion au serveur et le retour d'erreur si problème.

D'où peut bien venir ce problème ?

Merci du coup de main.

 
Par Cyrano  -  Le 26/05/2018 19:41  -  Haut de page  - 

Là j'ai un problème technique, pas d'ordinateur disponible sous la main pour visualiser tout ça.
À première vue, le problème est dans le fichier de connexion. Un truc à tester, ajouter un « die(); » juste après le require_once et voir s'il y a un autre message.

 
Par papy71  -  Le 26/05/2018 22:05  -  Haut de page  - 

J'ai fait la modif, j'ai eu une belle page blanche sans aucun motif ou écriture.

merci de me contacter par messagerie,si c'est possible.

 
Par Cyrano  -  Le 26/05/2018 22:13  -  Haut de page  - 

Ça, c'est pas normal. Il doit y avoir un problème avec cette connexion.
Mais là, même avec le code, je ne pourrais pas faire grand chose tant que mon ordinateur est hors service.

En attendant, tâchez de tester la connexion indépendamment des graphiques pour isoler le bogue.

 
Par papy71  -  Le 26/05/2018 22:35  -  Haut de page  - 

Ma connexion fonctionne bien, j'ai accès à ma base de données avec d'autres pages, avec la même connexion ( c'est une page seule que j'appelle depuis les autres pages ).

Mais depuis ma manip avec die, et un retour arrière sur Firefox, je ne peux plus avoir accès au site, donc pour le moment je vais regarder l'Arduino.

Je vais devoir contacter mon hébergeur, car même depuis ma connexion sur l'hébergeur, je vais partout sauf à l'accès de mon site. C'est pas important, car cela me servait que poue mettre au point ces pages de programmation.
Pour info:
le message est le suivant.

Forbidden

You don't have permission to access / on this server.

cdt.

 
Par Cyrano  -  Le 26/05/2018 22:50  -  Haut de page  - 

Ça sent les cookies avec des données corrompues. Si vous retirez le die(), et qu'ensuite vous virez les cookies de ce domaine, est-ce que ça revient à la normale ?

 
Par papy71  -  Le 26/05/2018 23:34  -  Haut de page  - 

Question
j'ai Windows que depuis 1 semaine, j'ai encore du mal à le prendre en main et pour le moment, je ne vois pas où trouve-ton la manière de supprimer les cookies. D'autre part j'ai vaguement survolé le cours sur les cookies, une occasion de reprendre ce chapitre demain matin. Je me croyais à l’abri de ce genre de problème car jamais rencontré depuis 1997 que je bidouille....

Une fois recharger la modif, je ne peux pas retourner sur le site.

Demain est un autre jour, j'ai de quoi m'occuper ...

Merci pour l'aide.

 
Par papy71  -  Le 28/05/2018 11:46  -  Haut de page  - 

Bonjour Cyrano,

j'ai de nouveau mon site, rien a voir du coté programmation, grosse étourderie de ma part, j'ai nettoyé mon site et enlevé index.html car je travaillais sur une sauvegarde index1.html.

En tout cas avec le "die" j'avais une page toute blanche.

mon fichier connection1.php:
<?php

$bdd = MySqli_connect("mysql-pv-solaire.alwaysdata.net", "", "", "pv-solaire") ;
if($bdd = mysqli_connect("mysql-pv-solaire.alwaysdata.net", "153874", "lionelan1950", "pv-solaire_recup"))
{
echo ' ... je suis connecté à PV-solaire.alwaysdata.net, c\'est mon site !...','<Br />'; // Si la connexion a réussi, rien ne se passe....
}
else // Mais si elle rate…
{
echo 'Erreur'; // On affiche un message d'erreur.
}

?>

il est tout simple....

 
Par Cyrano  -  Le 28/05/2018 11:58  -  Haut de page  - 

Je vois au moins une erreur dans le if : il y a un opérateur d'affectation en lieu of place d'un opérateur de comparaison ( « = » au lieu de « == ».

Alors techniquement ça devrait fonctionner, mais ce n'est pas propre.
Il faudrait écrire :

if(true == ($bdd = etc..))

Dans le else, il faudrait appeler mysqli_error au lieu d'un simple écho("erreur")

Normalement, un die() après ça ne devrait pas donner lieu à une e page blanche, un des deux messages devrait s'afficher.

 
Par papy71  -  Le 28/05/2018 16:44  -  Haut de page  - 

J'ai procédé comme vous me l'avez demandé, mais aucun changement, après remplacement de ' echo('erreur') essai = page toute noir et message début post. Avec version propre idem. Pour finir avec :

require_once die();

c'est encore une page blanche, aucun message dessus.

sans la connexion mes 3 lignes apparaisse bien dans le graph.

 
Par Cyrano  -  Le 28/05/2018 17:52  -  Haut de page  - 

J'ai un doute, montrez-moi exactement le bout de code tel que modifié avec le die()

 
Par papy71  -  Le 28/05/2018 21:41  -  Haut de page  - 

Voici comment c'est programmé

<?php 

require_once ('src/jpgraph.php');
require_once ('src/jpgraph_line.php');
require_once  die(); 


$datay1 = array(20,15,23,15);
$datay2 = array(12,9,42,8);
$datay3 = array(5,17,32,24);

// Setup the graph
$graph = new Graph(1300,550);
$graph->SetScale("textlin");

Du moins j'ai compris votre message ainsi....

 
Par Cyrano  -  Le 28/05/2018 21:45  -  Haut de page  - 

Ok, je me doutais d'un truc comme ça.

Il faut retirer le require_once qui précède le die, sinon, on a logiquement une erreur fatale à cause d'un appel ne pouvant aboutir.

 
Par papy71  -  Le 29/05/2018 11:15  -  Haut de page  - 

Bonjour Cyrano,

tjs une page blanche, require_once ou include cela donne le même résultat, Die () seul ne change rien.

Vraiment un cas particulier, et sur le web, je ne vois pas ce cas...

Sur mon vieux Vista avec php 5.4 et JPGraph 4.2 , l'exemple suivant marche bien sans et avec include ('connexion1.php').
Mais avec Windows 10, php 7.2 et JPGraph 4.2 Le graph s'affiche uniquement sans la ligne pour la connexion.

Je viens de voir que mon JPGraph est en 32bits et l'ordi en 64 bits, est-ce un problème ?

Encore merci pour l'aide.

Mon exemple pris sur le web. Tant que ce graph ne s'affichera pas, c'est pas la peine que j'aille récupérer une requête. La ligne pour se connecter doit laisser passer la suite du programme.
<?php

require_once ('src/jpgraph.php');
require_once ('src/jpgraph_line.php');
require_once ('connexion1.php');
//die(); 

$datay1 = array(20,15,23,15);
$datay2 = array(12,9,42,8);
$datay3 = array(5,17,32,24);

// Setup the graph
$graph = new Graph(1300,550);
$graph->SetScale("textlin");

$theme_class=new UniversalTheme;

$graph->SetTheme($theme_class);
$graph->img->SetAntiAliasing(false);
$graph->title->Set('Filled Y-grid');
$graph->SetBox(false);

$graph->SetMargin(40,20,36,63);

$graph->img->SetAntiAliasing();

$graph->yaxis->HideZeroLabel();
$graph->yaxis->HideLine(false);
$graph->yaxis->HideTicks(false,false);

$graph->xgrid->Show();
$graph->xgrid->SetLineStyle("solid");
$graph->xaxis->SetTickLabels(array('A','B','C','D'));
$graph->xgrid->SetColor('#E3E3E3');

// Create the first line
$p1 = new LinePlot($datay1);
$graph->Add($p1);
$p1->SetColor("#6495ED");
$p1->SetLegend('Line 1');

// Create the second line
$p2 = new LinePlot($datay2);
$graph->Add($p2);
$p2->SetColor("#B22222");
$p2->SetLegend('Line 2');

// Create the third line
$p3 = new LinePlot($datay3);
$graph->Add($p3);
$p3->SetColor("#FF1493");
$p3->SetLegend('Line 3');

$graph->legend->SetFrameWeight(1);

// Output line
$graph->Stroke();
?>

 
Par Cyrano  -  Le 29/05/2018 11:24  -  Haut de page  - 

J'attends un nouvel ordinateur, en attendant, je ne peux rien tester.

Je devrais redevenir opérationnel dans trois ou quatre jours. Désolé, pour l'instant, je ne peux pas faire mieux.

 
Par papy71  -  Le 29/05/2018 12:39  -  Haut de page  - 

Je ne suis pas pressé, j'ai encore d'autres problèmes, par exemple enregistrer la présence du soleil avec une carte Arduino et une led conçue pour aller jusqu'a 90 000 Lux. Ces données seront ensuite sur ma table dont je veux voir les graphs comme par exemple puissance des panneaux en fonction de la luminosité et de la température, ceci dans le but de prévoir le nettoyage des panneaux voir le changements de certain éléments.

Ici, j'ai 3 ordis sous la main, dont un que je dois configurer pour très mal voyant, avec des logiciels dont il va ma falloir prendre en main...

Mais je vous remercie pour l'aide.

 
Par Cyrano  -  Le 29/05/2018 12:46  -  Haut de page  - 

Pas de quoi

 

Ajouter une réponse à la discussion

Seuls les membres connectés sont autorisés à poster dans les forums !