+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5
  1. #1
    Invité de passage
    Inscrit en
    novembre 2010
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : novembre 2010
    Messages : 12
    Points : 2
    Points
    2

    Par défaut Générer un graphique JPGraph avec une connexion PostGres

    Bonjour,

    Mon niveau PHP est débutant, mais j'arrive à générer des tableaux automatiques (b de naissances) avec des données issues d'une base PostGres avec une variable en entrée (nom de la commune).
    J'aimerais maintenant pouvoir associer un graphique.
    J'ai réussi à installer la bibliothèque JpGraph, et j'arrive à afficher le grahique.

    Dès que je veux lui entrée les valeurs de ma base, il affiche une page blanche.

    Question 1 : comment faire pour intégrer une connexion Postgres avant la génération du tableau et récupérer les données dans le Graphique courbe (code ci-dessous)
    Code :
    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
     
     
    <?php 
    include ("c:\jpgraph\src\jpgraph.php");
    include ("c:\jpgraph\src\jpgraph_line.php");
     
    // connexion à la base 
    $user='utilisateur';
    $pass='util';
    $dsn='pgsql:host=localhost;dbname=sigoval1';
     
    try{
    	$dbh= new PDO($dsn,$user,$pass);
    }
    catch(PDOException $e) {
    	die ("Erreur!:".$e->getMessage());
    }
     
    $sql="SELECT naisd01,naisd02 FROM pop_etatcivil.naissance WHERE codgeo='60175'"
    $resultat=$dbh->query($sql);
    // insertion des données ici
    while ($row=$resultat->fetch()){
    $ydata = array(row[naids01],row[naids01]);
    }
    // Creation du graphique
    $graph = new Graph(300,200); 
    $graph->SetScale("textlin");
     // On élargit les marges pour pouvoir placer les légendes (gauche, droite, haut, bas)
         $graph->img->SetMargin(40,20,20,40);
         $graph->title->Set('Evolution de la population depuis 1968');
         $graph->xaxis->title->Set('Source : Insee recensement de la population 2009');
         $graph->yaxis->title->Set('');
    // Création du système de points
    $lineplot=new LinePlot($ydata);
     
    // On rajoute les points au graphique
    $graph->Add($lineplot);
     
    // Affichage
    $graph->Stroke();
     
    ?>
    Question 2 : Si j'arrive à solutionner ce pb, j'aimerais savoir comment envoyer en dynamique la variable [codgeo] à ce tableau.

    Merci pour votre aide.

  2. #2
    Membre chevronné Avatar de ypcman
    Homme Profil pro
    Directeur technique
    Inscrit en
    janvier 2011
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : janvier 2011
    Messages : 411
    Points : 604
    Points
    604

    Par défaut

    Bonjour
    Le plus simple consiste à créer 2 fichier
    • le fichier qui crée le graphique
    • le fichier qui affiche le graphique créé

    ce deuxième fichier doit contenir l'affichage du graphe créé par le premier fichier monGraphique.php sous forme d'appel à une image
    Code :
    <img src="monGraphique.php" width="240" height="240" />;
    Cela te permet d'intégrer ton graphique dans une page html avec texte et autre graphes.
    pour la valeur a transmettre en dynamique, tu fais
    Code :
    <img src="monGraphique.php?valeuratransmettre=$lavaleur" width="240" height="240" />;
    que tu récupères dans fichier monGraphique.php avec un $_request['valeuratransmettre']

  3. #3
    Invité de passage
    Inscrit en
    novembre 2010
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : novembre 2010
    Messages : 12
    Points : 2
    Points
    2

    Par défaut

    Bonjour,

    Merci pour cette réponse, mais j'avais testé cette solution, et cela ne marche pas. Dès qu'on insère un ligne de commande dans mongraph.php (qui génère le graph), le graph ne s'affiche plus.
    La synthaxe d'envoi de la valeur ne pose pas depb.
    Ligne de commande d'insertion dans mon fichier hml/php
    <img src="graph1.php?codgeo=$codgeo" alt="Affichage du graphique impossible"/>
    Code :
    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
    <?php // content="text/plain; charset=utf-8"
    include ("c:\jpgraph\src\jpgraph.php");
    include ("c:\jpgraph\src\jpgraph_line.php");
    $_request['codgeo'] ==> dès que cette ligne est insérée, le graph ne s'afiche plus
    $datay1 = array(20,15,23,15);
    
    
    // Setup the graph
    $graph = new Graph(300,250);
    $graph->SetScale("textlin");
    
    $theme_class=new UniversalTheme;
    
    $graph->SetTheme($theme_class);
    $graph->img->SetAntiAliasing(false);
    $graph->title->Set('Titre');
    $graph->SetBox(false);
    
    $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('2001','2002','2003','2004'));
    $graph->xgrid->SetColor('#E3E3E3');
    
    // Create the first line
    $p1 = new LinePlot($datay1);
    $graph->Add($p1);
    $p1->SetColor("#6495ED");
    $p1->SetLegend('Line 1');
    
    
    
    $graph->legend->SetFrameWeight(1);
    
    // Output line
    $graph->Stroke();
    
    ?>
    J'ai vu sur le forum, pour ceux qui utilisent MySQL qu'il parle de session PLH à créer. Mais je ne sais pas comment cela fonctionne.

    Merci en tout de votre réponse. J'essaye de progresser en prog mois qui suit issu du monde universitaire/Géographie

  4. #4
    Membre chevronné Avatar de ypcman
    Homme Profil pro
    Directeur technique
    Inscrit en
    janvier 2011
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : janvier 2011
    Messages : 411
    Points : 604
    Points
    604

    Par défaut

    Je viens de tester et ça fonctionne parfaitement.
    Voici le fichier générant le graphique :
    Code :
    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
    <?php
    require_once ("../include/jpgraph/jpgraph.php"); // remettre ton chemin
    require_once ("../include/jpgraph/jpgraph_line.php");
     
    $codgeo=$_REQUEST['codgeo']; // récupération de codgeo
    $datay1 = array(20,15,23,15);
     
     
    // Setup the graph
    $graph = new Graph(300,250);
    $graph->SetScale("textlin");
     
    $theme_class=new UniversalTheme;
     
    $graph->SetTheme($theme_class);
    $graph->img->SetAntiAliasing(false);
    $graph->title->Set($codgeo); // le titre s'affiche en provenance de codgeo fourni par le second fichier
    $graph->SetBox(false);
     
    $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('2001','2002','2003','2004'));
    $graph->xgrid->SetColor('#E3E3E3');
     
    // Create the first line
    $p1 = new LinePlot($datay1);
    $graph->Add($p1);
    $p1->SetColor("#6495ED");
    $p1->SetLegend('Line 1');
     
    $graph->legend->SetFrameWeight(1);
     
    // Output line
    $graph->Stroke();
    ?>

    et le fichier appelant contient :
    Code :
    echo "<img src='./include/test_jpgraph_21.php?codgeo=123456789'>";
    Tu dois bien sur mettre le bon chemin mais chez moi ça donne :



    Tu peux remarquer que j'ai mis la valeur de codgeo en titre ...

    Yves.
    Images attachées Images attachées

  5. #5
    Invité de passage
    Inscrit en
    novembre 2010
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : novembre 2010
    Messages : 12
    Points : 2
    Points
    2

    Par défaut

    Ok super, ça marche pour cette étape.

    Je vais maintenant ressayer de faire ma connexion à la base pour récupérer les valeurs renvoyées pour le codgeo reçu.

    Merci bcp pour ton aide,

    Bonnes fêtes

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •