Faire un graph en PHP à partir d'un fichier ASCII

poseidon1976 Messages postés 4 Date d'inscription mercredi 10 octobre 2007 Statut Membre Dernière intervention 20 novembre 2007 - 18 nov. 2007 à 18:59
poseidon1976 Messages postés 4 Date d'inscription mercredi 10 octobre 2007 Statut Membre Dernière intervention 20 novembre 2007 - 20 nov. 2007 à 21:08
Salut à tous,

Je suis débutante en PHP.
J'ai un programme en PHP qui me permet de tracer un graph mais à partir de données durs.
 J'aimerais savoir comment transformer ce programme (ci-joint graph_mixte.php) de façon qu'à partir d'un fichier ascii (ci-joint ascii.txt) je retire les données numériques et que je les utilise pour faire le graph.


graph_mixte.php

<?php


//include ("test.php");
include ("jpgraph.php");
include ("jpgraph_line.php");
include ("jpgraph_bar.php");


$l1datay = array(1,2,3,4,5,6,7,8,9);
$l2datay = array(125,134,137,152,128,654,456,345,256);
$datax=array("Jan","Feb","Mar","Apr","May");


// Creation du graphique
$graph = new Graph(600,300,"auto");   
$graph->SetScale("textlin");


$graph->img->SetMargin(40,130,20,40);
$graph->SetShadow();


// Creation et parametrage de la courbe
//$l1plot=new LinePlot($l1datay);


//$l1plot=new LinePlot($commentaire);
//$l1plot->SetColor("red");
//$l1plot->SetWeight(2);
//$l1plot->SetLegend("Consommation totale");




// Creation et parametrage des barres
$bplot = new BarPlot($l2datay);
$bplot->SetFillColor("green");
$bplot->SetLegend("conso totale");


// Ajout des courbes et barres au graphique
$graph->Add($bplot);
//$graph->Add($l1plot);


// Ajout d'un titre
$graph->title->Set("Consommation du mois d'Octobre");
$graph->xaxis->title->Set("Appartement");
$graph->yaxis->title->Set("Consommation en kWh");


// Parametrage des font a utiliser
$graph->title->SetFont(FF_FONT1,FS_BOLD);
$graph->yaxis->title->SetFont(FF_FONT1,FS_BOLD);
$graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD);


// Affichage du graphique
$graph->Stroke("graphoct.png");


contenu de ascii.txt

nom 1 : 234
nom 2 : 324
nom 3 : 213
nom 4 : 215
nom 5: 127

Merci d'avance

5 réponses

neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
18 nov. 2007 à 19:54
Salut,

Y'a un truc qui est pas très clair : où les données extraites de ton fichier texte sont-elles utilisées ?

Voici quand même comment extraire les paires nom/valeur du fichier :

$aTxtFile = file('ascii.txt');
foreach ($aTxtFile as $sLine) {
$aLine = explode(':', $sLine);
$valeurs[] = $aLine;
}

C'est qu'un exemple qui mérite surement d'être adapté/modifié. Tout dépend de comment le tableau est traité.
0
poseidon1976 Messages postés 4 Date d'inscription mercredi 10 octobre 2007 Statut Membre Dernière intervention 20 novembre 2007
19 nov. 2007 à 20:52
Merci pour ta réponse. Je vais essayer de l'intégrer dans mon programme graph_mixte.php à la place de la ligne "$l2datay = array(125,134,137,152,128,654,456,345,256);".

Si maintenant je remplace $l2datay par $valeurs[] j'espère que ça va marcher !

Je vais essayer.
0
poseidon1976 Messages postés 4 Date d'inscription mercredi 10 octobre 2007 Statut Membre Dernière intervention 20 novembre 2007
19 nov. 2007 à 21:45
Malheureusement cela n'a pas marché et j'obtiens ce message d'erreur:

Chosen locale file ("lang/en.inc.php") for error messages does not exist or is not readable for the PHP process. Please make sure that the file exists and that the file permissions are such that the PHP process is allowed to read this file.

Qu'est ce qui ne va pas dans ce programme:
<?php


