Paramètre d'entrée dans un script PHP [Résolu]

zeldoi5 58 Messages postés mercredi 13 octobre 2004Date d'inscription 13 novembre 2005 Dernière intervention - 30 mars 2005 à 15:36 - Dernière réponse : zeldoi5 58 Messages postés mercredi 13 octobre 2004Date d'inscription 13 novembre 2005 Dernière intervention
- 31 mars 2005 à 18:05
Bonjour tout le monde, je ne sais pas si le titre est suffisemment évocateur, mais je voudrais passer le résultat de requêtes SQL (sur ma base MySQL) en paramètre d'entrée d'un fichier PHP : cela est il possible?

Pour que vous compreniez, voici mon code :

//Code de conenxion au serveur de BDD
$idConnexion = mysql_connect($myServer, "", "");
$connexionReussie = mysql_select_db($myDB) or die("Impossible de se connecter à la base de données $myDB. ");

//Requêtes SQL (basiques!)
$query = "select AVG(TR) from mesure_lan";
$query2 = "select AVG(TR) from mesure_messagerie";
$query3 = "select AVG(TR) from mesure_connect";

//Execution des requêtes SQL
$result = mysql_query($query);
$result2 = mysql_query($query2);
$result3 = mysql_query($query3);

//Résultats des requêtes SQL
$row = mysql_fetch_row($result);
echo "Temps de réponse moyen : $row[0] ";
$row2 = mysql_fetch_row($result2);
echo "Temps de réponse moyen de la messagerie : $row2[0] ";
$row3 = mysql_fetch_row($result3);
echo "Temps de réponse moyen de la connectivité : $row3[0] ";

Je voudrais passer ces trois résultats en "paramètres" d'un script PHP qui me contrsuit un radar (grâce à la librairie graphique GD), du style :

radar($row,$row2,$row3);

Cela est-il possible?
Et que dois t'on faire comme modification dans le script radar.php ??

Merci!
Afficher la suite 

17 réponses

Répondre au sujet
zeldoi5 58 Messages postés mercredi 13 octobre 2004Date d'inscription 13 novembre 2005 Dernière intervention - 31 mars 2005 à 18:05
+3
Utile
Bon j'ai trouvé LA source d'erreurs!
Il était inutile de décrire la classe JpGraph...

Le problème était le suivant :

