JeuWeb - Crée ton jeu par navigateur
Graphique avec Artichow - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Graphique avec Artichow (/showthread.php?tid=1385)

Pages : 1 2


Graphique avec Artichow - r0seBa - 19-03-2008

salut à tous Smile

Voilà quelqu'un a tenté de me coder deux pages qui servent à faire des graphiques grace à des valeurs récupérées dans la base de donnée. Il était trop lent et bloqué, j'ai donc repris ses pages. Mais voilà ça marche pas ^^

La page profil2 : Dans laquelle on envoit les valeurs à la page profil.php
Code PHP :
<?php 
$unite
= mysql_query("SELECT alt FROM co_profil WHERE idc=1 AND etape=1 ORDER BY km ASC");
$valuesa = array();

while(
$valeur = mysql_fetch_array($unite))
{
//boucle pour les altitudes

$valuesa[] = $valeur['alt'];
echo
$valeur['alt'];
}
//les altitudes sont enregistrees


echo '<center><img src="profil.php?valuesa='.urlencode(serialize($valuesa)).'" alt="profil étape"/></center>';

Bien sur j'ai pas mis tout le code, juste la partie intéressante après c'est la connexion et tout.

profil.php:
Code PHP :
<?php 
require_once "ARTICHOW/LinePlot.class.php";
// appel de artichow dans cette difficile tache
$oxydo = mysql_query("SELECT km FROM ce_course WHERE idc=1 AND ordre=1");
$reduc = mysql_fetch_array($oxydo);



$greve = mysql_query("SELECT km FROM co_profil WHERE idc=1 AND etape=1 ORDER BY km ASC");
$days = array();

while (
$prof = mysql_fetch_array($greve))
{

$days[] = $prof['km'];

}
//les kilometre enregistres


$plot->xAxis->setLabelText($days);

//altitude
$daysa = array(
'0',
'500',
'1000',
'1500',
'2000',
);
$plot->yAxis->setLabelText($daysa);
//

$graph = new Graph(800, 600);
$graph->setAntiAliasing(TRUE);



$plot = new LinePlot($data); // on trace la courbe
$plot ->label->set($data);
$plot->setBackgroundColor(new Color(240, 240, 240));
$plot->grid->setBackgroundColor(new Color(255, 255, 102, 60)); //fond
$plot->setSpace(1, 1, NULL, NULL);

$plot->setPadding(30, 15, 38, 25);
$plot->setColor(new Blue()); //courbe
$plot->setFillColor(new LightBlue(0));

// Changer les points
$plot->mark->border->show();


$graph->add($plot);
$graph->draw();

Je souhaite que quelque soit le graphique les ordonnées (alt) ait toujours la même échelle (0,500,1000,1500,2000). Même si alt ne dépasse jamais 100.

Le problème c'est qu'il n'y a pas d'erreurs.
Quand je met ça en début de profil.php:
Code PHP :
<?php 
$data
= @unserialize($_GET['valuesa']);
if(
is_array($data) == FALSE)
{
//on unserialize l'array
exit();
}
Bah rien ne s'affiche sur la page profil.php. Car j'ai fait clique droit dans profil2 sur l'image qui s'affiche pas, je me rend au lien de l'image et ça affiche plein de caractères sauf si je met ce code qui fait que plus rien ne s'affiche. Donc j'en déduis que c'est pas un array mes valeurs. J'ai testé de mettre ça juste après la création du array et ça marche. Donc quand on met les valeurs dans l'adresse ça fait tout planter Sad car après on a plus les valeurs Sad. Comment faire? Vous avez une solution?


Merci d'avance Smile


RE: Graphique avec Artichow - Wells - 19-03-2008

Fait attention à tout code mit avant le header, notamment les sessions et la connexion à la bdd.


RE: Graphique avec Artichow - r0seBa - 19-03-2008

Dans ces pages de test ya que du php ^^


RE: Graphique avec Artichow - r0seBa - 19-03-2008

