Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > Images > JpGraph
JpGraph Forum d'entraide pour la bibliothèque JpGraph permettant de manipuler des images en PHP. Avant de poster -> tutoriels JpGraph
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/01/2007, 01h28   #1
Membre du Club
 
Avatar de dervish
 
Inscription : avril 2004
Messages : 99
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 99
Points : 66
Points : 66
Par défaut [JpGraph] Utilisation avec des sessions

bonjour,
je rencontre un soucis dans le comportement d'un script.
Le principe:
J'ai un script générant un graphique à l'aide de la librairie jpgraph. Une fois le graphe créé (mais non affiché ni généré), il l'enregistre dans une variable session et le reste de la page est généré. Dans cette page, une balise html <img> appelle un autre script qui récupère la variable session, la désérialise et génère l'image via un $graph->stroke.

Le résultat:
l'image n'est pas générée car jpgraph rencontre une erreur (manifestement lors du stroke() du second script). Le soucis vient du fait que si je génére ou affiche l'image avec le premier script (sans passer l'objet via une session), celle-ci s'affiche sans problème...

Voici le second script:
Code :
1
2
3
4
5
6
7
 
session_start();
include_once('jpgraph');
include_once('jpgraph_pie');
$tmp = $_SESSION['graphique'];
$graphique = unserialize(serialize($tmp));
$graphique->Stroke();
Le message d'erreur (sur le second script) est le suivant:
Citation:
Warning: imagecolorresolvealpha(): supplied argument is not a valid Image resource in /usr/share/php5/jpgraph/jpgraph.php on line 5720

Warning: imagecolorresolvealpha(): supplied argument is not a valid Image resource in /usr/share/php5/jpgraph/jpgraph.php on line 5720

Warning: imagefilledpolygon(): supplied argument is not a valid Image resource in /usr/share/php5/jpgraph/jpgraph.php on line 6795

Warning: imagefilledpolygon(): supplied argument is not a valid Image resource in /usr/share/php5/jpgraph/jpgraph.php on line 6795

Warning: imagecolorresolvealpha(): supplied argument is not a valid Image resource in /usr/share/php5/jpgraph/jpgraph.php on line 5720

Warning: imagefilledpolygon(): supplied argument is not a valid Image resource in /usr/share/php5/jpgraph/jpgraph.php on line 6795

Warning: imageline(): supplied argument is not a valid Image resource in /usr/share/php5/jpgraph/jpgraph.php on line 6758

Warning: imageline(): supplied argument is not a valid Image resource in /usr/share/php5/jpgraph/jpgraph.php on line 6758

Warning: imageline(): supplied argument is not a valid Image resource in /usr/share/php5/jpgraph/jpgraph.php on line 6758

Warning: imageline(): supplied argument is not a valid Image resource in /usr/share/php5/jpgraph/jpgraph.php on line 6758
Voilà, je ne sais pas si j'ai été clair dans la description du soucis...
Si quelqu'un avait une idée cela m'aiderait car là je sèche.
d'avance merci

P.S: J'ai fait un petit script qui résume la situation:
pour afficher le graph, il suffit d'appeler le script: test.php?affiche . Si on l'appelle test.php, on obtient l'erreur.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
test.php
<?php
session_start();
include_once('jpgraph.php');
include_once('jpgraph_pie.php');
 
if(!isset($_GET['flag'])){
 
    $graph = new PieGraph(450,300);
    $graph->title->Set("Test");
 
    $donnees = array(1,2,3,4,5);
    $partition = new PiePlot($donnees);
    $graph->Add($partition);
 
    if(isset($_GET['affiche'])){
	$graph->Stroke();
    } else {
	$_SESSION['graph'] = $graph;
	header("Location:./tmp.php?flag");
    };
} else {
    $gr = $_SESSION['graph'];
    $graph = unserialize(serialize($gr));
    $graph->Stroke();
};
?>
dervish est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2007, 07h58   #2
Membre régulier
 
Avatar de Stopher
 
Homme christophe de saint leger
Responsable de service informatique
Inscription : juin 2004
Messages : 105
Détails du profil
Informations personnelles :
Nom : Homme christophe de saint leger
Âge : 26
Localisation : France

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : Industrie

Informations forums :
Inscription : juin 2004
Messages : 105
Points : 82
Points : 82
Envoyer un message via MSN à Stopher Envoyer un message via Skype™ à Stopher
Bonjour ,

Il y a un truc de pas logique .. enfin je pense ..


Code :
1
2
$tmp = $_SESSION['graphique'];
$graphique = unserialize(serialize($tmp));
pour moi ca serait plutot :

Code :
$_SESSION['graphique']=serialize($graphique);
puis n'importe ou apres avoir effectué les includes de la classe bien entendu , tu peux deserialiser :

Code :
1
2
$graphique = unserialize($_SESSION['graphique']);
$graphique->Stroke();
car là , tu "désérialises" une donnée que tu serialises dans la fonction deserialise ...
Je comprend pas pourquoi tu fais ça ...

Apres , j'ai peut être mal compris ton principe ....
Stopher est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2007, 11h11   #3
Membre du Club
 
Avatar de dervish
 
Inscription : avril 2004
Messages : 99
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 99
Points : 66
Points : 66
Salut,
en fait quand tu passes une variable en session, a la fin du script elle est sérialisée automatiquement. Lorsque tu désérialise un objet, je ne sais pourquoi mais ton objet est considéré comme classe incomplète ( essaie avec un print_r de l'objet sans le serialize que j'ai mis). Enfin bref, l'erreur ne vient pas de là.

Suite à la remarque précédente, j'ai quand même simplifié le code et cela ne marche toujours pas:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
tmp.php
<?php
session_start();
include_once('jpgraph.php');
include_once('jpgraph_pie.php');
 
if(!isset($_GET['flag'])){
 
    $graph = new PieGraph(450,300);
    $graph->title->Set("Test");
 
    $donnees = array(1,2,3,4,5);
    $partition = new PiePlot($donnees);
    $graph->Add($partition);
 
    if(isset($_GET['affiche'])){
	$graph->Stroke();
    } else {
	$_SESSION['graph'] = serialize($graph);
	header("Location:./tmp.php?flag");
    };
} else {
    $gr = $_SESSION['graph'];
    $graph = unserialize($gr);
    $graph->Stroke();
};
?>
dervish est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h08.


 
 
 
 
Partenaires

Hébergement Web