//include ("test.php");
include ("jpgraph.php");
include ("jpgraph_line.php");
include ("jpgraph_bar.php");


$l1datay = array(1,2,3,4,5,6,7,8,9);
$datax=array("Jan","Feb","Mar","Apr","May");


 


// récupérer les données d'un fichier ASCII de deux colonnes  séparées par ":"
$aTxtFile = file('ascii.txt');
foreach ($aTxtFile as $sLine) {
  $aLine = explode(':', $sLine);
  $valeurs[] = $aLine;
}


 


// Creation du graphique
$graph = new Graph(600,300,"auto");   
$graph->SetScale("textlin");


$graph->img->SetMargin(40,130,20,40);
$graph->SetShadow();


// Creation et parametrage de la courbe
//$l1plot=new LinePlot($l1datay);


//$l1plot=new LinePlot($commentaire);
//$l1plot->SetColor("red");
//$l1plot->SetWeight(2);
//$l1plot->SetLegend("Consommation totale");




// Creation et parametrage des barres
$bplot = new BarPlot($valeurs[]);
$bplot->SetFillColor("green");
$bplot->SetLegend("conso totale");


// Ajout des courbes et barres au graphique
$graph->Add($bplot);
//$graph->Add($l1plot);


// Ajout d'un titre
$graph->title->Set("Consommation du mois d'Octobre");
$graph->xaxis->title->Set("Appartement");
$graph->yaxis->title->Set("Consommation en kWh");


// Parametrage des font a utiliser
$graph->title->SetFont(FF_FONT1,FS_BOLD);
$graph->yaxis->title->SetFont(FF_FONT1,FS_BOLD);
$graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD);


// Affichage du graphique
$graph->Stroke("graphoct.png");


Merci de m'aider à retrouver l'erreur.


 


 




 
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
19 nov. 2007 à 22:12
Euh ouais, alors j'étais en train de te faire une réponse quand j'ai été distrait...
Euh alors l'erreur que tu rencontres n'est pas liée au problème que tu as soumis au début.
Le fichier demandé lang/en.inc.php n'a pas été trouvé, mais je ne sais pas par quoi. Il ne semble pas apparaitre dans ton script, il est donc surement nécessaire à un des fichiers que tu inclues... Là, moi pas pouvoir t'aider plus que ça... Assure-toi que le fichier demandé est au bon endroit et qu'il peut être lu par php.

Pour ce qui est de la lecture du fichier texte, le code que je t'avais donné était juste pour donner une piste. Concrètement, si tu n'as besoin que des valeurs, il ne faut pas faire tout à fait comme ça.

Remplace :

$valeurs[] = $aLine;

Par :

$valeurs[] = intval($aLine[1]);

Ca ne retourne que la valeur et pas le nom1, nom2 etc. Et surtout, ça retourne un entier et non une chaine.
Sinon, ça doit être bon.

En fait, j'y pense juste : le message d'erreur vient du fait qu'il ne trouve pas le fichier de langue pour afficher les erreurs. Plop. Erreur il y avait, puisque $valeurs était un tableau et que ton script travaille vraissemblablement sur des entiers et non des tableaux.
Du coup, si cette erreur est réglée, il n'y a plus lieu d'afficher de message d'erreur, et donc, l'erreur lors de l'affichage d'erreur ne se produira pas...
Donc attention à régler avant tout le problème de fichier lang/en.inc.php non trouvé.

Euh j'espère que j'ai bon.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
poseidon1976 Messages postés 4 Date d'inscription mercredi 10 octobre 2007 Statut Membre Dernière intervention 20 novembre 2007
20 nov. 2007 à 21:08
Merci pour ton aide.
Même si cela ne marche toujours pas, je progresse car en incluant le fichier en.inc.php, j'ai ouvert une fenêtre qui explique mon erreur.

Voici le message:

Si mon anglais est assez bon, il semblerait que le programme ne trouve pas de données et que pour que le graph soit créé il lui faut au moins un point.

Qu'en penses-tu ? Ne faudrait-il pas faire une boucle "for".
0
Rejoignez-nous