Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

STATISTIQUE GRAPHIQUE (COMPOSANT ARTICHOW)


Information sur la source

Catégorie :Graphique Classé sous : graphique, camembert, statistique, artichow, courbe Niveau : Débutant Date de création : 01/07/2008 Date de mise à jour : 07/08/2008 12:50:10 Vu / téléchargé: 7 817 / 580

Note :
10 / 10 - par 4 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (67)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
Une librairie très intéressante pour les statistiques: http://www.artichow.org
Mais je n'ai rien trouvé de "prêt à l'emploi" pour cette librairie, donc je m'y suis mis, pour l'instant je ne gère que les camemberts et les courbes mais il est très simple d'étendre le système aux autres types de graphique (dès que je le fais je mettrais à jour la source).

Normalement il vous suffit de mettre l'include et vous pouvez créer un graphique avec preload en quelques lignes de code !!! Dans les exemples les tableaux de données sont en dur mais ils peuvent très bien provenir d'une base de données !!

Attention le dossier 'cache' situé dans le dossier 'artichow-1.1.0' doit avoir les droits d'écriture (c'est la que les png sont générés)

Certains vont dire que ma source est pas propre, que j'aurais du faire de l'objet, du PHP5 etc...etc... en fait j'ai fais ce que j'ai pu avec ce que j'avais (limité à PHP 4.3) par contre je prends toutes les critiques constructives et les propositions d'amélioration !


 

Source

  • <?php
  • session_start();
  • ?>
  • <html>
  • <head>
  • <title>Exemple MyArtiChow</title>
  • </head>
  • <body>
  • <a href="index2.php">Version sans anti-alias</a>
  • <?php
  • // Permet de lancer un traitement lorsque toutes les images sont chargées...
  • $checkStatImagesOnAllComplete = 'alert("Toutes les images sont chargées !");';
  • // Include avec toutes mes fonctions qui vont bien...
  • include('artichow-1.1.0/statistiques_include.php');
  • /****************************************************** LES CAMEMBERTS *****************************************************/
  • /********* EXEMPLE 1 (simple) **********/
  • // Titre du camembert
  • $title = "EXEMPLE 1 (simple) :";
  • // Largeur du camembert
  • $width = 750;
  • // Hauteur du camembert
  • $height = 400;
  • // Tableau des légendes
  • $legend = array('Titi','Toto','Tata','Les autres');
  • // Tabeau des valeurs
  • $data = array(38,28,7,37);
  • // On crée l'image
  • insertStatImage(1,$width,$height,$title,$legend,$data,'');
  • echo'</br></br>';
  • /********* EXEMPLE 2 (mise en forme des légendes) **********/
  • // Titre du camembert
  • $title = "EXEMPLE 2 (mise en forme des légendes) :";
  • // Largeur du camembert
  • $width = 750;
  • // Hauteur du camembert
  • $height = 400;
  • // Tableau des légendes
  • $legend = array('ABCDEF','GHIJKL','MNOPQRS','TUVWXYZ');
  • // Tabeau des valeurs
  • $data = array(110,25,86,42);
  • // On met en forme les légendes
  • foreach($legend as $key => $value){
  • if(strlen($value)>30){
  • $lbl = substr($value,0,27).'...';
  • }
  • else{
  • $lbl = str_pad($value,30,'.');
  • }
  • $legends[] = str_pad($lbl,35-strlen($data[$key]),'.').$data[$key];
  • $datas[] = $data[$key];
  • }
  • // On crée l'image
  • insertStatImage(1,$width,$height,$title,$legends,$datas,'');
  • echo'</br></br>';
  • /********* EXEMPLE 3 (tri par ordre décroissant) **********/
  • // Titre du camembert
  • $title = "EXEMPLE 3 (tri par ordre décroissant) :";
  • // Largeur du camembert
  • $width = 750;
  • // Hauteur du camembert
  • $height = 400;
  • // Tableau des légendes
  • $legend = array('Titi','Toto','Tata','Les autres');
  • // Tabeau des valeurs
  • $data = array(16,25,2,34);
  • // Tri par ordre décroissant
  • array_multisort($data, SORT_DESC, $legend, SORT_ASC);
  • // On crée l'image
  • insertStatImage(1,$width,$height,$title,$legend,$data,'');
  • echo'</br></br>';
  • /********* EXEMPLE 4 (couleurs personnalisées) **********/
  • // Titre du camembert
  • $title = "EXEMPLE 4 (couleurs personnalisées) :";
  • // Largeur du camembert
  • $width = 750;
  • // Hauteur du camembert
  • $height = 400;
  • // Tableau des légendes
  • $legend = array('Titi','Toto','Tata','Les autres');
  • // Tabeau des valeurs
  • $data = array(16,25,2,34);
  • // Tabeau des couleurs
  • $color = array('#92DDF3','#5C69AA','#A35E9E','#DF6C6C');
  • // On met en forme les légendes
  • foreach($legend as $key => $value){
  • if(strlen($value)>30){
  • $lbl = substr($value,0,27).'...';
  • }
  • else{
  • $lbl = str_pad($value,30,'.');
  • }
  • $legends2[] = str_pad($lbl,35-strlen($data[$key]),'.').$data[$key];
  • $datas2[] = $data[$key];
  • $colors2[] = $color[$key];
  • }
  • // Tri par ordre décroissant
  • array_multisort($datas2, SORT_DESC, $legends2, SORT_ASC, $colors2);
  • // On crée l'image
  • insertStatImage(1,$width,$height,$title,$legends2,$datas2,$colors2);
  • echo'</br></br>';
  • /********* EXEMPLE 5 (on passe une seule couleur et il s'occupe du dégradé) **********/
  • // Titre du camembert
  • $title = "EXEMPLE 5 (dégradé de couleurs) :";
  • // Largeur du camembert
  • $width = 750;
  • // Hauteur du camembert
  • $height = 400;
  • // Tableau des légendes
  • $legend = array('Titi','Toto','Tata','Les autres');
  • // Tabeau des valeurs
  • $data = array(38,28,7,37);
  • // On met en forme les légendes
  • foreach($legend as $key => $value){
  • if(strlen($value)>30){
  • $lbl = substr($value,0,27).'...';
  • }
  • else{
  • $lbl = str_pad($value,30,'.');
  • }
  • $legends3[] = str_pad($lbl,35-strlen($data[$key]),'.').$data[$key];
  • $datas3[] = $data[$key];
  • }
  • // Tabeau des couleurs (on passe la couleur de base, il va créer un dégradé)
  • $color = array('#5C69AA');
  • // Tri par ordre décroissant
  • array_multisort($datas3, SORT_DESC, $legends3, SORT_ASC);
  • // On crée l'image
  • insertStatImage(1,$width,$height,$title,$legends3,$datas3,$color);
  • echo'</br></br>';
  • /****************************************************** LES COURBES *****************************************************/
  • /********* EXEMPLE 1 (Courbe simple...) **********/
  • // Tableau des légendes
  • $legend = array('Titi','Toto');
  • // Tabeau des valeurs
  • $data2[] = array(5,11,10,8,12,0);
  • $data2[] = array(30,25,28,29,34,25);
  • // Tabeau des couleurs
  • $color2 = array('#5C69AA','#DF6C6C');
  • $title = " EXEMPLE 1 (Courbe simple...)";
  • $width = 750;
  • $height = 500;
  • insertStatImage(2,$width,$height,$title,$legend,$data2,$color2);
  • echo'</br></br>';
  • /********* EXEMPLE 2 (Des belles courbes...) **********/
  • // Tableau des légendes
  • $legend = array('Titi','Toto','Tata','Les autres');
  • // Mise en forme des légendes
  • foreach($legend as $key => $value){
  • if(strlen($value)>15){
  • $lbl = substr($value,0,14).'.';
  • }
  • else{
  • $lbl = str_pad($value, 15 , ' ');
  • }
  • $legend[$key] = $lbl;
  • }
  • // Tabeau des valeurs
  • $data3[] = array(0,9,8,0,5,15);
  • $data3[] = array(12,16,18,25,28,20);
  • $data3[] = array(5,11,10,8,12,0);
  • $data3[] = array(30,25,28,29,34,25);
  • // Tabeau des couleurs
  • $color3 = array('#92DDF3','#5C69AA','#A35E9E','#DF6C6C');
  • // Tableau des libelles de l'axe des abcisses
  • $lblAbs = array('01/2008','02/2008','03/2008','04/2008','05/2008','06/2008');
  • $title = " EXEMPLE 2 (Des belles courbes...)";
  • $width = 750;
  • $height = 500;
  • insertStatImage(2,$width,$height,$title,$legend,$data3,$color3,$lblAbs);
  • echo'</br></br>';
  • ?>
  • </body>
  • </html>
<?php
session_start();
?>
<html>
<head>
<title>Exemple MyArtiChow</title>
</head>
<body>
<a href="index2.php">Version sans anti-alias</a>
<?php
// Permet de lancer un traitement lorsque toutes les images sont chargées...
$checkStatImagesOnAllComplete = 'alert("Toutes les images sont chargées !");';

// Include avec toutes mes fonctions qui vont bien...
include('artichow-1.1.0/statistiques_include.php');


/****************************************************** LES CAMEMBERTS *****************************************************/

/*********   EXEMPLE 1 (simple)   **********/

// Titre du camembert
$title = "EXEMPLE 1 (simple) :";

// Largeur du camembert
$width = 750;

// Hauteur du camembert
$height = 400;

// Tableau des légendes
$legend = array('Titi','Toto','Tata','Les autres');

// Tabeau des valeurs
$data = array(38,28,7,37);

// On crée l'image
insertStatImage(1,$width,$height,$title,$legend,$data,'');

echo'</br></br>';




/*********   EXEMPLE 2 (mise en forme des légendes)   **********/

// Titre du camembert
$title = "EXEMPLE 2 (mise en forme des légendes) :";

// Largeur du camembert
$width = 750;

// Hauteur du camembert
$height = 400;

// Tableau des légendes
$legend = array('ABCDEF','GHIJKL','MNOPQRS','TUVWXYZ');

// Tabeau des valeurs
$data = array(110,25,86,42);

// On met en forme les légendes
foreach($legend as $key => $value){
	if(strlen($value)>30){
		$lbl = substr($value,0,27).'...';
	}
	else{
		$lbl = str_pad($value,30,'.');
	}
	$legends[] = str_pad($lbl,35-strlen($data[$key]),'.').$data[$key];
	$datas[] = $data[$key];
}

// On crée l'image
insertStatImage(1,$width,$height,$title,$legends,$datas,'');

echo'</br></br>';




/*********   EXEMPLE 3 (tri par ordre décroissant)   **********/

// Titre du camembert
$title = "EXEMPLE 3 (tri par ordre décroissant) :";

// Largeur du camembert
$width = 750;

// Hauteur du camembert
$height = 400;

// Tableau des légendes
$legend = array('Titi','Toto','Tata','Les autres');

// Tabeau des valeurs
$data = array(16,25,2,34);

// Tri par ordre décroissant
array_multisort($data, SORT_DESC, $legend, SORT_ASC);

// On crée l'image
insertStatImage(1,$width,$height,$title,$legend,$data,'');

echo'</br></br>';





/*********   EXEMPLE 4 (couleurs personnalisées)   **********/

// Titre du camembert
$title = "EXEMPLE 4 (couleurs personnalisées) :";

// Largeur du camembert
$width = 750;

// Hauteur du camembert
$height = 400;

// Tableau des légendes
$legend = array('Titi','Toto','Tata','Les autres');

// Tabeau des valeurs
$data = array(16,25,2,34);

// Tabeau des couleurs
$color = array('#92DDF3','#5C69AA','#A35E9E','#DF6C6C');

// On met en forme les légendes
foreach($legend as $key => $value){
	if(strlen($value)>30){
		$lbl = substr($value,0,27).'...';
	}
	else{
		$lbl = str_pad($value,30,'.');
	}
	$legends2[] = str_pad($lbl,35-strlen($data[$key]),'.').$data[$key];
	$datas2[] = $data[$key];
	$colors2[] = $color[$key];
}

// Tri par ordre décroissant
array_multisort($datas2, SORT_DESC, $legends2, SORT_ASC, $colors2);

// On crée l'image
insertStatImage(1,$width,$height,$title,$legends2,$datas2,$colors2);

echo'</br></br>';





/*********   EXEMPLE 5 (on passe une seule couleur et il s'occupe du dégradé)   **********/

// Titre du camembert
$title = "EXEMPLE 5 (dégradé de couleurs) :";

// Largeur du camembert
$width = 750;

// Hauteur du camembert
$height = 400;

// Tableau des légendes
$legend = array('Titi','Toto','Tata','Les autres');