Bon voilà, j'ai essayé d'être malin et j'ai placé ma requete directement avant la création du graphique donc sur la page profil.php
j'ai rajouté ça:
Code PHP :
<?php 
$unite
= mysql_query("SELECT alt FROM co_profil WHERE idc=1 AND etape=1 ORDER BY km ASC");
$valuesa = array();

while(
$valeur = mysql_fetch_array($unite))
{
//boucle pour les altitudes

$valuesa[''] = $valeur['alt'];

}
//les altitudes sont enregistrees
$data = $valuesa;

Mais ça marche toujours pas, j'aimerais bien savoir pourquoi? vous avez des idées? faut peut etre faire quelque chose avec ces valeurs avant de les mettre dans un array?
J'ai testé il considère bien ma variable comme un array maintenant. Smile

(DSL du double post)


RE: Graphique avec Artichow - ifcody - 19-03-2008

Je suis p'téte pas bien réveiller, mais, tu commencerais pas à utiliser l'objet $plot avant de l'avoir instancier par hazard?
Donc ca, ca doit cracher un "use method on a non object" ou quelque chose comme ca...

Ensuite, je comprends pas bien ce que tu fait là:
Code PHP :
<?php 
$plot
= new LinePlot($data); // on trace la courbe
$plot ->label->set($data);
L'objet requiert vraiment que tu lui envois deux fois la méme valeur $data?
Et puis $data ca vient d'ou d'abord? (Edit: ha ok, j'avais pas fait gaffe à la version 2 en 1)

Et puis fait un array_push():

Code PHP :
<?php 
while($valeur = mysql_fetch_array($unite))
{
//boucle pour les altitudes

//$valuesa[''] = $valeur['alt'];
array_push($valuesa,$valeur['alt']);

}
//les altitudes sont enregistrees



RE: Graphique avec Artichow - r0seBa - 19-03-2008

Voilà j'ai fait ce que ta dit, avec le array push, j'ai enlevé "$plot ->label->set($data); "

Voilà le résultat :
http://www.cycareer.com/profil2.php

ça marche pas je sais pas pourquoi voilà mes deux pages pour l'instant:

profil2.php
Code PHP :
<?php 
echo '<center><img src="profil.php?valuesa='.urlencode(serialize($valuesa)).'" alt="profil étape"/></center>';

profil.php
Code PHP :
<?php 
require_once "ARTICHOW/LinePlot.class.php";


// appel de artichow dans cette difficile tache
$oxydo = mysql_query("SELECT km FROM ce_course WHERE idc=1 AND ordre=1");
$reduc = mysql_fetch_array($oxydo);
$deu = $reduc['km'] / 3;
$deux = floor($deu);

$troi = $reduc['km'] /2;
$trois = floor($troi);
$quatre = 3*$deux;



$unite = mysql_query("SELECT alt FROM co_profil WHERE idc=1 AND etape=1 ORDER BY km ASC");
$valuesa = array();

while(
$valeur = mysql_fetch_array($unite))
{
//boucle pour les altitudes


array_push($valuesa,$valeur['alt']);

}
//les altitudes sont enregistrees
$data = $valuesa;


$graph = new Graph(800, 600);
$graph->setAntiAliasing(TRUE);

$greve = mysql_query("SELECT km FROM co_profil WHERE idc=1 AND etape=1 ORDER BY km ASC");
$days = array();

while (
$prof = mysql_fetch_array($greve))
{

array_push($days,$prof['km']);
}
//les kilometre enregistres

$plot->xAxis->setLabelText(array_values($days));

//altitude
$daysa = array(
'0',
'500',
'1000',
'1500',
'2000',
);
$plot->yAxis->setLabelText($daysa);
//

$plot = new LinePlot($data); // on trace la courbe

$plot->setBackgroundColor(new Color(240, 240, 240));
$plot->grid->setBackgroundColor(new Color(255, 255, 102, 60)); //fond
$plot->setSpace(1, 1, NULL, NULL);

$plot->setPadding(30, 15, 38, 25);
$plot->setColor(new Blue()); //courbe
$plot->setFillColor(new LightBlue(0));

// Changer les points
//$plot->mark->setType(Mark::CIRCLE);
$plot->mark->border->show();


$graph->add($plot);
$graph->draw();

Et donc ça ne marche pas Sad Merci de ton aide Smile


RE: Graphique avec Artichow - keke - 20-03-2008

Coucou,

Il m'a fallut 1heure pour installer Artishow et créer le graphisme indiquant le NB de connecté par jour.
J'avoue que j'ai pas mal utilisé les exemples et le tuto, mais là je vois pas.

ma technique a été de prendre un exemple, de récupérer mes données et de remplacer les données de l'exemple. Ensuite j'ai fais la requête qui faut dans la BDD. Pas eu un seul soucis.

Exemple : en bas de la page : http://magdales.star-warz.net/i_FAQ.php

kéké (j'ai même pris la liberté de sauvegardé le graph dans une image pour ne le recalculer qu'en cas de besoin.)


RE: Graphique avec Artichow - Zamentur - 20-03-2008

Déjà ce qui m'interpelle c'est que dans profil.php tu ne reucpere pas la variable passé en parametre GET...
Donc cette variable ne sert à rien pour le moment.

Sinon pour le moment il y a une erreur simple (çà a d'ailleurs déjà été dis)
tu utilises $plot avant de l'avoir definit

le $plot = new LinePlot($data); doit etre placé avant tout ce qui commence par $plot->


RE: Graphique avec Artichow - r0seBa - 20-03-2008

En fait oui, je récupère les donnée dans la seconde page, avant je les faisait passer par un GET, mais finalement je les met dans profil.php

Voilà donc la nouvelle page, ça marche toujours pas Sad
Code PHP :
<?php 
require_once "ARTICHOW/LinePlot.class.php";


// appel de artichow dans cette difficile tache
$oxydo = mysql_query("SELECT km FROM ce_course WHERE idc=1 AND ordre=1");
$reduc = mysql_fetch_array($oxydo);
$deu = $reduc['km'] / 3;
$deux = floor($deu);

$troi = $reduc['km'] /2;
$trois = floor($troi);
$quatre = 3*$deux;



$unite = mysql_query("SELECT alt FROM co_profil WHERE idc=1 AND etape=1 ORDER BY km ASC");
$valuesa = array();

while(
$valeur = mysql_fetch_array($unite))
{
//boucle pour les altitudes


array_push($valuesa,$valeur['alt']);

}
//les altitudes sont enregistrees
$data = @unserialize($valuesa);

$plot = new LinePlot($data); // on trace la courbe
$graph = new Graph(800, 600);
$graph->setAntiAliasing(TRUE);

$greve = mysql_query("SELECT km FROM co_profil WHERE idc=1 AND etape=1 ORDER BY km ASC");
$dayss = array();

while (
$prof = mysql_fetch_array($greve))
{

array_push($dayss,$prof['km']);
}
//les kilometre enregistres
//$days = @unserialize($dayss);

xAxis->setLabelText($dayss);

//altitude
$daysa = array(
'0',
'500',
'1000',
'1500',
'2000',
);
$plot->yAxis->setLabelText($daysa);
//



$plot->setBackgroundColor(new Color(240, 240, 240));
$plot->grid->setBackgroundColor(new Color(255, 255, 102, 60)); //fond
$plot->setSpace(1, 1, NULL, NULL);

$plot->setPadding(30, 15, 38, 25);
$plot->setColor(new Blue()); //courbe
$plot->setFillColor(new LightBlue(0));

// Changer les points
//$plot->mark->setType(Mark::CIRCLE);
$plot->mark->border->show();


$graph->add($plot);
$graph->draw();



RE: Graphique avec Artichow - Zamentur - 20-03-2008

Code PHP :
<?php 
xAxis
->setLabelText($dayss);
il manque pas un trucs là...

et je comprend pas pourquoi $data = @unserialize($valuesa); ?