en en-tête de mon script PHP, je mettais : header ("Content-type: image/png");
ce qui sous entend que ce script renvoie une image au format PNG. Ceci fait je ne peux pas mettre de echo "texte" quelconque comme je le faisais ( echo "Temps de réponse moyen : $row[0] "; ), si je le fais, l'image n'apparaitra pas "normalement" (elle apparaîtra sous forme de caractères incompréhensibles.... 300500‰PNG  IHDR,ôr‡` IDATxœíÝ\TUþ?ðÃïšbƒéŽZ©HF"¢cøs"¨V7ÛOòQtËLc|u!t¿ßÏgkwk!­m]­ÅMÐÅÚÜr×0K×û°Fm–ŽÕ‚

Je vais coller ici les sources des scripts que j'ai utilisé, afin que les personnes ne comprenant pas le passage d'argument/fonctions PHP puissent comprendre comment faire.

Je tiens à remercier malalam qui a pris le temps d'essayer de comprendre ce que j'écrivais.

Fichier HTML qui utilise les scripts PHP :
<html>
<head>
<title>Essai de représentation Stats via MySQL/PHP</title>
</head>

<center>
Une page PHP générée dynamiquement à partir de requêtes SQL



A chaque fois que vous rafraîchissez la page, l'heure change.

</html>

Fichier essais_requête2.php, fichier de script PHP :

<?php
header ("Content-type: image/png");
include 'bdd.inc.php';
include 'radar.inc.php';


//Etablit la connexion avec le serveur de base de données, ainsi qu'à la base
server_connect("localhost","","");
//Etablit la connexion à la base de données
bdd_connect("hyperclick");


/*Requête SQL*/
$query = "select AVG(TR) from mesure_lan";
$query2 = "select AVG(TR) from mesure_messagerie";
$query3 = "select AVG(TR) from mesure_connect";

/* EXECUTION DES REQUETEE QUERY, QUERY2 et QUERY3*/
$result = mysql_query($query);
$result2 = mysql_query($query2);
$result3 = mysql_query($query3);

/* TESTS SI LES REQUETES ONT ETE EFFECTUEES
if ($result) echo " Requête $query réussie.

" ;
else echo " Requête $query ratée.

";
if ($result2) echo " Requête $query2 réussie.

";
else echo " 'Requête $query2 ratée.

' ";
if ($result3) echo " Requête $query3 réussie.

";
else echo " Requête $query3 ratée.

";*/

//Utilisation des résultats :
$row = mysql_fetch_row($result);
//echo "$row[0] \n ";
$row2 = mysql_fetch_row($result2);
//echo "$row2[0] \n ";
$row3 = mysql_fetch_row($result3);
//echo "$row3[0] \n ";

($data1,$data2,$data3,$title,$secundarytitle1,$secundarytitle2,$secundarytitle3,$legendtitle,$high,$length)


$radar3=radar_3axis("$row[0]","$row2[0]","$row2[0]","TITRE PRINCIPAL","Titre 1","Titre 2","Titre 3",Titrede la légende",300,500);

?>

Fichier de
function qui sert à construire le radar (ex radar.php) :
include ("../jpgraph/jpgraph.php");
include ("../jpgraph/jpgraph_radar.php");


# création de radar à 3 branches
function radar_3axis($data1,$data2,$data3,$title,$secundarytitle1,$secundarytitle2,$secundarytitle3,$legendtitle,$high,$length) {


$myData1 = $data1;
$myData2 = $data2;
$myData3 = $data3;
$myTitle = $title;
$mySecundaryTitle1 = $secundarytitle1;
$mySecundaryTitle2 = $secundarytitle2;
$mySecundaryTitle3 = $secundarytitle3;
$myLegendTitle = $legendtitle;
$myHigh = $high;
$myLength = $length;

/*echo $myLength;
echo $myHigh;*/
// Spécifie ici la taille de l'image du radar
$graph = new RadarGraph($myLength,$myHigh,"auto");
$graph->img->SetAntiAliasing();
$graph->SetScale('lin');
// Spécifie ici la couleur de fond
//$graph->SetColor("white");
//$graph->SetColor('lightyellow');
//$graph->SetColor('aliceblue');
$graph->SetColor('snow2');
// Spécifie ici si le radar est en perspective (ombragé)
$graph->SetShadow();

// Spécifie ici la position du graph dans l'image (laisser par défaut!)
$graph->SetCenter(0.4,0.55);
// Spécifie la taille ainsi que la police des valeurs sur le radar
$graph->axis->SetFont(FF_FONT0,FS_BOLD);
// Spécifie la forme des lignes formant la grille
$graph->grid->SetLineStyle("solid");
//$graph->grid->SetLineStyle("dashed");
//$graph->grid->SetLineStyle("longdashed");
//$graph->grid->SetLineStyle("dotted");
// Spécifie l'épaisseur des lignes de la grille
//$graph->grid->SetLineWeight(1);
$graph->grid->SetWeight(1);

// Spécifie la couleur des limites
$graph->grid->SetColor("navy");

// Spécifie si on affiche la grille
$graph->grid->Show();

// Spécifie le nombre de limites ainsi que leurs liaisons(ex. 20% 40% 60% 80% pour TICKD_DENSE)
$graph->SetTickDensity(TICKD_DENSE);
//$graph->SetTickDensity(TICKD_NORMAL);
//$graph->SetTickDensity(TICKD_SPARSE);
//$graph->SetTickDensity(TICKD_VERYSPARSE);

// Permet d'afficher les petites marques sur les statistiques
$graph->ShowMinorTickmarks();

// Cache ou non les limites à 0% 50% et 100% dans le radar (par défaut : true affiche)
//$graph->HideTickMarks();
$graph->HideTickMarks(false);

// Spécifie ici LE titre à appliquer au radar :
$graph->title->Set("$myTitle");
// Donne les polices au titre principal
$graph->title->SetFont(FF_COMIC,FS_BOLD);
//$graph->title->SetFont(FF_FONT1,FS_BOLD);
// Spécifie les titres secondaires
$graph->SetTitles(array("$mySecundaryTitle1","$mySecundaryTitle2","$mySecundaryTitle3"));
//$graph->SetTitles($gDateLocale->GetShortMonth());


// Créé les premières stats sur le radar avec les points de donnée
$plot = new RadarPlot(array($myData1,$myData2,$myData3));
// Spécifie la légende du premier radar
$plot->SetLegend("$myLegendTitle");
// Spécifie la couleur des points
$plot->SetColor("blue");
// Spécifie ici si les statistiques "remplissent" le radar
//$plot->SetFill(false);
$plot->SetFillColor("cornflowerblue");
//$plot->SetFillColor("mediumpurple1");
//$plot->SetFillColor("slateblue1");
// Spécifie la largeur des lignes affichées
$plot->SetLineWeight(10);


// Ajoute ici les points de donnée prédéfinis
$graph->Add($plot);

// Affiche ici le graph
$graph->Stroke();
//return $graph;


} //FIN DE FONCTION CREATION RADAR A 3 BRANCHES

Je remerci aussi maitredede d'avoir pris la patience de me lire.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de zeldoi5
malalam 10918 Messages postés lundi 24 février 2003Date d'inscription 2 mars 2010 Dernière intervention - 30 mars 2005 à 15:52
0
Utile
hello,



ben heu oui, ou est ton probleme ?

sachant que tes $row sont des tableaux, bien sur...
Commenter la réponse de malalam
malalam 10918 Messages postés lundi 24 février 2003Date d'inscription 2 mars 2010 Dernière intervention - 30 mars 2005 à 15:53
0
Utile
mais pas comme ca hein...lol, parce que tu vas les chercher dans une
boucle while (), chaque ligne est un tableau en fait si tu veux...et a
chaque boucle dans while(), tu recrees ce tableau.

donc fo parcourir normalement ton tableau (while...), puis mettre les
resultats dans un nouvbeau tableau, que tu passes, lui, en parametre a
ta fonction. C'etait ptete ca ton probleme tout compte fait...
Commenter la réponse de malalam
zeldoi5 58 Messages postés mercredi 13 octobre 2004Date d'inscription 13 novembre 2005 Dernière intervention - 30 mars 2005 à 16:04
0
Utile
Ben là, je n'ai pas besoin du while, car les requêtes me renvoient un chiffre unique (pour chacune d'elle bien sûr).
Mais tu fais bien de me parler de ça, car j'ai pas compris grand chose au while.... Le résultat est compris dans un tableau nommé row et pour le lire il faut que je fasse un while, c'est ça??

En ce qui concerne ma question : que faut il que je modifie dans mon script radar pour qu'il accepte alors les trois paramètres d'entrée ??

Voici mon script radar :
<?php
include ("../jpgraph/jpgraph.php");
include ("../jpgraph/jpgraph_radar.php");


$graph = new RadarGraph(500,300,"auto");
$graph->img->SetAntiAliasing();
$graph->SetScale('lin');


$graph->SetColor('snow2');
$graph->SetShadow();


$graph->SetCenter(0.4,0.55);


$graph->axis->SetFont(FF_FONT0,FS_BOLD);


$graph->grid->SetLineStyle("solid");

$graph->grid->SetWeight(1);


$graph->grid->SetColor("navy");


$graph->grid->Show();


$graph->SetTickDensity(TICKD_DENSE);

$graph->ShowMinorTickmarks();
$graph->HideTickMarks(false);

$graph->title->Set("Environnement Position de Travail");

$graph->title->SetFont(FF_COMIC,FS_BOLD);

$graph->SetTitles(array("X","Y","Z"));

$plot = new RadarPlot(array(70,80,60));
$plot->SetLegend("Stats temps réel");
$plot->SetColor("blue");
$plot->SetFillColor("cornflowerblue");
$plot->SetLineWeight(10);


$graph->Add($plot);


$graph->Stroke();
?>
Commenter la réponse de zeldoi5
maitredede 153 Messages postés vendredi 9 août 2002Date d'inscription 18 septembre 2009 Dernière intervention - 30 mars 2005 à 16:19
0
Utile
Plusieurs solutions...

Si tu appelle ton script radar en tant qu'image (img src=radar.php)
tu peux les passer en GET : src="radar.php?val1=1&val2=2&val3=3"

Sinon, tu doit passer par une fonction (ex: radar(val1,val2,val3);)
Commenter la réponse de maitredede
malalam 10918 Messages postés lundi 24 février 2003Date d'inscription 2 mars 2010 Dernière intervention - 30 mars 2005 à 16:21
0
Utile
Ce n'est pas toi qui a cree ce script...sinon tu saurais 2 ou 3 choses lol.

La tu ne montres pas la bonne partie.

C'est une classe, et une classe est definie dans un autre fichier (normalement) et commence par :

class {

RadarGraph($..., $..., $...) {

}

... autres methodes

}



C'est ca qu'il faut regarder.

Apparemment le constructeur de cette classe accepte 2 int, et un
attribut sans doute fixe par defaut. La tu l'appelles avec "auto".



Donc il faut lui passer en parametre : un int (et pas un tableau, non),
1 deuxieme int (tjrs pas de tableau), et un parametre specifique dont
je ne connais pas les valeurs possibles vu que tu ne montres pas la
definition de la classe la, mais en tous cas, surement pas un tableau.



le while dans les requetes ce n'est pas exactement ca. A chaque boucle
dans ton while, il cree un tableau ($row) qu'il remplit avec la 1ere
ligne trouvee et tous les champs, puis recommence (nouveau tableau,
tjrs $row, mais ecrasant le precedent $row) avec la 2eme ligne, puis la
3eme etc jusqu'a ce qu'il ait remonte tout ce quÄil avait trouve en
fonction de ta requete.
Commenter la réponse de malalam
malalam 10918 Messages postés lundi 24 février 2003Date d'inscription 2 mars 2010 Dernière intervention - 30 mars 2005 à 16:27
0
Utile
maitredede -> heu, c'est deja une classe toute prete son trucm et meme deux classes a vrai dire.



Non si tu veux utiliser tes requetes pr ca, sois juste sur que tes requetes renvoies les bons resultats.

Si tu as une seule ligne, utilise tes $row[0] effectivement.
Commenter la réponse de malalam
zeldoi5 58 Messages postés mercredi 13 octobre 2004Date d'inscription 13 novembre 2005 Dernière intervention - 30 mars 2005 à 16:34
0
Utile
Et bien justement c'est moi qui l'ai créé ce script!! J'ai juste jugé bon de ne pas vous mettre les commentaires que j'ai mis....
Ce que je n'ai pas créé, comme tu dis, c'est la classe RadarGraph, qui elle est issue de la librairie graphique JpGraph (que j'utilise pour générer un radar dynamique à partir des résultats des requêtes).
Les paramètres proprement parlés sont : la taille (en largeur et en hauteur) ainsi qu'un paramètre automatique (dont je ne me rappele plus la fonction).

Donc, que dois-je modifier dans le script radar.php pour qu'il accepte trois paramètres?
Ou dois-je utiliser et réécrire ce script en fonction pour m'en servir?
Commenter la réponse de zeldoi5
zeldoi5 58 Messages postés mercredi 13 octobre 2004Date d'inscription 13 novembre 2005 Dernière intervention - 30 mars 2005 à 16:39
0
Utile
malalam : mes requêtes renvoient les bons résultats (j'ai fait des echo pour voir et ça semble bon)
Merci pour votre patience à mon égard...
Commenter la réponse de zeldoi5
malalam 10918 Messages postés lundi 24 février 2003Date d'inscription 2 mars 2010 Dernière intervention - 30 mars 2005 à 16:46
0
Utile
Mais il est ou radar.php ? Parce que la ce que je vois, ce sont juste
des appels a une classe et a ses methodes, classe qui doit provenir de
JPgraph donc, mais dont on ne sait rien. Il n'y a aucune fonction
propre la, ou classe a toi ? Ton script ne fait qu'appeler des
fonctions existantes, ce sont CES fonctions qui doivent etre modifiees
pour accepter tes valeurs, ou alors, a toi d'adapter tes valeurs poiur
qu'elles soient acceptes par ces classes.
Commenter la réponse de malalam
malalam 10918 Messages postés lundi 24 février 2003Date d'inscription 2 mars 2010 Dernière intervention - 30 mars 2005 à 16:48
0
Utile
Et puis il faut qu'on sache ce que tu veux que ca donne lol...

que renvoient tes 3 requetes exactement ? donne un exemple? Et que doit faire ce script au juste, et ces 2 classes donc ?

A partir de la on va pouvoir essayer de t'aider :-)
Commenter la réponse de malalam
zeldoi5 58 Messages postés mercredi 13 octobre 2004Date d'inscription 13 novembre 2005 Dernière intervention - 30 mars 2005 à 22:23
0
Utile
Bon, c'est pas très clair (surtout pour moi!!)



Alors j'ai un premier fichier qui lancé me calcule trois paramètres par
le biais de requêtes, voici ce fichier (j'omets ici de mettre les
balises html....), donc voici ce fichier calcul :



//Code de conenxion au serveur de BDD
$idConnexion = mysql_connect($myServer, "", "");
$connexionReussie = mysql_select_db($myDB) or die("Impossible de se connecter à la base de données $myDB. ");

//Requêtes SQL (basiques!)
$query = "select AVG(TR) from mesure_lan";
$query2 = "select AVG(TR) from mesure_messagerie";
$query3 = "select AVG(TR) from mesure_connect";

//Execution des requêtes SQL
$result = mysql_query($query);
$result2 = mysql_query($query2);
$result3 = mysql_query($query3);

//Résultats des requêtes SQL

$row = mysql_fetch_row($result);
echo "Temps de réponse moyen : $row[0] ";
$row2 = mysql_fetch_row($result2);
echo "Temps de réponse moyen de la messagerie : $row2[0] ";
$row3 = mysql_fetch_row($result3);
echo "Temps de réponse moyen de la connectivité : $row3[0] ";


Ensuite, j'ai un second ficher,
nommé radar.php, qui est (pour le moment) statique, qui est chargé de
tracer un radar via la librairie graphique Jpgraph en prenant les
coordonnées que je vais nommer ici X Y et Y, voici le fichier sus radar.php :



Commenter la réponse de zeldoi5
malalam 10918 Messages postés lundi 24 février 2003Date d'inscription 2 mars 2010 Dernière intervention - 31 mars 2005 à 10:57
0
Utile
Lol, on va pas s'en sortir ;-)

Y a quoi dans ce fichier radar.php ?

Je veux dire, si tu veux que l'on tente de te dire comment tu peux utiliser

$plot = new RadarPlot(array(X,Y,Z));

en remplacant X Y et Z par les resultats obtenus par tes requetes, il faudrait voir comment est construite la classe RadarPlot..

Sinon, a vue de nez, je dirai : rien. Si tes 3 requetes renvoient de
bons resultats ( a savoir des int, 3 chiffres entiers quoi, qui peuvent
correspondre a des axes), tu peux tres bien les mettres.

Ca donnera un truc du genre :


$plot = new RadarPlot(array($row[0},$row1[0],$row2[0]));



SI tes requetes ne renvoient qu'un seul resultat.
Commenter la réponse de malalam
zeldoi5 58 Messages postés mercredi 13 octobre 2004Date d'inscription 13 novembre 2005 Dernière intervention - 31 mars 2005 à 11:25
0
Utile
Je ne sais pas ce qu'il y a dans RadarPlot, car c'est la classe qui est fournie par Jpgraph. Je m'en sers juste pour contruire le radar.
Mais c'est vrai que je n'avais pas pensé de faire direct appel à RadarPlot... Je vais essayer!!
Merci pour ta patience! Je te tiens au courant!
Commenter la réponse de zeldoi5
zeldoi5 58 Messages postés mercredi 13 octobre 2004Date d'inscription 13 novembre 2005 Dernière intervention - 31 mars 2005 à 11:55
0
Utile
Bon ya du mieux, mais ça ne fonctionne toujours pas...$
D'abord, j'ai testé comme tu m'as dit, à savoir mettre directement :

$graph = new RadarGraph(500,300,"auto");
$plot = new RadarPlot(array( $row[0],$row2[0],$row3[0] ));
$graph->Add($plot);
$graph->Stroke();

Et ça ne m'affiche pas l'image, ça me mets :
300500‰PNG  IHDR,ôr‡` IDATxœíÝ\TUþ?ðÃïšbƒéŽZ©HF"¢cøs"¨V7ÛOòQtËLc|u!t¿ßÏgkwk!­m]­ÅMÐÅÚÜr×0K×û°Fm–ŽÕ‚ * ‚ðýãÈézÍ™a†3üž =`¼sç2Ì‹sï9ç¾O€þÕÓÓ#ý6˜ÒÜÐ è`üN´Á {$PÈqƒ†ú¶»,xrýzÑG}â!L>= .!!Ú`ˆ6 #GÞ:eÊÿ>þx_v8==}Ó3Ï8Ü,ã®»<úïûþW>ôÐsüãož|Ò]‡$Åù.Qw/XÐÇ_ŠC·N™ò|q±G_¢<|5ßá¿>ÿ<4$äž»ï¾çî»ïÌÈHJLüÏþÓ—fÝyç­“&9ܬ¦¶Ö~út_^ÈÓûÏÊÌÜöüóݳÇá–)iiھݹó½KÔÑ·ß>sæŒSûwÖ©S§ªª«=úB‹>^ÓÒÒ¶nÞ쮽ýbíZžÍ.^¼è®WôÜþçΙóñûï;ÜìÄ_|ôñÇ,[Æ¿gÎw©?uww‹>÷󍖐ÒÝÝ}ú«¯Ê÷íûÍ“O®ÌÍýüÄ BˆíèÑÌ{îuÓMCccïúþ÷UyçÝw3îºk¸Ñ˜6cÆßþþwº·´3žzúiÕÚõÒK)ii†‘#oŸ3‡ç<»ys\Bˆѣï[´èëo¾Q}âmS§®ÌÍýþ½÷7xè!­—VÝ¿ê–Ê*©>Q&uúô£GB^|饡±±3çÎUÝyÙ®]·M:Ühü .Hß%廪ê㪪´3

Et encore je ne mets pas tout....
Ensuite je me suis dit, je vais faire une fonction que j'appelerai de la sorte :
$radar3=radar_3axis( avec les bons paramètres qui vont bien );
Et dans la source de la fonction je construis le radar de la même façon que l'on a vu précédemment...
Mais ça ne marche toujours pas : j'ai toujours un truc incompréhensible :
300500‰PNG  IHDR,ôr‡` IDATxœíÝ\TUþ?ðÃïšbƒéŽZ©HF"¢cøs"¨V7ÛOòQtËLc|u!t¿ßÏgkwk!­m]­ÅMÐÅÚÜr×0K×û°Fm–ŽÕ‚ * ‚ðýãÈézÍ™a†3üž =`¼sç2Ì‹sï9ç¾O€þÕÓÓ#ý6˜ÒÜÐ è`üN´Á {$PÈqƒ†ú¶»,xrýzÑG}â!L>=.!!Ú`ˆ6 #GÞ:eÊÿ>þx_v8==}Ó3Ï8Ü,ã®»<úïûþW>ôÐsüãož|Ò]‡$Åù.Qw/XÐÇ_ŠC·N™ò|q±G_¢<|5ßá¿>ÿ<4$äž»ï¾çî»ïÌÈHJLüÏþÓ—fÝyç­“&9ܬ¦¶Ö~út_^ÈÓûÏÊÌÜöüóݳÇá–)iiھݹó½KÔÑ·ß>sæŒSûwÖ©S§ªª«=úB‹>^ÓÒÒ¶nÞ쮽ýbíZžÍ.^¼è®WôÜþçΙóñûï;ÜìÄ_|ôñÇ,[Æ¿gÎw©?uww‹>÷󍖐ÒÝÝ}ú«¯Ê÷íûÍ“O®ÌÍýüÄ BˆíèÑÌ{îuÓMCccïúþ÷UyçÝw3îºk¸Ñ˜6cÆßþþwº·´3žzúiÕÚõÒK)ii†‘#oŸ3‡ç<»ys\Bˆѣï[´èëo¾Q}âmS§®ÌÍýþ½÷7xè!­—VÝ¿ê–Ê*©>Q&uúô£GB^|饡±±3çÎUÝyÙ®]·M:Ühü .Hß%廪ê㪪´3

Donc c'est que ça fait la même chose, la faute n'est pas à la fonction mais à l'affichage de l'image au format png (et aux tailles 300*500 comme on peut le lire..)

Je suis bloqué, le passage de paramètres est maintenant effectif, et je t'en remercie, mais ça merde avec JpGraph.... Ca sort du petit domaine de mes compétances...
Commenter la réponse de zeldoi5
malalam 10918 Messages postés lundi 24 février 2003Date d'inscription 2 mars 2010 Dernière intervention - 31 mars 2005 à 13:41
0
Utile
Re,



je vais pas pouvoir t'aider sans cette classe radar, au moins. Tu
l'utilises, donc tu l'as quelquepart, lol. Si tu la trouves, tu peux
tjrs, si elle n#est pas trop longue, la mettre ici et on verra.
Commenter la réponse de malalam
zeldoi5 58 Messages postés mercredi 13 octobre 2004Date d'inscription 13 novembre 2005 Dernière intervention - 31 mars 2005 à 14:10
0
Utile
Ben elle est pas mal longue :

//===================================================
// CLASS RadarGraph
// Description: Main container for a spider graph
//===================================================
class RadarGraph extends Graph {
var $posx;
var $posy;
var $len;
var $plots=null, $axis_title=null;
var $grid,$axis=null;
//---------------
// CONSTRUCTOR
function RadarGraph($width=300,$height=200,$cachedName="",$timeout=0,$inline=1) {
$this->Graph($width,$height,$cachedName,$timeout,$inline);
$this->posx=$width/2;
$this->posy=$height/2;
$this->len=min($width,$height)*0.35;
$this->SetColor(array(255,255,255));
$this->SetTickDensity(TICKD_NORMAL);
$this->SetScale("lin");
$this->SetGridDepth(DEPTH_FRONT);


}


//---------------
// PUBLIC METHODS
function SupressTickMarks($f=true) {
if( ERR_DEPRECATED )
JpGraphError::Raise('RadarGraph::SupressTickMarks() is deprecated. Use HideTickMarks() instead.');
$this->axis->scale->ticks->SupressTickMarks($f);
}


function HideTickMarks($aFlag=true) {
$this->axis->scale->ticks->SupressTickMarks($aFlag);
}

function ShowMinorTickmarks($aFlag=true) {
$this->yscale->ticks->SupressMinorTickMarks(!$aFlag);
}

function SetScale($axtype,$ymin=1,$ymax=1) {
if( $axtype != "lin" && $axtype != "log" ) {
JpGraphError::Raise("Illegal scale for spiderplot ($axtype). Must be "lin" or "log"");
}
if( $axtype=="lin" ) {
$this->yscale = & new LinearScale($ymin,$ymax);
$this->yscale->ticks = & new RadarLinearTicks();
$this->yscale->ticks->SupressMinorTickMarks();
}
elseif( $axtype=="log" ) {
$this->yscale = & new LogScale($ymin,$ymax);
$this->yscale->ticks = & new RadarLogTicks();
}

$this->axis = & new RadarAxis($this->img,$this->yscale);
$this->grid = & new RadarGrid();
}


function SetSize($aSize) {
if( $aSize<0.1 || $aSize>1 )
JpGraphError::Raise("Radar Plot size must be between 0.1 and 1. (Your value=$s)");
$this->len=min($this->img->width,$this->img->height)*$aSize/2;
}


function SetPlotSize($aSize) {
$this->SetSize($aSize);
}


function SetTickDensity($densy=TICKD_NORMAL) {
$this->ytick_factor=25;
switch( $densy ) {
case TICKD_DENSE:
$this->ytick_factor=12;
break;
case TICKD_NORMAL:
$this->ytick_factor=25;
break;
case TICKD_SPARSE:
$this->ytick_factor=40;
break;
case TICKD_VERYSPARSE:
$this->ytick_factor=70;
break;
default:
JpGraphError::Raise("RadarPlot Unsupported Tick density: $densy");
}
}


function SetPos($px,$py=0.5) {
$this->SetCenter($px,$py);
}


function SetCenter($px,$py=0.5) {
assert($px > 0 && $py > 0 );
$this->posx=$this->img->width*$px;
$this->posy=$this->img->height*$py;
}


function SetColor($c) {
$this->SetMarginColor($c);
}

function SetTitles($title) {
$this->axis_title = $title;
}


function Add(&$splot) {
$this->plots[]=$splot;
}

function GetPlotsYMinMax() {
$min=$this->plots[0]->Min();
$max=$this->plots[0]->Max();
foreach( $this->plots as $p ) {
$max=max($max,$p->Max());
$min=min($min,$p->Min());
}
if( $min < 0 )
JpGraphError::Raise("Minimum data $min (Radar plots only makes sence to use when all data points > 0)");
return array($min,$max);
}


// Stroke the Radar graph
function Stroke($aStrokeFileName="") {
// Set Y-scale
if( !$this->yscale->IsSpecified() && count($this->plots)>0 ) {
list($min,$max) = $this->GetPlotsYMinMax();
$this->yscale->AutoScale($this->img,0,$max,$this->len/$this->ytick_factor);
}
// Set start position end length of scale (in absolute pixels)
$this->yscale->SetConstants($this->posx,$this->len);

// We need as many axis as there are data points
$nbrpnts=$this->plots[0]->GetCount();

// If we have no titles just number the axis 1,2,3,...
if( $this->axis_title==null ) {
for($i=0; $i < $nbrpnts; ++$i )
$this->axis_title[$i] = $i+1;
}
elseif(count($this->axis_title)<$nbrpnts)
JpGraphError::Raise("Number of titles does not match number of points in plot.");
for($i=0; $i<count($this->plots); ++$i )
if( $nbrpnts != $this->plots[$i]->GetCount() )
JpGraphError::Raise("Each spider plot must have the same number of data points.");


if( $this->background_image != "" ) {
$this->StrokeFrameBackground();
}
else {
$this->StrokeFrame();
}
$astep=2*M_PI/$nbrpnts;


// Prepare legends
for($i=0; $i<count($this->plots); ++$i)
$this->plots[$i]->Legend($this);
$this->legend->Stroke($this->img);
$this->footer->Stroke($this->img);


if( $this->grid_depth == DEPTH_BACK ) {
// Draw axis and grid
for( $i=0,$a=M_PI/2; $i < $nbrpnts; ++$i, $a += $astep ) {
$this->axis->Stroke($this->posy,$a,$grid[$i],$this->axis_title[$i],$i==0);
}
}

// Plot points
$a=M_PI/2;
for($i=0; $i<count($this->plots); ++$i )
$this->plots[$i]->Stroke($this->img, $this->posy, $this->yscale, $a);

if( $this->grid_depth != DEPTH_BACK ) {
// Draw axis and grid
for( $i=0,$a=M_PI/2; $i < $nbrpnts; ++$i, $a += $astep ) {
$this->axis->Stroke($this->posy,$a,$grid[$i],$this->axis_title[$i],$i==0);
}
}
$this->grid->Stroke($this->img,$grid);
$this->StrokeTitles();

// Stroke texts
if( $this->texts != null ) {
foreach( $this->texts as $t)
$t->Stroke($this->img);
}


// Should we do any final image transformation
if( $this->iImgTrans ) {
if( !class_exists('ImgTrans') ) {
require_once('jpgraph_imgtrans.php');
}

$tform = new ImgTrans($this->img->img);
$this->img->img = $tform->Skew3D($this->iImgTransHorizon,$this->iImgTransSkewDist,
$this->iImgTransDirection,$this->iImgTransHighQ,
$this->iImgTransMinSize,$this->iImgTransFillColor,
$this->iImgTransBorder);
}

// If the filename is given as the special "__handle"
// then the image handler is returned and the image is NOT
// streamed back
if( $aStrokeFileName == _IMG_HANDLER ) {
return $this->img->img;
}
else {
// Finally stream the generated picture
$this->cache->PutAndStream($this->img,$this->cache_name,$this->inline,
$aStrokeFileName);
}
}
} // Class
Commenter la réponse de zeldoi5

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.