// Tabeau des valeurs
$data = array(38,28,7,37);

// On met en forme les légendes
foreach($legend as $key => $value){
	if(strlen($value)>30){
		$lbl = substr($value,0,27).'...';
	}
	else{
		$lbl = str_pad($value,30,'.');
	}
	$legends3[] = str_pad($lbl,35-strlen($data[$key]),'.').$data[$key];
	$datas3[] = $data[$key];
}

// Tabeau des couleurs (on passe la couleur de base, il va créer un dégradé)
$color = array('#5C69AA');

// Tri par ordre décroissant
array_multisort($datas3, SORT_DESC, $legends3, SORT_ASC);

// On crée l'image
insertStatImage(1,$width,$height,$title,$legends3,$datas3,$color);

echo'</br></br>';





/****************************************************** LES COURBES *****************************************************/


/*********   EXEMPLE 1 (Courbe simple...)   **********/

// Tableau des légendes
$legend = array('Titi','Toto');

// Tabeau des valeurs
$data2[] = array(5,11,10,8,12,0);
$data2[] = array(30,25,28,29,34,25);

// Tabeau des couleurs
$color2 = array('#5C69AA','#DF6C6C');

$title = " EXEMPLE 1 (Courbe simple...)";
$width = 750;
$height = 500;

insertStatImage(2,$width,$height,$title,$legend,$data2,$color2);

echo'</br></br>';



/*********   EXEMPLE 2 (Des belles courbes...)   **********/

// Tableau des légendes
$legend = array('Titi','Toto','Tata','Les autres');
// Mise en forme des légendes
foreach($legend as $key => $value){
	if(strlen($value)>15){
		$lbl = substr($value,0,14).'.';
	}
	else{
		$lbl = str_pad($value, 15 , ' ');
	}
	$legend[$key] = $lbl;
}

// Tabeau des valeurs
$data3[] = array(0,9,8,0,5,15);
$data3[] = array(12,16,18,25,28,20);
$data3[] = array(5,11,10,8,12,0);
$data3[] = array(30,25,28,29,34,25);

// Tabeau des couleurs
$color3 = array('#92DDF3','#5C69AA','#A35E9E','#DF6C6C');

// Tableau des libelles de l'axe des abcisses
$lblAbs = array('01/2008','02/2008','03/2008','04/2008','05/2008','06/2008');

$title = " EXEMPLE 2 (Des belles courbes...)";
$width = 750;
$height = 500;

insertStatImage(2,$width,$height,$title,$legend,$data3,$color3,$lblAbs);

echo'</br></br>';

?>
</body>
</html>

Conclusion

Attention le dossier 'cache' situé dans le dossier 'artichow-1.1.0' doit avoir les droits d'écriture (c'est la que les png sont générés)

Tout est dans le zip !
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

