Problème incompréhensible avec jpgraph, php, MySQL.
Répondre à la discussion
Affichage des résultats 1 à 17 sur 17

Problème incompréhensible avec jpgraph, php, MySQL.



  1. #1
    Jeryko

    Problème incompréhensible avec jpgraph, php, MySQL.


    ------

    Bonjour à tous,


    J'utilise (débutant jpgraph) jpgraph-4.3.4., php-5, EasyPHP-DevServer-14.1VC9, MySQL,
    Tout fonctionne bien pour construire une courbe température en fonction d'une date+heure (100 mesures/24h)
    Du classique:
    Dans ma bdd je vais chercher les 2 données, date et température.
    - la boucle while me crée 2 tableaux array [] date (mise au format FR) et température (float)
    - jpgraph affiche la courbe.
    Tout fonctionne bien en local mais avec les paramètres de ma bdd mis en "dur".
    exemple : define('USER', 'root'); ou $user = 'root';

    Ce qui ne fonctionne pas :
    Le simple fait d'ajouter (sans même l'utiliser) include_once './protegepw/config.loc.php';
    qui permet d'aller chercher les coordonnées de ma bdd provoque une erreur pgraph.! ???

    L’image « [h t t p://127.0.0.1/...../jpgraph_courbe_5.php » ne peut être affichée car elle contient des erreurs.
    alors que les 2 tableaux créés array [] date et température sont corrects !

    Si j'utilise l'include, en modifiant : @mysql_connect, @mysql_select_db
    les 2 tableaux array [] date et température sont corrects (en test d'affichage) mais j'ai toujours l'erreur . ? !

    Il est pourtant normal de ne pas mettre les coordonnées de la bdd dans le fichier de création de courbe !
    Quelqu'un peut-il expliquer le phénomène et surtout comment y remédier si cela n'est pas normal ?

    En prime mais hors sujet :
    Comment faire (un lien ) pour obtenir des précisions sur le N° ou le type d'erreur pour jpgraph ?

    Merci d'avance.

    -----
    Images attachées Images attachées  
    Dernière modification par Jeryko ; 27/11/2020 à 12h02.
    Problème résolu : N'oubliez pas de préciser ce que vous avez trouvé et les mesures prises. Merci

  2. #2
    umfred

    Re : Problème incompréhensible avec jpgraph, php, MySQL.

    un problème similaire (https://openclassrooms.com/forum/suj...es-erreu-29179) a été résolu en changeant le type d'encodage du/des fichier(s) ANSI -> UTF-8

  3. #3
    Jeryko

    Re : Problème incompréhensible avec jpgraph, php, MySQL.

    Bonsoir umfred,

    Merci pour cette réponse rapide.

    Quelque chose me chagrine dans ton message # 2 de 14h04

    Débutant, je ne mets pas l'image dans un fichier. (à quoi cela sert-il ?)
    Elle s'affiche directement, avec mon fichier jpgraph_courbe_4.php qui fonctionne. (coordonnées de ma bdd en "dur")
    (suivant des nombreux exemples trouvés sur la toile)

    Je m'étais d'ailleurs posé la question en parcourant de la documentation.
    Je n'ai donc pas de fonction header() sur jpgraph_courbe_4.php, ni jpgraph_courbe_5.php.

    Il faut donc que j'approfondisse cette affaire de fonction. header()
    Où la mettre cette fonction ?
    car un fichier fonctionne, et l'autre ne fonctionne pas alors qu'ils sont strictement identiques, et utilisés
    dans le même contexte, hormis l'emplacement des coordonnées de ma bdd.
    (aucun rapport avec des problèmes de mise en page, de type de codage, de type de fichier, ....)

    C'est quand même dur à avaler !

    PS, je ne pense pas que le lien en question concerne mon cas ?
    Dernière modification par Jeryko ; 27/11/2020 à 16h25.
    Problème résolu : N'oubliez pas de préciser ce que vous avez trouvé et les mesures prises. Merci

  4. #4
    umfred

    Re : Problème incompréhensible avec jpgraph, php, MySQL.

    l'image dans un fichier ça peut servir à l'enregistrer quelque part (dans le lien, la personne voulait afficher une image, donc un fichier image sur sa page)
    le header, c'est pour l'entête HTTP de la page https://www.php.net/manual/fr/function.header.php , et donc comme son l'indique, il vaut mieux le mettre au début
    ces 2 points ne concernaient pas ton problème.
    Ce qui était important c'est l'encodage des fichiers: un de ces fichiers était encodé en UTF-8 et le convertissant en ANSI (via Notepad++ et le menu Encodage -> Convertir en AINSI), ça a résolu son problème.
    Peut-être peux tu mettre le code de tes fichiers, la partie qui diffère principalement (en anonymisant ce qui pourrait être sensible, par exemple le nom de ta base, tu peux la remplacer par "mabase" par exemple)

  5. A voir en vidéo sur Futura
  6. #5
    Jeryko

    Re : Problème incompréhensible avec jpgraph, php, MySQL.

    Bonsoir,

    Voici le fichier !
    entre quotes et en fichier joint. (PHP renommmé en txt)

    Code PHP:
     <?php

    /*
    Ce fichier de travail en l'état fonctionne bien. (avec la bdd qui va bien évidemment)
    fichier mis sur la racine du site.

    Il suffit de mettre un fichier de config ailleurs, exemple pour moi ./protegepw/config.loc.php
    et ca ne fonctionne plus :
    a) sans utiliser le fichier de confiquration
    b) en l'utilisant (avec les midifications qui en découlent sur @mysql_connect, @mysql_select_db)

    Fichier de config non fourni ici qui donne :
    $host = '127.0.0.1'; 
    $user = 'root'; 
    $pass = '';  
    $bdd = 'bdd'; 

    */

    // require_once "./protegepw/config.loc.php";  // fichier non fourni pour l'exemple

    require_once("./src/jpgraph.php");
    require_once(
    "./src/jpgraph_line.php");  // = courbe

    define('MYSQL_HOST''127.0.0.1');
    define('MYSQL_USER''root');
    define('MYSQL_PASS''');
    define('MYSQL_DATABASE''bdd'); // la base de données 
    $table "domotique";             // nom de la table


    // **********************************************
    // Extraction des données dans la base de données
    // *************************************************

    // on crée la requête SQL 
    $sql "SELECT date, temperature FROM $table";

    $mysqlCnx = @mysql_connect(MYSQL_HOSTMYSQL_USERMYSQL_PASS) or die('Pb de connexion mysql');
    @
    mysql_select_db(MYSQL_DATABASE) or die('Pb de selection de la base');
    $mysqlQuery = @mysql_query($sql$mysqlCnx) or die('Pb de requete');

    $nombre 0;
    while (
    $row_mois mysql_fetch_array($mysqlQuery,  MYSQL_ASSOC)) {  //  MYSQL_ASSOC ???
      
    $nombre $nombre 1;
      if ((
    $nombre 5) == 1) {  
      
    $date date"d/m/y  H:i:s ",  strtotime($row_mois['date'])); // on convertit la date dans un format français
    }else{ 
     
    $date '';
      }
      
        
    $tempera $row_mois['temperature']; 

        
    $moisFr[] = $date
        
    $donnees[] = $tempera ;
            
    // test d'affichage sans la courbe (fonctionne)
    // provoque erreur echo "  ".$date.' temperature = '.$row_mois['temperature'].'</br>';
    }

    mysql_close();                     //  On ferme la connexion à la base de données //-->
    // provoque erreur si pas de goto   echo "  ".' temperature = '.$tempera.'</br>';
    // provoque erreur si pas de goto    echo "  ".$moisFr[5].' et '.$donnees[5].'</br>'; // pour un test
    // provoque erreur si pas de goto    printf('<pre>%s</pre>', print_r($moisFr,1));
    // provoque erreur si pas de goto    printf('<pre>%s</pre>', print_r($donnees,1));

    //goto fin;  // pour ne tester que la bdd

    // Création du conteneur
    $graphe = new Graph(1000,500);               // ($largeur, $hauteur)

    // Fixer les marges
    $graphe->img->SetMargin(70,10,10,140);       // G, D, H, B

    // Désactiver le cadre autour du graphique   //sans effet ?
     
    $graphe->SetFrame(false);

    // Lissage sur fond blanc (évite la pixellisation)    //sans effet ?
    $graphe->img->SetAntiAliasing("white");

    // Valeurs min et max seront determinees automatiquement
    $graphe->setScale("textlin");

    // Creation de la courbe
    $courbe = new LinePlot($donnees);            // courbe des températures

    // Chaque point de la courbe ****
    // Type de point
    $courbe->mark->SetType(MARK_FILLEDCIRCLE);
    // Couleur de remplissage du cercle
    $courbe->mark->SetFillColor("green");
    // Taille des cercles, diamètre
    $courbe->mark->SetWidth(3);

    // Paramètrage des axes
    $graphe->xaxis->SetTickLabels($moisFr); 

    // Ajout de la courbe au graphique
    $graphe->add($courbe);       // courbe

    $graphe->xaxis->SetLabelAngle(90);          // abcisse en 90° vertical

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

    // Ajout du titre du graphique
    $graphe->title->set("Températures extérieures à PERSAN");

    // Titre pour l'axe horizontal(axe x) et vertical (axe y)
    $graphe->xaxis->title->SetMargin(110);
    $graphe->xaxis->title->Set("Géryko");
    $graphe->yaxis->title->Set("température en °C");
    $graphe->yaxis->title->SetMargin(15);
    $graphe->xaxis->title->SetFont(FF_ARIAL,FS_BOLD);
    $graphe->yaxis->title->SetFont(FF_ARIAL,FS_BOLD);

    // Affichage du graphique
    $graphe->stroke();

     
    fin:
    ?>
    Fichiers attachés Fichiers attachés
    Dernière modification par JPL ; 27/11/2020 à 21h28. Motif: Balise Quote transformée en PHP
    Problème résolu : N'oubliez pas de préciser ce que vous avez trouvé et les mesures prises. Merci

  7. #6
    Jeryko

    Re : Problème incompréhensible avec jpgraph, php, MySQL.

    Bonsoir à tous,

    J'ai presque résolu mon problème à 95%.

    1) J'ai mis mon fichier "jpgraph_courbe_5.php" ainsi que le dossier "SRC' (allégé) sur mon site de FREE

    J'avais les 3 erreurs suivantes :
    Warning: file_exists(): open_basedir restriction in effect. File(/usr/share/fonts/truetype/arialbd.ttf) is not within the allowed path(s): (/var/www/sda/3/4/geryko) in /var/www/sda/3/4/geryko /src/jpgraph_ttf.inc.php on line 505

    Warning: file_exists(): open_basedir restriction in effect. File(/usr/share/fonts/truetype/arialbd.ttf) is not within the allowed path(s): (/var/www/sda/3/4/geryko) in /var/www/sda/3/4/geryko/src/jpgraph_ttf.inc.php on line 510

    Catchable fatal error: Argument 1 passed to JpGraphException::defaultHandl er() must be an instance of Throwable,
    instance of JpGraphExceptionL given in /var/www/sda/3/4/geryko/src/jpgraph_errhandler.inc.php on line 158

    2) j'ai supprimer les 3 lignes 104, 114 et 115 "jpgraph_courbe_4b.php" (voir fichier ci-dessus) qui "parlaient" de ARIAL

    3) oh surprise ça fonctionne sur FREE. Mais ça ne fonctionne toujours pas en "local" sur EasyPHP.
    ( Dans $requete = "SELECT * FROM $table ORDER BY date $ordre "; // ORDER BY date $ordre a été ajouté)

    Petits problèmes à traiter :
    - Je laisse tomber Arial.
    - J'essaie de remettre en gras (Bold) les titres. à voir ??? pas réussi pour l'instant
    - les dates chevauchent les températures négatives. à voir , ??? pas réussi pour l'instant

    (solution très moche pour l'instant ; ajouter des espaces après la date-heure) si quelqu'un a un solution, je prends

    Voir le résultat encourageant : http://geryko.free.fr/jpgraph_courbe_5.php
    Dernière modification par Jeryko ; 30/11/2020 à 09h48.
    Problème résolu : N'oubliez pas de préciser ce que vous avez trouvé et les mesures prises. Merci

  8. #7
    umfred

    Re : Problème incompréhensible avec jpgraph, php, MySQL.

    J'ai vu que tu avais avancé sur phpfrance.
    tu as fait un test basique consistant à afficher tes variables $host, $user, $pass, $bdd juste après le require_once "./protegepw/config.loc.php"; (quand il est mis) et aussi juste avant des les utiliser pour voir si elles sont visibles par ton code et ne sont pas modifier entre temps

  9. #8
    Jeryko

    Re : Problème incompréhensible avec jpgraph, php, MySQL.

    Bonjour umfred,

    Oui d'accord. J'essaie de tous les côtés pour augmenter mes chances pour obtenir de l'aide.

    Mais je ne vois pas où tu veux en venir ?
    Que dois-je faire pour améliorer mon code ?

    Lorsque "require_once "./protegepw/config.loc.php";" est mis, je sais qu'il fonctionne car les tests
    "echo" ou printf('<pre>%s</pre>', print_r($donnees,1)); fonctionnent bien.
    Et d'auilleurs cela fonctionne sur FREE.

    J'ai déjà testé "if file_exists" sans succès.
    Dernière modification par Jeryko ; 30/11/2020 à 12h09.
    Problème résolu : N'oubliez pas de préciser ce que vous avez trouvé et les mesures prises. Merci

  10. #9
    umfred

    Re : Problème incompréhensible avec jpgraph, php, MySQL.

    pour Arial, tu utilises la fonction SetFont() qui attend 3 paramètres, la fonte, le style, et la taille; tu n'indiquais pas la taille pour 2 des appels que tu fais (pour moi, à faire avant d'écrire le texte) https://jpgraph.net/download/manuals...OPERTY_SETFONT

    pour file_exists() de quelle façon tu l'utilisais, et surtout pourquoi faire ?? vu que tu sais que tu récupères les variables de config.loc.php
    les erreurs disent que tu essais de tester des fichiers qui sont dans des répertoires auxquels tu n'as pas le droit d'accéder https://www.php.net/manual/fr/ini.co...i.open-basedir

    En local, tu utilises le même type de base de données ? quel est le message d'erreur

  11. #10
    Jeryko

    Re : Problème incompréhensible avec jpgraph, php, MySQL.

    Bonjour,

    J'essaie de répondre du mieux possible.

    1) pour Arial, tu utilises la fonction SetFont() .......
    Dans de nombreux exemple vus , il n'y avait que 2 paramètres. J'ai fait la même chose.
    Lorsque la taille me convenait pas, je l'ai fait une fois, en ajoutant la taille : 11 (voir fichier PHP déjà posté)
    et cela fonctionnait en local, sur mon serveur EasyPHP.

    2) pour file_exists() de quelle façon tu l'utilisais, et surtout pourquoi faire ??
    J'avais lu ça dans un forum qui proposait de vérifier l'existance du fichier avant l' include .
    If (file_exists(klklklklkl) {include lklklklkl}
    Mais j'étais sûr que l'include fonctionnait puisque les 2 tableaux array [] étaient corrects.

    3) Oui, en local EasyPHP j'ai la même base que sur FREE ( phpinfo())
    En local : Client API version mysqlnd 5.0.10 - 20111026 -
    Sur FREE : Client API version mysqlnd 5.0.11-dev - 20120503

    Sur FREE je n'ai plus d'erreur.Voir la fin du post #6
    En local, toujours la même erreur signalée au post # 1
    Dernière modification par Jeryko ; 30/11/2020 à 15h59.
    Problème résolu : N'oubliez pas de préciser ce que vous avez trouvé et les mesures prises. Merci

  12. #11
    umfred

    Re : Problème incompréhensible avec jpgraph, php, MySQL.

    rajoute peut-être une balise img autour de ton code php comme sur le lien que tu as fourni
    Code HTML:
    <html style="height: 100%;">
    <head>
        <meta name="viewport" content="width=device-width, minimum-scale=0.1">
        <title>jpgraph_courbe_5.php (1000×500)</title>
    </head>
    <body style="margin: 0px; background: #0e0e0e; height: 100%">
        <img style="-webkit-user-select: none;margin: auto;" src="http://geryko.free.fr/jpgraph_courbe_5.php">
    </body>
    </html>

  13. #12
    Jeryko

    Re : Problème incompréhensible avec jpgraph, php, MySQL.

    Bonsoir umfred,

    1) Je rappelle que sous FREE je n'ai aucune erreur. http://geryko.free.fr/jpgraph_courbe_5.php

    2) je viens de tester le code html que tu m'as gentiment remis. (légèrement adapté pour mon fichier en local)
    Résultat :
    En local, même écran noir qu'au au post # 1 mais plus aucun texte d'erreur.
    Seulement une petite icône d'image de courbe (0,5cm x 0,5cm) en haut à gauche.

    3) Le principal est que cela fonctionne sur mon site.
    Reste à voir le problème de chevauchement sur l'axe d'abscisse qui m'inquiète.

    4) Si tu le souhaites, je peux encore faire quelques tests.
    On ne va rester sur ce problème jusqu'à noël ?
    ça me dépasse complètement.
    Problème résolu : N'oubliez pas de préciser ce que vous avez trouvé et les mesures prises. Merci

  14. #13
    Jeryko

    Re : Problème incompréhensible avec jpgraph, php, MySQL.

    Bonjour,

    Problème que je voudrais régler mais pour l'instant, je n'y arrive pas malgré de nombreux essais.

    Les étiquettes date et heure sont positionnées par rapport à l'ordonnée 0° C
    Donc si la température est négative, les étiquettes date et heure recouvrent la zone de la courbe.

    Je peux augmenter la marge (xaxis->SetLabelMargin) mais ça ne fait que décaler le problème.
    Si je paramètre pour -1°C, pour -5°C le problème va se représenter.

    Il faudrait que l'axe de référence ne soit pas le 0°C mais le bord inférieur de la zone de courbe.

    Y a t'il une possibilité ?
    Voir https://jpgraph.net/download/manuals/classref/ (Je ne sais quasiment pas lire l'anglais).
    Je n'ai pas trouvé. Même en faisant des traductions.
    Problème résolu : N'oubliez pas de préciser ce que vous avez trouvé et les mesures prises. Merci

  15. #14
    umfred

    Re : Problème incompréhensible avec jpgraph, php, MySQL.

    ça serait plutôt $graphe->xaxis->SetTextTickInterval($aStep, $aStart) où tu indiques en 1er l'intervalle entre 2 marques et en 2nd la marque du début
    pour déplacer l'axe X, $graphe->xaxis->SetPos(-1); pour positionner l'axe X sur Y=-1 (ou utiliser 'min' pour mettre automatiquement sur le minimum de Y

  16. #15
    Jeryko

    Re : Problème incompréhensible avec jpgraph, php, MySQL.

    OK merci,

    Je vais essayer ça cet après midi.

    http://geryko.free.fr/jpgraph_courbe_5.php
    A+
    Problème résolu : N'oubliez pas de préciser ce que vous avez trouvé et les mesures prises. Merci

  17. #16
    Jeryko

    Re : Problème incompréhensible avec jpgraph, php, MySQL.

    suite

    Sur ton message #14:

    Le 2ème paragraphe répond bien à ma question. C'est parfait.

    Sur le 1er paragraphe, je n'ai pas compris mais comme le 2ème me convient, j'en reste là pour l'instant.

    Super !

    Je vais encore essayer de "jouer" un peu avec les couleurs, ajouter du texte, ajouter une courbe ?, ...
    Si quelqu'un veut le ficher, je peux le poster.
    Problème résolu : N'oubliez pas de préciser ce que vous avez trouvé et les mesures prises. Merci

  18. #17
    Jeryko

    Re : Problème incompréhensible avec jpgraph, php, MySQL.

    Bonjour à tous,

    Je remercie particulièrement umfred pour son aide.
    Sans maitriser complètement jpgraph j'ai maintenant les bases pour évoluer.

    Considérons que le sujet est [RESOLU], même si l'explication du non fonctionnent en local, sous EasyPHP n'est pas trouvée.
    Dommage.
    Cordialement
    Problème résolu : N'oubliez pas de préciser ce que vous avez trouvé et les mesures prises. Merci

Discussions similaires

  1. [PHP] & [JPGRAPH] Quelques difficultés avec jpgraph et de nombreuses barres cumulées
    Par Pollux32 dans le forum Programmation et langages, Algorithmique
    Réponses: 8
    Dernier message: 24/10/2020, 07h33
  2. probleme avec un mysql
    Par soso590230 dans le forum Programmation et langages, Algorithmique
    Réponses: 9
    Dernier message: 30/04/2015, 08h03
  3. Page blanche avec MySql
    Par idekir dans le forum Internet - Réseau - Sécurité générale
    Réponses: 4
    Dernier message: 23/03/2014, 13h27
  4. test avec PHP MySQL
    Par SunnySky dans le forum Internet - Réseau - Sécurité générale
    Réponses: 2
    Dernier message: 18/02/2007, 02h18
  5. Problème incompréhensible avec lecteur de disquette
    Par invite762f942f dans le forum Matériel - Hardware
    Réponses: 6
    Dernier message: 03/01/2006, 20h57