cours - Intranet | IUT de Troyes

Transcription

cours - Intranet | IUT de Troyes
Créer des documents autres
que HTML

Créer des images à la volée:
Avec la libraire GD (librairie serveur)
Avec la libraire jpGraph (lib d'inclusion)

http://jpgraph.net/
Images à la volée avec lib GD



La librairie GD est une librairie serveur
Seul l'administrateur du serveur peut
l'installer.
Généralement elle est présente par
défaut

Vérifier avec une page php du type:

<? phpinfo() ?>
Images à la volée avec lib GD
Source de base:
<?php
header ("Content-type: image/png");
$image = imageCreate (200, 100);
$couleur_fond = imageColorAllocate ($image, 255, 0, 0);
ImagePng ($image);
?>
fonctions utiles:
imagefilledrectangle() , imagestring() , imageColorAllocate()
documentations: http://www.lephpfacile.com/cours/index.php?p=23
Images à la volée avec lib GD
Exemple:
<?php
header ("Content-type: image/png");
$image = imageCreate (200, 100);
$couleur_fond = imageColorAllocate ($image, 255, 0, 0);
$couleur_bar = imageColorAllocate ($image, 0, 255, 0);
imagefilledrectangle ( $image, 10, 10, 150, 80, $couleur_bar);
$couleur_text = imageColorAllocate ($image, 0, 0, 255);
imagestring($image, 5, 30, 40, "Salut
ImagePng ($image);
?>
!!", $couleur_text);
Images à la volée avec lib GD
Exemple avec un passage de paramètre:
<?php
header ("Content-type: image/png");
$image = imageCreate (200, 100);
$couleur_fond = imageColorAllocate ($image, 255, 0, 0);
$tt=$_GET["texte"];
$couleur_bar = imageColorAllocate ($image, 0, 255, 0);
imagefilledrectangle ( $image, 10, 10, 150, 80, $couleur_bar);
$couleur_text = imageColorAllocate ($image, 0, 0, 255);
imagestring($image, 5, 30, 40, "Salut $tt!!", $couleur_text);
ImagePng ($image);
?>
Images à la volée avec lib GD
Appel de l'image précédemment crée:
...
<img src="image.php?texte=bob" >
<img src="image.php?texte=toto" >
<img src="image.php?texte=titi" >
...
application au cas St Pavut:
il est demandé de faire une barre pour le taux de réservations pour chaque
manifestation.
Il est donc possible d'inclure dans la boucle d'afchage des manifestations le
code permettant d'appeler l'image pour chaque manif:
... <img src="barregraph.php?num=5" >...
ensuite il faut dans le source générant l'image récupérer l'id dans la variable
$_GET[num] . Et générer l'image en fonction des informations de la
manifestation.
Exemple : Barre.php pour dutaf
<?php
mysql_connect(« localhost« , »srcxxzz », »1234 ») ;
mysql_select_db(«basesrcxxzz « ) ;
$tt=$_GET["num"];
$result=mysql_query("select * from articles where art_id=$tt");
$data=mysql_fetch_object($result);
$nb= $data->art_qte;
header ("Content-type: image/png");
$image = imageCreate (200, 100);
$couleur_fond = imageColorAllocate ($image, 255, 0, 0);
$couleur_bar = imageColorAllocate ($image, 0, 255, 0);
imagefilledrectangle ( $image, 10, 10, $nb, 80, $couleur_bar);
ImagePng ($image);
?>
Exemple : Barre.php pour
saintPavut
Quel requete permettra d'obtenir ce graphique ?
Quel champs « d'entrée » pour faire ce graphique ?
Quelles tables sont elles nécessaires , quelles données sont nécessaires pour
construire ce graphique ?
Abonnes ?
Reservations ?
Manifestations ?
Salles ?
Sous quelle forme doit on récupérer ces données ?
Utiliser modx avec libGD

Sur le meme principe que la generation
du pdf, il est possible d'utiliser le moteur
de modx :
dans ce cas on appelle pas barregraph.php?num=5 mais index.php?
id=7&num=5 (ici 7 représentera l'id de la ressource générant la barre)

Pour eviter de prendre trop de ressources, toute la partie libgd et jpgraph
sera développé hors de modx.
Graphique à la volée

Utilisation de amChart (html/css)
Graphique animé
http://www.amcharts.com/

Utilisation de jpgraph (image)
Image fixe (png, gif...)
http://jpgraph.net/
Graphique à la volée avec
jpgraph

Utilisation de jpgraph

Il faut avoir libGD d'installé

Jpgraph est une librairie d'inclusion

Voir: http://jpgraph.net/

Fichier jpgraph-3.0.7.tar.gz


Dans cette archive, il faut prendre tout le dossier src
(renommer éventuellement jpgraph). Il contient tous les
fichiers à inclure
Il n'y a pas ici un seul fichier librairie à télécharger mais
plusieurs en fonction du graphique à réaliser.
Graphique à la volée avec
jpgraph

Utilisation de jpgraph

Il faut avoir libGD d'installé

Jpgraph est une librairie d'inclusion

Voir: http://www.aditus.nu/jpgraph/

Fichier jpgraph-3.0.7.tar.gz


Dans cette archive, il faut prendre tout le dossier src
(renommer éventuellement jpgraph). Il contient tous les
fichiers à inclure
Il n'y a pas ici un seul fichier librairie à télécharger mais
plusieurs en fonction du graphique à réaliser.
Graphique à la volée avec
jpgraph
<?php
require_once ('jpgraph/jpgraph.php');
require_once ('jpgraph/jpgraph_pie.php');
require_once ('jpgraph/jpgraph_pie3d.php');
$data = array(20,27,45,75,90);
$graph = new PieGraph(350,200);
$graph->SetShadow();
$graph->title->Set("Example 2 3D Pie plot");
$graph->title->SetColor("darkblue");
$graph->legend->Pos(0.1,0.2);
$p1 = new PiePlot3d($data);
$p1->SetTheme("sand");
$p1->SetCenter(0.4);
$p1->SetSize(0.4);
$p1->SetHeight(5);
$p1->SetAngle(45);
$p1->Explode(array(0,40,0,0));
$p1->value->SetFont(FF_ARIAL,FS_NORMAL,10);
$p1->SetLegends(array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct"));
$graph->Add($p1);
$graph->Stroke();
?>
Graphique à la volée avec
jpgraph
<?php
include ("jpgraph/jpgraph.php");
include ("jpgraph/jpgraph_pie.php");
include ("jpgraph/jpgraph_pie3d.php");
$valeur[0] =40;
$legende[0] = "Jan";
$valeur[1] =60;
$legende[1] = "Feb";
$valeur[2] =21;
$legende[2] = "Mar";
$valeur[3] =33;
$legende[3] = "Apr";
$graph = new PieGraph(350,200);
$graph->SetShadow();
$graph->title->Set("Example 2 3D Pie plot");
$graph->title->SetColor("darkblue");
$graph->legend->Pos(0.1,0.2);
$p1 = new PiePlot3d($data);
$p1->SetTheme("sand");
$p1->SetCenter(0.4);
$p1->SetSize(0.4);
$p1->SetHeight(5);
$p1->SetAngle(45);
$p1->Explode(array(0,40,0,0));
$p1->SetLegends(array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct"));
$graph->Add($p1);
$graph->Stroke();
?>
Graphique à la volée avec
jpgraph
<?php
include ("jpgraph/jpgraph.php");
include ("jpgraph/jpgraph_pie.php");
include ("jpgraph/jpgraph_pie3d.php");
// connexion à la base de données ...
...
//boucle pour charger les valeurs
while( $i<$nb)
{
$data = mysql_fetch_object($result);
$valeur[$i] =$data->val;
$legende[$i] = $data->ville;
$i++;
}
$graph = new PieGraph(300,200,"auto");
$graph->SetShadow();
$graph->title->Set("A simple Pie plot");
$graph->title->SetFont(FF_FONT1,FS_BOLD);
$p1 = new PiePlot3D($valeur);
$p1->SetSize(0.5);
$p1->SetCenter(0.45);
$p1->SetLegends($legende);
$graph->Add($p1);
$graph->Stroke();
?>
Graphique à la volée avec
jpgraph
<?php
include ("jpgraph/jpgraph.php");
include ("jpgraph/jpgraph_pie.php");
include ("jpgraph/jpgraph_pie3d.php");
// connexion à la base de données ...
…
//Requete permettant l'extraction de ces données
//boucle pour charger les valeurs
while( $data = mysql_fetch_object($result)){
$valeur[$i] =$data->val;
$legende[$i] = $data->ville;
$i++;
}
$graph = new PieGraph(300,200,"auto");
...
$p1 = new PiePlot3D($valeur);
...
$p1->SetLegends($legende);
...
?>
Graphique à la volée avec
jpgraph
Quel requete permettra d'obtenir ce graphique ?
Quel champs « d'entrée » pour faire ce graphique ?
Quelles tables sont elles nécessaires , quelles données sont nécessaires pour
construire ce graphique ?
Abonnes ?
Reservations ?
Manifestations ?
Salles ?
Sous quelle forme doit on récupérer ces données ?
Ville
totalresaabo titremanif
Lusigny
123
After Sun
Pruny
34
After Sun
Saint André 70
After Sun
Troyes
123
After Sun
Verrieres
37
After Sun
2) dans quelles tables trouve t on ces champs ?
Ville
→ ….
Titremanif → ….
Totalresaabo → ….
Graphique à la volée
Amchart :
http://www.amcharts.com/