07 juillet 2008 18:42:00 :
Ajout des courbes. Amélioration du preload. Possibilité de passer une seule couleur lors de la création d'un camembert, les autres seront générées en dégradé.
07 juillet 2008 18:45:19 :
Mise à jour de la capture
07 juillet 2008 18:45:57 :
Mise à jour de la capture
07 juillet 2008 18:48:14 :
Mise à jour de la capture
10 juillet 2008 11:52:00 :
Création d'un numéro de version pour mieux m'y repérer (je suis passé direct à la v2 !!!) Amélioration du code généré, du preload (encore !) Modification du système de génération des images, l'ancien système (envoi direct des images par le fichier php) ne permettait pas d'utiliser les fonctionnalités du clic droit sur une image (sous IE) et ne permettait pas d'imprimer la page (une image d'erreur rouge apparaissait à la place des graphiques). Le nouveau système autorise toutes les fonctionnalités du clic droit : enregistrer l'image, envoyer par email, imprimer l'image, et même copier l'image puis coller dans word, excel, powerpoint etc... Ajout de la possibilité de lancer des commandes javascript une fois toutes les images chargées (je m'en sert par exemple pour lancer l'impression afin de ne pas imprimer les image 'en cours de chargement'...) Attention le dossier 'cache' situé dans le dossier 'artichow-1.1.0' doit avoir les droits d'écriture (c'est la que les png sont générés)
11 juillet 2008 10:07:26 :
Il ne faut pas remettre à demain ce que l'on peut faire le jour même !!! ajout de l'option pour désactiver l'antialias lors de l'appel de la fonction insertStatImage, et effectivement les images sont beaucoup moins longues à générer !!! (voir exemple de camembert N°1) insertStatImage($imageType,$width,$height,$title,$legend,$data,$color,$lblAbs=NULL,$antiAlias=TRUE)
11 juillet 2008 11:01:54 :
Mise à jour du zip qui contient maintenant 2 fichiers d'exemple, un avec antialias et un sans !! cela permet de faire des tests de performance et chez moi sans antialias la page met environ 4 a 5 secondes à se charger et avec antialias c'est plutôt 14 a 15 secondes !!! dans mes formulaires qui génèrent des graphiques je laisse maintenant le choix à l'utilisateur entre qualité 'standard' et qualité 'haute' ....
17 juillet 2008 12:03:02 :
J'ai simplement refait le zip en vidant le dossier cache qui contenait tout mes tests !!!
17 juillet 2008 12:13:05 :
Ben finalement j'ai remis les quelques fichiers de l'exemple dans le dossier cache sinon QuickZip ne prend carrément pas le dossier cache !!....
06 août 2008 14:17:27 :
Correction d'une erreur de libellé....
07 août 2008 12:50:14 :
Création d'un nouvel exemple avec la fonction de dégradé de couleurs (on ne passe que la couleur de base et les autres sont calculées...)

Commentaires et avis

signaler à un administrateur
Commentaire de crazygogo le 01/07/2008 14:55:09

Je prends toutes les critiques constructives et les propositions d'amélioration !

signaler à un administrateur
Commentaire de GillesWebmaster le 07/07/2008 09:50:52 10/10

Sans avoir vu le code: la perspective de ton image est bonne: ton camembert est penché vers l'avant; ouf!
Après au niveau code: c'est pas un peu lourd de faire de l'orienté objet?
Bref le résultat est là donc 10/10!

signaler à un administrateur
Commentaire de crazygogo le 07/07/2008 18:44:10

Merci. J'ai ajouté les courbes et amélioré le preload.

signaler à un administrateur
Commentaire de GillesWebmaster le 07/07/2008 18:47:22

C'est plus du 10/10 mais 100/10!!!

signaler à un administrateur
Commentaire de crazygogo le 07/07/2008 18:52:11

Merci, il faut encore améliorer tout ça, beaucoup de valeurs sont en dur dans les fichiers include, il faut que j'offre la possibilité de les paramétrer... enfin c'est un bon début !
Le plus dur ça a été de mettre à jour la capture d'écran !!! (firefox m'affichait toujours l'ancienne... problème de cache...)

;D

signaler à un administrateur
Commentaire de GillesWebmaster le 07/07/2008 18:55:05

moi aussi!!!

signaler à un administrateur
Commentaire de crazygogo le 10/07/2008 11:54:27

Plus de 80 téléchargements et seulement une personne a donné son avis...

Je rappelle que je prends toutes les critiques constructives et les propositions d'amélioration !

:p :p :p

signaler à un administrateur
Commentaire de GillesWebmaster le 10/07/2008 12:01:54

De toute façon, si quelqu'un rajoute un commentaire, la note risque fortement de descendre...

signaler à un administrateur
Commentaire de crazygogo le 10/07/2008 12:08:07

ah ? pourquoi ? c'est sur qu'elle ne peut pas monter !!! mais de la à descendre fortement... c'est si nul que ça ?...

signaler à un administrateur
Commentaire de GillesWebmaster le 10/07/2008 12:09:49

Moi je trouve proche de la perfection (d'où mon dix sur dix)
mais disons que les autres membres... sont plus ... "exigeants"!

signaler à un administrateur
Commentaire de crazygogo le 10/07/2008 12:20:01

oui c'est clair, c'est surtout qu'ils vont aller voir le source et dire: c'est nul il faut faire du php5, de l'objet, c'est pas propre etc....
je conçois volontiers que mon source a besoin de beaucoup d'améliorations, si il était parfait je n'aurais pas besoin de demander vos conseils !!! après tout dépend de comment ils sont faits... car certains sont spécialisés dans le "cassage de newbies" !!!!

signaler à un administrateur
Commentaire de GillesWebmaster le 10/07/2008 12:26:31

en effet!!!

signaler à un administrateur
Commentaire de opossum_farceur le 10/07/2008 19:23:45

Salut,
Bravo pour cette source et la librairie sur laquelle elle repose, qui a le mérite de mettre en oeuvre la mystérieuse fonction "imageantialias". Une question : cette fonction ne serait-elle pas responsable du temps important mis par le script pour générer chaque camembert?
Bye++

signaler à un administrateur
Commentaire de crazygogo le 11/07/2008 09:27:19

C'est fort possible... dans ce cas j'ai fais une erreur de l'activer par défaut... il faut que je modifie ma source pour permettre d'activer ou non l'antialias pour chaque graphique que l'on veut générer.

Merci pour l'idée.

signaler à un administrateur
Commentaire de GillesWebmaster le 11/07/2008 09:36:31

Bonne idée!

signaler à un administrateur
Commentaire de crazygogo le 11/07/2008 10:10:00

C'est fait !
Merci pour l'idée parce que bêtement je n'y avais même pas pensé alors que c'est sur que les calculs d'antialiasing sont la partie du code qui prenait le plus de temps d'execution.... c'est exactement pour ça que je poste mon code ici !!!
Par défaut il est activé mais il suffit de passer 'false' en dernier parametre de la fonction insertStatImage pour le désactiver...
insertStatImage($imageType,$width,$height,$title,$legend,$data,$color,$lblAbs=NULL,$antiAlias=TRUE)

Voir exemple de camembert N°1....

signaler à un administrateur
Commentaire de GillesWebmaster le 11/07/2008 10:17:16

En effet le code est nettement plus rapide!

signaler à un administrateur
Commentaire de opossum_farceur le 13/07/2008 00:48:40

Salut,
J'ai testé ta nouvelle version pour voir; chez moi, elle ne marche pas du tout (cas avec ou sans aa) : au cours de l'éxécution un message apparait furtivement (j'ai pas le temps de le lire), remplacé aussi sec par une boîte de dialogue "Toutes les images sont chargées" alors qu'il n'y en a aucune qui s'affiche!
a++

signaler à un administrateur
Commentaire de crazygogo le 13/07/2008 10:12:31

Comme je l'avais marqué dans les notes de mise à jour, la différence est que maintenant : "Attention le dossier 'cache' situé dans le dossier 'artichow-1.1.0' doit avoir les droits d'écriture (c'est la que les png sont générés)" par exemple sous linux il faut faire un chown apache sur le dossier 'cache'
dis-moi si cela résout ton problème ...

signaler à un administrateur
Commentaire de opossum_farceur le 14/07/2008 15:49:53

@crazygogo,

Je dev en local sous Windows et avec WampServer, et il n'y a pas de problèmes de droits d'écriture dans ce répertoire "cache"; ce dernier contenait à l'origine tout un tas de fichiers (que l'on voit dans le zip)  que j'ai supprimés depuis, ce qui m'a permis de constater que ton script n'y crée pas de fichiers...
Un message, écrit sur une image, s'affiche furtivement, sans que j'ai le temps de le lire.
Ton ancienne version fonctionne.

a++

signaler à un administrateur
Commentaire de crazygogo le 14/07/2008 16:03:59

essaye en activant le debug dans les premières lignes du fichier statistiques_include.php tu le met sur true :

// Activer le debug
$debug = true;

et la tu verras le message d'erreur normalement....
la différence entre l'ancienne version et celle-ci c'est que maintenant au lieu que le flux du png soit envoyé par une page php, un vrai png est généré dans le dossier cache puis envoyé au navigateur, pour moi si rien n'est créé dans le dossier cache c'est forcément lié à un problème de droits....

signaler à un administrateur
Commentaire de GillesWebmaster le 14/07/2008 16:26:41

certainement mais le CHMOD sour Windows... ?!?!

signaler à un administrateur
Commentaire de crazygogo le 14/07/2008 17:01:53

ben vu que c un serveur de développement local, essayer de donner le "contrôle total" à "tout le monde" dans les options de sécurité sur ce dossier...

signaler à un administrateur
Commentaire de cseagle le 15/07/2008 15:03:35

Bonjour,

Pour ma part en local voici le message d'erreur dont parlait opossum_farceur en activant le debug :

date() [function.date]:
It is not safe to rely on the system timezone setting the TZ environnement variable Or the date_default_timezone_set() function.
statistiques_genere_image.php ligne 191

signaler à un administrateur
Commentaire de crazygogo le 15/07/2008 15:23:31

Alors comme je l'ai dit malheureusement je ne peux que développer en PHP4, il semble que cette erreur soit liée à PHP5 (pouvez vous confirmer que vous utilisez bien PHP5 ?)

Dans le cas de PHP5 voici ce que j'ai trouvé (en anglais désolé pas le temps de traduire):

ERROR MESSAGE: date() [function.date]: It is not safe to rely on the system's timezone settings

If you receive the above error message, this is due to latest PHP5 date() function rewrite.

To solve this issue, simply edit your php.ini file and set your date.timezone value:

date.timezone = "Europe/Paris"

You can view supported timezone values at the PHP.net Website

After you set the date.timezone value, you will need to restart your web server.


Voila j'espère que ça corrige le problème chez vous ???...

signaler à un administrateur
Commentaire de GillesWebmaster le 03/08/2008 15:23:49

Moi j'utilise DATE et je le convertis en String avant la suite du code !
Bon c'est contourner le problème...

signaler à un administrateur
Commentaire de nlejeune le 06/08/2008 11:49:06

Excellent ton script, je me débattais avec artichow et ça m'a enlevé une épine du pied. Cependant j'ai un message d'erreur (debug actif) qui me dit:

Undefined index : imageFileName1 in G:\wamp\www\site\artichow\statistiques_genere_image.php on ligne 26.

Je suis en PHP5 avec la librairie Artichow pour PHP 4 & 5 version 1.1.0

ça correspond à la ligne:
$imageFileName = $_SESSION['imageFileName'.$imageID];

signaler à un administrateur
Commentaire de nlejeune le 06/08/2008 11:55:35 10/10

Bon ça doit être ma session qui ne marche pas ^^

signaler à un administrateur
Commentaire de crazygogo le 06/08/2008 11:58:09

as-tu bien le session_start(); au début de tes scripts ?
ou est-ce que mon fichier d'exemple ne fonctionne pas du tout ?

désolé je suis sous PHP4 et ne peut pas tester sous PHP5....

signaler à un administrateur
Commentaire de nlejeune le 06/08/2008 13:16:28

J'ai pourtant les session_start();
Vraiment space.

signaler à un administrateur
Commentaire de crazygogo le 06/08/2008 13:18:12

si tu les utilise tel quel, est-ce qu'un de mes fichiers exemple fonctionne ?

signaler à un administrateur
Commentaire de nlejeune le 06/08/2008 13:47:53

erf il faut aussi mettre le start_session dans l'include...
là ça marche :)

signaler à un administrateur
Commentaire de nlejeune le 06/08/2008 16:41:13

Erf en local ça marche nickel mais sur mon serveur sous ubuntu j'ai:
missing imageantialias() function.
Après qq recherche à priori ça vient de la manière de compiler mon php5, pour contourner le problème faut modifier le script :

artichow/php5/inc/drivers/gd.class.php.

Il faut remplacer la ligne 162

} else {

par

} elseif($bool==TRUE) {

signaler à un administrateur
Commentaire de crazygogo le 06/08/2008 18:03:47

ok, ben heureusement que t'as trouvé pasque je l'aurais pas eu celui la moi !!!

;-D

signaler à un administrateur
Commentaire de coucou747 le 08/08/2008 14:14:24

remplace :
} elseif($bool==TRUE) {
pat
} else if($bool) {

$imageType = round($_GET['imageType']);

pourquoi tu ne verifies pas l'existence de ce $_GET['imagetype'] ?

un truc qui me choque aussi : avant de declarer $imageFileName, tu supprimes la variable... et tu ne verifies pas que $_SESSION['imageFileName'.$imageID] existe...

# unset($imageFileName);
# $imageFileName = $_SESSION['imageFileName'.$imageID];
# unset($_SESSION['imageFileName'.$imageID]);

les rares fois que tu mets un if (sset(...)) alors tu ne mets pas de valeur pas default, c'est crade...

signaler à un administrateur
Commentaire de crazygogo le 08/08/2008 15:00:21

- pourquoi tu ne vérifies pas l'existence de ce $_GET['imagetype'] ?

pasque je suis faignant et que le développeur est censé passer le type d'image qu'il veut obtenir, après c'est sur que ce serait mieux.... et si on veut on peut vérifier des tonnes de truc, il faut aussi vérifier que c'est un entier et pour le moment je gère que deux types d'images donc il faut vérifier aussi que c'est égal à 1 ou 2 etc... etc... ensuite les couleurs il faut vérifier que c'est bien des codes couleurs valides etc... on peut aussi mettre des valeurs par défaut etc.... je plaide coupable ! mais je suis parti du principe que le code est bien commenté alors le développeur va pas mettre des valeurs de débiles dans les paramètres....


-un truc qui me choque aussi : avant de declarer $imageFileName, tu supprimes la variable... et tu ne vérifies pas que $_SESSION['imageFileName'.$imageID] existe...

désolé de te choquer mais je supprime la variable locale (je sais plus trop pourquoi d'ailleurs mais y'a surement une raison !) puis j'y met la valeur de la variable en session puis je supprime la variable en session.... je ne teste pas si la session existe puisque c'est mon programme qui la crée juste avant d'appeler cette fonction !!!!!


- les rares fois que tu mets un if (sset(...)) alors tu ne mets pas de valeur pas default, c'est crade...

les rares fois ou je met un isset c'est pour la couleur (qui prend une valeur par défaut si elle est pas renseignée) :
// Jeu de couleurs par défaut
$color = PIE_EARTH;

ou pour le libellé des abscisses qui n'a pas à prendre de valeur par défaut si il n'est pas renseigné...

de toute façon: je suis crade !!!.......

>:->

signaler à un administrateur
Commentaire de coucou747 le 08/08/2008 15:40:57

#  unset($color);
# if(isset($_SESSION['color'.$imageID])){
# $color = $_SESSION['color'.$imageID];
# unset($_SESSION['color'.$imageID]);
# }
#
# if(isset($color) && is_array($color)){


juste avant le if isset, tu n'as pas forcement de valeur pour $color, et c'est un peu domage.


#  for($k=0;$k<count($color);$k++){
# // on convertit en rvb et en objet 'Color'
# $color[$k] = hexa2rvb($color[$k]);
# }

ici, tu devrais sortir le count de la boucle (idem pour beaucoup de tes boucles d'ailleur)

global $sid,$debug,$imageCount;
les globales, c'est mal.

dans le fichier fstatistiques_include.php, ton code html est sale.

dans ton code javascript, tu utilises des variables globales (var i;) du coup, si tu fais deux fois cette erreur, tu te trouves avec un bug.

signaler à un administrateur
Commentaire de crazygogo le 08/08/2008 15:59:15

Merci coucou747 mais a part essayer de pinailler sur de nouveaux trucs que tu t amusé à trouvé tu ne réponds pas du tout aux différents points de mon message précédent....


- juste avant le if isset, tu n'as pas forcement de valeur pour $color, et c'est un peu domage

je croyais que c'était justement le but des isset, tester si une variable est définie ???!!!!........


- ici, tu devrais sortir le count de la boucle (idem pour beaucoup de tes boucles d'ailleur)

merci, je me suis renseigné et il semble que le count est évalué a chaque passage, donc c'est vrai que ce n'est pas une bonne idée de le mettre dans la boucle, merci pour ce bon conseil


- dans le fichier fstatistiques_include.php, ton code html est sale.

je te l'ai déja dit : je suis crade !!!....... je l'ai même mis dans la description de ma source (que tu n'as pas du lire non plus d'ailleurs) : "...ma source est pas propre,..", j'avais même prévu que tu passerais sur cette source et que tu mettrais tes commentaires : "Certains vont dire que ma source est pas propre, que j'aurais du faire de l'objet, du PHP5 etc...etc..."
je l'avais même mis en débutant pour bien montrer qu'un pro comme toi ferait surement mieux et que c'était juste pour essayer d'aider mes collègues débutants comme moi

signaler à un administrateur
Commentaire de coucou747 le 08/08/2008 16:05:00

"c'était juste pour essayer d'aider mes collègues débutants comme moi" => en leur montrant un code sale ?

quand on est debutant, on fait des erreurs de debutant, c'est normal. mais est-ce-qu'on doit laisser ces erreurs pour autant ?

et toi, quand t'es debutant, tu refuses de t'ameliorer parce-que t'es debutant ?

pour ton code, tu peux eviter le if isset, et c'est ca que je te reproche.


unset($color); // useless
if(isset($_SESSION['color'.$imageID]))
{
  $color = $_SESSION['color'.$imageID];
  unset($_SESSION['color'.$imageID]); // useless
  if( is_array($color)){
    ...
    ...
  }
  ...
}

signaler à un administrateur
Commentaire de crazygogo le 08/08/2008 16:15:14

=> en leur montrant un code sale ?

désolé mais si toi en débutant tu faisais déja du code top propre et irréprochable moi je ne suis pas aussi doué et comme tu as pu le constater ce n'est pas mon cas.


=> quand on est debutant, on fait des erreurs de debutant, c'est normal. mais est-ce-qu'on doit laisser ces erreurs pour autant ? et toi, quand t'es debutant, tu refuses de t'ameliorer parce-que t'es debutant ?

non, c'est pourquoi j'ai noté ce que j'avais compris de tes remarque (comme le count dans la boucle par exemple) afin d'améliorer ma source, et je t'ai même remercier pour ce conseil


=> pour ton code, tu peux eviter le if isset, et c'est ca que je te reproche.
unset($color); // useless
if(isset($_SESSION['color'.$imageID]))
{
  $color = $_SESSION['color'.$imageID];
  unset($_SESSION['color'.$imageID]); // useless
  if( is_array($color)){
    ...
    ...
  }
  ...
}

tu aurais pu mettre ce que tu proposes à la place du isser pasque la je comprends pas, désolé je ne suis qu'un newbie

pour tes "useless" je suis d'accord mais il faut quand même que je vérifie pasque je ne fais pas ça d'habitude et la je crois que l'ai fé pasque j'avais de soucis....



Je trouve ta façon de prodiguer tes conseils auprès des débutants pas très pédagogique mais bon...
Tu apprendras que dans la vie il y'a différentes façon de transmettre aux autres son savoir

signaler à un administrateur
Commentaire de crazygogo le 08/08/2008 16:25:48

PETIT RAPPEL:


#
Commentaire de crazygogo le 10/07/2008 12:20:01

oui c'est clair, c'est surtout qu'ils vont aller voir le source et dire: c'est nul il faut faire du php5, de l'objet, c'est pas propre etc....
je conçois volontiers que mon source a besoin de beaucoup d'améliorations, si il était parfait je n'aurais pas besoin de demander vos conseils !!! après tout dépend de comment ils sont faits... car certains sont spécialisés dans le "cassage de newbies" !!!!



#
Commentaire de GillesWebmaster le 10/07/2008 12:26:31

en effet!!!



#
Commentaire de opossum_farceur le 10/07/2008 19:23:45

Salut,
Bravo pour cette source et la librairie sur laquelle elle repose, qui a le mérite de mettre en oeuvre la mystérieuse fonction "imageantialias". Une question : cette fonction ne serait-elle pas responsable du temps important mis par le script pour générer chaque camembert?
Bye++



#
Commentaire de crazygogo le 11/07/2008 09:27:19

C'est fort possible... dans ce cas j'ai fais une erreur de l'activer par défaut... il faut que je modifie ma source pour permettre d'activer ou non l'antialias pour chaque graphique que l'on veut générer.

Merci pour l'idée.



#
Commentaire de GillesWebmaster le 11/07/2008 09:36:31

Bonne idée!



#
Commentaire de crazygogo le 11/07/2008 10:10:00

C'est fait !
Merci pour l'idée parce que bêtement je n'y avais même pas pensé alors que c'est sur que les calculs d'antialiasing sont la partie du code qui prenait le plus de temps d'execution.... c'est exactement pour ça que je poste mon code ici !!!
Par défaut il est activé mais il suffit de passer 'false' en dernier parametre de la fonction insertStatImage pour le désactiver...
insertStatImage($imageType,$width,$height,$title,$legend,$data,$color,$lblAbs=NULL,$antiAlias=TRUE)

Voir exemple de camembert N°1....



#
Commentaire de GillesWebmaster le 11/07/2008 10:17:16

En effet le code est nettement plus rapide!

signaler à un administrateur
Commentaire de crazygogo le 08/08/2008 16:29:27

Donc je ne pense pas être quelqu'un qui ne souhaite pas s'améliorer ou qui ne souhaite pas améliorer sa source.

Donc j'avais bien prévu que des balaises viendraient regarder mon code avec dédain et que je prendrais les critiques constructives

signaler à un administrateur
Commentaire de coucou747 le 08/08/2008 17:32:16

et j'en suis ravi.

if(isset($_SESSION['color'.$imageID]))
ce isset la est bon, il faut toujours faire ce genre d'isset pour $_GET, $_POST, $_COOKIE, $_FILES, $_SERVER, $_SESSION, etc...

if(isset($color) && is_array($color)){
ici, par contre, tu fais isset sur une variable "locale" (par opposition aux superglobales)
quand tu programmes dans un langage comme le C, tu peux recuperer des variables d'environements ou des parametres, avec des fonctions qui peuvent faire penser a isset, mais pour la variable locale, c'est debile...

le fait de savoir quelles variables existent, quelles sont leurs portees, leurs types, ce sont des choses d'importantes en programmation, meme dans des langages faiblement types genre php.

faire isset sur une variable locale, ca peut se justifier dans de rares cas (quand on fait de la POO sale mais souple, ca arrive d'avoir besoin de ce genre de choses, quand on fait de l'introspection, etc...). Dans ton cas, ca ne se justifie pas du tout.

Comme tu peux le voir dans mon code (cd 4 commentaires plus haut), le isset sur la variable locale n'existe plus.

signaler à un administrateur
Commentaire de crazygogo le 08/08/2008 17:53:43

Donc j'ai testé en faisant les modifs que ut me conseille, et..... ça marche pas !!! il ne prend pas la couleur pas défaut et m'affiche de moches camemberts tout rouges (les 3 premiers camemberts ou on ne passe pas de couleur en parametre) !!!!

Voici le code concerné au cas ou j'ai mal compris:

//unset($color);
if(isset($_SESSION['color'.$imageID])){
$color = $_SESSION['color'.$imageID];
//unset($_SESSION['color'.$imageID]);
}

//if(isset($color) && is_array($color)){
if(is_array($color)){
...
....

signaler à un administrateur
Commentaire de coucou747 le 08/08/2008 18:29:03

j'aurais bien voulu t'aider, mais chez moi, ton code ne fonctionne pas, et n'affiche pas de message d'erreur... (j'imagine que l'install de debian de php-gd ne plait pas a artichow, sauf que de base, artichow nous renvoie un message d'erreur...)

ton code ne correspond pas au mien non... regarde de plus pres les fins d'accolades

unset($color); // useless
if(isset($_SESSION['color'.$imageID]))
{
  $color = $_SESSION['color'.$imageID];
  unset($_SESSION['color'.$imageID]); // useless
  if(is_array($color)){
    ...
    ...
  }
  ...
}

signaler à un administrateur
Commentaire de crazygogo le 08/08/2008 21:28:01

ah ok trés bien je vais essayer comme ça.....

sinon pour avoir le message d'erreur artishow il suffit de mettre le debug sur true dans l'include......

signaler à un administrateur
Commentaire de foobar470 le 21/08/2008 14:36:49

Bonjour,

Ce code est excellent, très bien commenté et très facile à reprendre.
De plus, les résultats sont de toute beauté.

Félicitations.
10/10

signaler à un administrateur
Commentaire de crazygogo le 21/08/2008 15:30:27

Merci !

Mais tu peux aussi noter pour de vrai en cliquant sur les étoiles situées juste au dessus de la zone de commentaire !....

signaler à un administrateur
Commentaire de fregolo52 le 03/09/2008 17:03:17 10/10

Franchement, je n'y connais rien en php, mais je dois modifier un intranet pour, entre autre, y mettre de jolis graphs de statistiques.
Ta source va m'être très utile.
Bravo, parce que j'ai regardé la doc c'est pas évident de s'y retrouver.

signaler à un administrateur
Commentaire de crazygogo le 03/09/2008 17:06:35

Merci !
c'est toujours sympa de savoir que sa source a été compris facilement et est utilisée !!!

signaler à un administrateur
Commentaire de crazygogo le 09/09/2008 16:39:37

225 téléchargements et seulement 3 votes !!!

...

:(

signaler à un administrateur
Commentaire de didite49 le 13/10/2008 10:24:35

Bonjour,


Merci pour ce code, cela m'a bien servi.

J'ai juste un soucis que je n'arrive pas à résoudre. J'ai testé sous IE6 et... erreur... les images ne se chargent pas. J'ai une erreurs de syntaxe et des StatImages indéfini...

voici le code qui pose apparemment problème pour l'erreur de syntaxe :

else if(statImagesReplaced[i]=='oui'){
document.getElementById('divStatImageLoading'+i).style.display = 'none';
document.getElementById('divStatImage'+i).style.display = 'inline';
statImagesReplaced[i] = 'chargee';
nbLoadedImagesStat ++;
}

Il me met l'erreur à la ligne précédent la fin d'accolade, quoique je mette devant.
Quelqu'un aurait-il une idée pour résoudre cela... Je seche completement.

Cordialement,

Didite49

signaler à un administrateur
Commentaire de crazygogo le 13/10/2008 10:37:01

ça c pas de bol pasque chez moi ça marche sous IE6, IE7, Firefox 3, Google Chrome !!!

c'est tes devs qui marchent pas ou l'exemple fourni tel quel sans y toucher ???

signaler à un administrateur
Commentaire de didite49 le 13/10/2008 10:42:28

Il s'agit bien de l'exemple fourni, puisque l'erreur se produit au niveau du javascript...

signaler à un administrateur
Commentaire de crazygogo le 13/10/2008 10:46:54

tu aurais pu avoir besoin de toucher au javascript !!!

;D

signaler à un administrateur
Commentaire de didite49 le 13/10/2008 10:51:23

Effectivement j'aurai pu :D, mais je n'en ai rien fait.

Donc toi non plus tu n'as pas d'idées...
je vais chercher encore, et si je trouve le pourquoi du comment, j'en ferais part ici, au cas où d'autres auraient le soucis.

Mais si jamais quelqu'un a une idée... n'hésitez pas à me l'indiquer.

à bientot

signaler à un administrateur
Commentaire de crazygogo le 13/10/2008 10:54:02

ben le problème c que j'ai ré-essayé sous IE6 mais j'arrive pas à reproduire l'erreur alors c un peu dur de déboguer.....

pourrais-tu mettre le message d'erreur exact STP ?

signaler à un administrateur
Commentaire de didite49 le 13/10/2008 11:11:48

Je viens de refaire l'essai avec des données brutes, pour voir si cela ne viendrait pas effectivement de mon code (on ne sait jamais lol)

Donc sous mozilla, il ne m'affiche pas de graphique alors qu'il dit image chargée, et sous IE6 erreurs.

voici mon code :
<?php
// Permet de lancer un traitement lorsque toutes les images sont chargées...
$checkStatImagesOnAllComplete = 'alert("Toutes les images sont chargées !");';

// Include avec toutes mes fonctions qui vont bien...
include ("artichow-1.1.0/statistiques_include.php");

$title = "Repartition Hommes Femmes :";
$width = 500;
$height = 300;
$legend = array('Hommes','Femmes');
$color = array('#006666','#9966FF');
$data = array(60,40);

// On crée l'image
insertStatImage(1,$width,$height,$title,$legend,$data,$color,'',FALSE);
?>

puis voici la première erreur :
Ligne : 37
Car : 2
Erreur : Erreur de syntaxe
Code : 0
Url : www.url.com/test.php

Puis la deuxième :
Ligne : 65
Car : 3
Erreur : 'statImages' est indefini
Code : 0
Url : www.url.com/test.php

merci

signaler à un administrateur
Commentaire de crazygogo le 13/10/2008 11:22:31

ok donc ma question était pas si bête puisque c'est bien ton dev qui plante et non mes exemples !!! :p

met session_start(); en premiere ligne de ton code et ça roule !!!

et met une note tant que tu y es !!!

;D

signaler à un administrateur
Commentaire de didite49 le 13/10/2008 11:29:20 10/10

Effectivement pour mon test j'avais omis de mettre le session_start(); , cela résout l'affichage dans Mozilla, mais pas mes erreurs dans IE, dsl.

Voilà pour la note lol

signaler à un administrateur
Commentaire de crazygogo le 13/10/2008 11:35:33

pfffffffff merci IE !!!!
bon je regarde avec IE ce qui lui va pas....
merci pour la note !!!

;D

signaler à un administrateur
Commentaire de crazygogo le 13/10/2008 14:17:56

bon pas moyen de reproduire le problème ni de trouver d'ou ça peut venir...
est-ce que quelqu'un utilise cette source sous IE6 ???
Merci pour les réponses ! ;)

signaler à un administrateur
Commentaire de geogeo_cutcut le 23/10/2008 09:34:38

Bonjour,
Je suis sur MAC et j'utilise MAMP.
Cette source à l'air d'être super intéressante et je voudrais l'utiliser pour la partie stat de mon site.
Le problème c'est que je ne voit aucun graphe qui s'affiche en utilisant ton exemple.
J'ai bien les cadres mais aucun graph à l'intérieur, juste une petit icone image.

Avec vous une idée ?

j'ai pas vérifié que la library GD2 était bien activée
Est ce que ça peut venir de cela ?

Merci d'avance pour vous réponse.

signaler à un administrateur
Commentaire de cds0671 le 18/11/2008 14:18:21

Bonjour,
Ta source me parait vraiment interressant, malheureusement lorsque je tente de télécharger le zip il m'indique que certains fichiers sont corompu et je ne parviens donc pas à les récupérer!!!!!
Merci.

signaler à un administrateur
Commentaire de crazygogo le 20/11/2008 18:39:39

GD2 nécessaire, droits d'écriture sur le dossier cache....

fichier zip valide, voir problèmes de téléchargement ou de dézippage...

signaler à un administrateur
Commentaire de malik7934 le 23/12/2008 18:01:36

Intéressant... mais impossible à faire tourner dans mon environnement : toutes les images me font des erreurs 404 (j'ai mis les droits sur le cache répertoires à 777 et j'ai gd2) :-(

signaler à un administrateur
Commentaire de BiBloOo le 25/02/2009 12:33:44

Artichow est vraiment pratique !!
Sauf que pour savoir l'utiliser, je trouve qu'on manque d'explication ...

J'ai beaucoup de mal, si quelqu'un pouvait m'aider, j'ai créer un post ==>

http://www.phpcs.com/forum/sujet-BESOIN-AIDE-ARTICHOW-URGENTE_1274833.aspx

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Statistique graphique, pourquoi ne parler que de JPgraph ? [ par crazygogo ] Pourquoi JPGRAPH ??? payant pour les sociétés.... alors qu'il existe ArtiChow : http://www.artichow.orgje fais de la pub pour ma source mais elle perm Base de données et courbe graphique [ par jeremy77 ] Bonjour,Je suis débutant en php ... .Savez-vous si est possible de ce servire d'une table venant d'une base de données comme coordonées pour une courb graphique en courbe avec liaison mysql [ par jeremy77 ] Bonjour a tous,(Je suis débutant en php)Dans le cadre de réaliser une chart boursier en php, j'ai reussi a faire apparaitre un graphique en courbe a l graphique et base de données [ par jeremy77 ] Bonjour,Apres avoir réalisé un graphique en courbe avec liaison a ma base de donnes (c'est à dire que les coordonées de ma courbe sont des valeurs réc Générer une palette graphique [ par bthivent ] Bonjour j'aimerai savoir comment générer une palette graphique, automatiquement, avec le plus de couleurs possible, et que l'ont puisse cliquer dessus Affichage de graphique [ par nbenoist ] sur RedHat 7.2 J'ai une page php qui lit un fichier de log. Ma page php me affiche 2 camenbert suivant les informations du fichier log. J'ai mis les Probleme vraiment bizzard [ par papipsycho ] bonjour&nbsp;&nbsp; voila je vous enonce mon probleme dans mon kit graphique je mais un &lt;form name=form_login ect...&gt; et bien quand je le mais s diagramme camembert [ par emma1006 ] Bonjour,J'ai trouv&#233; un super code source sur le site :http://www.metacites.net/article132.htmlil correspond vraiment &#224; ce que je voudrais fa librairie graphique [ par bm67 ] Je travaille avec easyphp1.7 Lorsque je cherche &#224; cr&#233;er un rectangle.Voil&#224; ce que j'obtiens. Les fonctions employ&#233;es sont activ&#2 graphique dynamique php [ par coolboarder ] Bonjour,je&nbsp;souhaite cr&#233;er un graphique en php qui se g&#233;n&#232;re automatiquement d'apr&#232;s les donn&#233;es d'une bd.Les donn&#233;e


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version


HTC G1

Entre 449€ et 449€


Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,593 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.