IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[JpGraph] Image et croix rouge


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre à l'essai
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2012
    Messages : 20
    Points : 16
    Points
    16
    Par défaut [JpGraph] Image et croix rouge
    Salut à tous.

    Je viens de découvrir la librairie jpGraph, et j'ai déjà un problème avec.
    Au lieu d'afficher le graphique j'obtiens un croix rouge dans le navigateur (IE et Firefox) alors que je peux enregistrer l'image du graph en png et ça en local ou en réseau.

    Pourtant, j'ai bien suivi le tuto d'Eric POMMEREAU.

    D'abord, ma config, je travaille sur un LAN d'entreprise.
    Mon serveur WEB se compose de :
    - Windows 7
    - Apache 2.2
    - Php 5.2.17
    - Postgress
    - jpGraph dernière version téléchargée ce matin.

    Et je code avec Notepad++.


    Coté code, maintenant.
    J'ai 2 fichiers dans le même répertoire: index.html et graph.php

    j'appelle mon graphique dans index.html :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="graph.php" border="0" alt="Mon graphique.."/>
    et dans graph.php, si je mets j'obtiens ça

    alors que si dans graph.php je mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $graph->Stroke("test.png");
    l'image de mon graphique est bien créée.




    J'ai déjà parcouru le web pour trouver une soluce, j'ai essayé plein de truc, rien n'y fait.

    Précisions diverses :

    Dans mon fichier graph.php
    - Il n'y a pas de ligne vide ou de blanc, j'ai bien tout nettoyé, même les echo et les commentaires.
    - Il n'y a pas de code html non plus, rien que du php.
    - La partie récupération des données dans Postgres fonctionne parfaitement et me renvoie bien ce qu'elle doit (43 enregistrements).
    - Les include ont le bon chemin (la preuve, le graphique se créé bien sur le disque dur).

    Dans php le gd2 est bien activé.

    J'ai essayé d'ouvrir l'image avec Notepad++ (comme suggeré sur certains forums) pour voir si il n'y aurait pas un bout de code php qui trainerait dans l'image, mais là, je ne vois que du charabia incompréhensible.


    Voilà, si quelqu'un à une idée pour faire afficher ce satané graphique, je suis preneur.

    D'avance merci à tous.

  2. #2
    Membre éclairé Avatar de ypcman
    Homme Profil pro
    Retraité codeur !
    Inscrit en
    Janvier 2011
    Messages
    595
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité codeur !
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 595
    Points : 879
    Points
    879
    Par défaut
    Bonjour
    Sous Firefox, fais un clic droit sur la croix rouge puis 'afficher l'image'. Tu devrais avoir un message d'erreur que tu pourras poster ici
    Participez vous aussi !
    Message utile
    Discussion résolue

  3. #3
    Membre à l'essai
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2012
    Messages : 20
    Points : 16
    Points
    16
    Par défaut
    Bonjour.

    Sous firefox en utilisant l'appel du graph par le fichier index.html
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="graph.php" border="0" alt="Mon graphique.."/>
    J'obtiens aussi la croix rouge et un clic droit / Afficher l'image me donne
    l'image ne peut être affichée car elle contient des erreurs
    C'est bien pour ça que j'ai essayé d'ouvrir l'image avec un éditeur de texte pour voir ce qu'il y a dedans. Mais là, c'est pire que le grec ancien.




    Mais si j'affiche directement l'image créée sur le disque dur avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="graphike.png" border="0" alt="Mon graphique.."/>
    elle s'affiche bien avec IE et Firefox.

  4. #4
    Membre éclairé Avatar de ypcman
    Homme Profil pro
    Retraité codeur !
    Inscrit en
    Janvier 2011
    Messages
    595
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité codeur !
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 595
    Points : 879
    Points
    879
    Par défaut
    Ok. Poste le code source de graph.php afin qu'on puisse le tester.
    Participez vous aussi !
    Message utile
    Discussion résolue

  5. #5
    Membre à l'essai
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2012
    Messages : 20
    Points : 16
    Points
    16
    Par défaut
    Je fait ça demain, car je ne l'ai pas sous la main chez moi.

  6. #6
    Membre à l'essai
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2012
    Messages : 20
    Points : 16
    Points
    16
    Par défaut
    Bon, repris le boulot. Voici le code de ma page graph.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
     
    <?php
    // ********************************************************************
    // PARTIE 1 : Includes et initialisation des variables
    // ********************************************************************
     
    // Inclusion des librairies JpGraph
    include ("../jpgraph/jpgraph.php");
    include ("../jpgraph/jpgraph_pie.php");
     
    // Tableaux de données destinées à JpGraph
    $tableauGrade = array();
    $tableauNbNom = array();
     
    // ********************************************************************
    // PARTIE 2 : Production des données avec Postgres
    // ********************************************************************
     
    // Connexion à la base de donnée
    $dbconnect = pg_connect("host=bpia-psql-1 port=5432 dbname=ListePersonnel user=moi password=mdp");
    if (!$dbconnect) {
    	echo "Pas de connexion à la base de données.<br>";
    	exit;
    }
     
    // Construction de la requete personalisée
    $query = "select grade, count(nom) as nbNom from personnel group by grade";
     
    //Exécution de la requete
    $result = pg_query($dbconnect, $query);
    if (!$result)
    {
    	echo "La requete ne fonctionne pas.<br>";
    	exit;
    }
     
    // Compte le nombre de lignes renvoyé par la requete
    $nb=pg_num_rows($result);
    //echo "Il y a $nb enregistrements dans la base.<br><br>";   //=> Ne pas activer cette ligne, le graphique ne s'afficherait plus.
     
    // Au cas ou la requete est vide, on quitte
    if ($nb==0)
    {
    	echo "Il n'y a personne dans la base<br><br>";
    	exit;
    }
     
    // Boucle de récuperation des données
    while ($arr = pg_fetch_array($result))
    {
    	$tableauGrade[] = $arr[0]; // Liste des grades
    	$tableauNbNom[] = $arr[1]; // Nombre de grade
    }
     
    // Fermeture de la connection
    pg_close($dbconnect);
     
    // ********************************************************************
    // PARTIE 3 : Création du graphique
    // ********************************************************************
     
    // On spécifie la largeur et la hauteur du graphique conteneur en pixels
    $graph = new PieGraph(800,600);
     
    // Titre du graphique
    $graph->title->Set("Répartition des grades");
     
    // Créer un graphique secteur (classe PiePlot)
    $oPie = new PiePlot($tableauNbNom);
     
    // Légendes qui accompagnent chaque secteur, ici chaque grade
    $oPie->SetLegends($tableauGrade);
     
    // position du graphique (légèrement à droite)
    $oPie->SetCenter(0.4);
     
    $oPie->SetValueType(PIE_VALUE_ABS);
     
    // Format des valeurs de type entier
    $oPie->value->SetFormat('%d');
     
    // Ajouter au graphique le graphique secteur
    $graph->Add($oPie);
     
    // Provoquer l'affichage (renvoie directement l'image au navigateur)
    $graph->Stroke();
    ?>

  7. #7
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 221
    Points
    20 221
    Par défaut
    Y manquerait pas un : header("Content-Type: image/png"); ?

    A moins que jpgraph le mettent tout seul ?
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Membre à l'essai
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2012
    Messages : 20
    Points : 16
    Points
    16
    Par défaut
    Salut grunk.

    J'ai essayé avec ou sans le header, ça ne change rien.

  9. #9
    Membre à l'essai
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2012
    Messages : 20
    Points : 16
    Points
    16
    Par défaut
    Après différents essais, le problème vient de ma boucle while

    Parce que si je transforme mon code avec des données passées en dur comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    // Tableaux de données destinées à JpGraph
    $tableauGrade = array(12,23,9,58);
    $tableauNbNom = array("bg","bch","mdl","mch");
    et si je mets en commentaire ma boucle while :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    /* Boucle de récuperation des données
    while ($arr = pg_fetch_array($result))
    {
        $tableauGrade[] = $arr[0]; // Liste des grades
        $tableauNbNom[] = $arr[1]; // Nombre de grade
    }*/
    Ce qui donne au final un code comme ceci, (avec la connexion à la BDD, l’exécution de la requete et le comptage du nombre de ligne qui ne servent plus du coup, mais c'est juste pour voir si ça gênait l'affichage ou pas) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    <?php
    //********************************************************************
    // PARTIE 1 : Includes et initialisation des variables
    // ********************************************************************
     
    // Inclusion des librairies JpGraph
    include ("../jpgraph/jpgraph.php");
    include ("../jpgraph/jpgraph_pie.php");
     
    // Tableaux de données destinées à JpGraph
    $tableauGrade = array(12,23,9,58);
    $tableauNbNom = array("bg","bch","mdl","mch");
     
    // ********************************************************************
    // PARTIE 2 : Production des données avec Postgres
    // ********************************************************************
     
    // Connexion à la base de donnée
    $dbconnect = pg_connect("host=bpia-psql-1 port=5432 dbname=ListePersonnel user=moi password=mdp");
    if (!$dbconnect) {
        echo "Pas de connexion à la base de données.<br>";
        exit;
    }
     
    // Construction de la requete personalisée
    $query = "select grade, count(nom) as nbNom from personnel group by grade";
     
    //Exécution de la requete
    $result = pg_query($dbconnect, $query);
    if (!$result)
    {
        echo "La requete ne fonctionne pas.<br>";
        exit;
    }
     
    // Compte le nombre de lignes renvoyé par la requete
    $nb=pg_num_rows($result);
    //echo "Il y a $nb enregistrements dans la base.<br><br>";   //=> Ne pas activer cette ligne, le graphique ne s'afficherait plus.
     
    // Au cas ou la requete est vide, on quitte
    if ($nb==0)
    {
        echo "Il n'y a personne dans la base<br><br>";
        exit;
    }
    /* ---------------------------------------SUPRESSION DE LA BOUCLE ------------------------
    // Boucle de récuperation des données
    while ($arr = pg_fetch_array($result))
    {
        $tableauGrade[] = $arr[0]; // Liste des grades
        $tableauNbNom[] = $arr[1]; // Nombre de grade
    }
    -----------------------------------------------------------------------------------------*/ 
     
    // Fermeture de la connection
    pg_close($dbconnect);
     
    // ********************************************************************
    // PARTIE 3 : Création du graphique
    // ********************************************************************
     
    // On spécifie la largeur et la hauteur du graphique conteneur en pixels
    $graph = new PieGraph(800,600);
     
    // Titre du graphique
    $graph->title->Set("Répartition des grades");
     
    // Créer un graphique secteur (classe PiePlot)
    $oPie = new PiePlot($tableauNbNom);
     
    // Légendes qui accompagnent chaque secteur, ici chaque grade
    $oPie->SetLegends($tableauGrade);
     
    // position du graphique (légèrement à droite)
    $oPie->SetCenter(0.4);
     
    $oPie->SetValueType(PIE_VALUE_ABS);
     
    // Format des valeurs de type entier
    $oPie->value->SetFormat('%d');
     
    // Ajouter au graphique le graphique secteur
    $graph->Add($oPie);
     
    // Provoquer l'affichage (renvoie directement l'image au navigateur)
    $graph->Stroke();
    ?>
    Eh bien, le graphique s'affiche nikel.

    Du coup je cherche ce qui n'irait pas dans ma boucle.

  10. #10
    Membre à l'essai
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2012
    Messages : 20
    Points : 16
    Points
    16
    Par défaut
    Alors là, je n'y comprends plus rien.

    Comme ça m'a gonflé, j'ai tout fermé et tout réécris à partir d'un fichier php vierge.

    Voici le nouveau fichier graph.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    <?php
    // ********************************************************************
    // PARTIE 1 : Includes et initialisation des variables
    // ********************************************************************
     
    // Inclusion des librairies JpGraph
    include ("../jpgraph/jpgraph.php");
    include ("../jpgraph/jpgraph_pie.php");
     
    // Tableaux de données destinées à JpGraph
    $tableauGrade = array();
    $tableauNbNom = array();
     
    // ********************************************************************
    // PARTIE 2 : Production des données avec Postgres
    // ********************************************************************
     
    // Connexion à la base de donnée
    $dbconnect = pg_connect("host=bpia-psql-1 port=5432 dbname=ListePersonnel user=postgres password=AdminPsql1");
    if (!$dbconnect) {
    	echo "Pas de connexion à la base de données.<br>";
    	exit;
    }
     
    // Construction de la requete
    $query = "select grade, count(nom) as nbNom from personnel group by grade";
     
    //Exécution de la requete
    $result = pg_query($dbconnect, $query);
    if (!$result)
    {
    	echo "La requete ne fonctionne pas.<br>";
    	exit;
    }
     
    // Compte le nombre de lignes renvoyé par la requete
    $nb=pg_num_rows($result);
    //echo "Il y a $nb enregistrements dans la base.<br><br>";   //=> Ne pas activer cette ligne, le graphique ne s'afficherait plus.
     
    // Au cas ou la requete est vide, on quitte
    if ($nb==0)
    {
    	echo "Il n'y a personne dans la base<br><br>";
    	exit;
    }
     
    // Boucle de récuperation des données
    while ($arr = pg_fetch_array($result))
    {
    	$tableauGrade[] = $arr[0]; // Liste des grades
    	$tableauNbNom[] = $arr[1]; // Nombre de grade
    }
     
    // Fermeture de la connection
    pg_close($dbconnect);
     
    // ********************************************************************
    // PARTIE 3 : Création du graphique
    // ********************************************************************
     
    // On spécifie la largeur et la hauteur du graphique conteneur en pixels
    $graph = new PieGraph(800,1000);
     
    // Titre du graphique
    $graph->title->Set("Répartition des grades");
     
    // Créer un graphique secteur (classe PiePlot)
    $oPie = new PiePlot($tableauNbNom);
     
    // Légendes qui accompagnent chaque secteur, ici chaque grade
    $oPie->SetLegends($tableauGrade);
     
    // position du graphique (légèrement à droite)
    $oPie->SetCenter(0.4);
     
    $oPie->SetValueType(PIE_VALUE_ABS);
     
    // Format des valeurs de type entier
    $oPie->value->SetFormat('%d');
     
    // Ajouter au graphique le graphique secteur
    $graph->Add($oPie);
     
    // Provoquer l'affichage (renvoie directement l'image au navigateur)
    $graph->Stroke();
    ?>
    Et bien, Ô miracle ça fonctionne parfaitement.

    j'ai comparé l'ancien fichier et le nouveau avec la fonction Compare de Notepad++, il sont identiques.
    Et malgré cela, l'ancien ne marche toujours pas et le nouveau si.

    Ah, si seulement la prog pouvait être une science exacte et non pas soumise à la volonté divine !!!!!!!!!!!!!!!!!

    Encore merci à ceux qui se sont intéressé à mon problème.

    A une prochaine fois.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Copie d'onglet avec image - problème mémoire (image croix rouge)
    Par doumet dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 22/04/2015, 16h32
  2. [SP-2010] Croix rouges à la place des images, dans certains cas.
    Par sebfreu dans le forum SharePoint
    Réponses: 5
    Dernier message: 26/03/2012, 12h01
  3. [JpGraph] Obtention de la croix rouge au lieu de mon graphe
    Par clod83 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 22/11/2008, 18h52
  4. Eviter la croix rouge sur une image absente
    Par zooffy dans le forum ASP.NET
    Réponses: 4
    Dernier message: 17/11/2008, 15h55
  5. Associer Script a la croix rouge fermeture fenetre
    Par Oaurelius dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 24/11/2005, 18h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo