Passage de variable dans une image dynamique

pontarose Messages postés 151 Statut Membre -  
Dalida Messages postés 7114 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

après installation de la librairie gd, je veux créer une image dynamique générée par un fichier php dans une page html, de cette manière :
print("<img src=‘image.php’>") ; (C'est le fichier .php qui crée l'image)

Cela fonctionne, mais le problème c'est que je veux passer une variable (en fait un tableau) au fichier image.php.

Le code marche quand j'ai aucune variable à passer dans le fichier image.php, (j’ai bien mon image généré) mais malheureusement le passage de variable ne passe pas lorsque je fait ceci:
print(<img src=‘image.php?tab=<? php echo $_SESSION[‘tab’];?> ’>”);
il s’affiche un carré vide.

Dans image.php, je récupère mon tableau comme ceci :
$tab=$_SESSION[‘tab’];

Peut-on m'aider svp
A voir également:

5 réponses

Mikey_UFC Messages postés 315 Statut Membre 1
 
Salut,

Il est impossible de passer un tableau comme ça.

Mais tu peux utiliser serialize pour le transformer afin de le transférer et unserialize pour le remettre sous forme de tableau sur l'autre page.
0
pontarose Messages postés 151 Statut Membre 2
 
Merci de ta réponse,

je vais me documenter sur l'utilisation de serialize et unserialise.
mais il est possible de passer un tableau d'une page à l'autre ce n'est pas possible dans ce cas çi car on le fait une image? C'est ça?
0
Mikey_UFC Messages postés 315 Statut Membre 1
 
Non, il est impossible de passer un tableau en paramètre d'une page à une autre.

Après, là, je ne vois pas trop ce que tu veux faire avec
print("<img src=‘image.php’>")
0
Dalida Messages postés 7114 Date d'inscription   Statut Contributeur Dernière intervention   923
 
salut,

tu ne nous dis pas tout !
si tu veux récupérer ton tableau comme ça :
$tab=$_SESSION[‘tab’]; 

pas besoin de passer le tableau dans l'URL…

tu stockes dans la variable de session et tu récupères dans la variable de session.

au pire tu pourrai l'écrire dans un fichier texte et juste transmettre le nom du fichier par URL mais je ne trouve pas ça très propre.

et pour serialize() regarde le manuel, il me semble qu'il ne faut pas l'utiliser dans une URL.
0
pontarose Messages postés 151 Statut Membre 2
 
Merci de ta réponse.

Oui je vois bien comment passer un tableau d'une page à une autre via les sessions.

Je veux je veux passer un tableau au fichier image.php. ce fichier étant celui qui crée l'image (car je veux créer une image dynamique générée par un fichier php dans une page html, de cette manière)


Je met un bout de code pour me faire comprendre.

Soit

SCRIPT a.php
<?php

session_start();

if(isset($_SESSION['user_login']))
{
$user_login=$_SESSION['user_login'] ;

print("You are logged as <b>$user_login</b><br><br>");

}
else
{
header ("Location: form_identification.html");
}
?>

<?php
//j'en viens à l'essentiel


$tableau=array();
for($i=0; $i<count($essai); $i++)
{
array_push($tableau,"".$essai[$i][0]."" "".$essai[$i][1]."" "".$essai[$i][2]."" "".$essai[$i][3]."")

}
$_SESSIONS['tableau']=$tableau;

print("<img src='image.php?'>"); //ceci afin d'intégrer une image dans une page HTML
?>


SCRIPT image.php
//ce script permet de générer mon image. (des rectangles (içi 2) leur nombre correspond au nombre d'éléments dans mon tableau (içi $rectangle) et au dessus de chaque rectangle j'inscrit le nom de l'élément (içi element1 et element2)
<?php

session_start();

if(isset($_SESSION['user_login']))
{
$user_login=$_SESSION['user_login'] ;

print("You are logged as <b>$user_login</b><br><br>");

}
else
{
header ("Location: form_identification.html");
}
?>

<?php
$x = 210;
$y = 120;

$im = imagecreatetruecolor ($x,$y) or die ("Impossible de crée un flux d'image GD");

//CREATION DES VARIABLES COULEURS
$vert = imagecolorallocate ($im, 0, 255, 0);
$gris = imagecolorallocate ($im, 91,91 ,91 );

$rectangle=array("element1","element2");

$barreLargeur = (int)(($x-35)/(1.5*count($subunit)+0.5));

for ($i=0; $i<count($element); $i++)
{
$x = 10+(int)($barreLargeur*(0.5+$i*1.5));
$barreHauteur = 30;

imagefilledrectangle($im,
$x,
$y-60-$barreHauteur,
$x+$barreLargeur,
$y-60,
$vert);

//permet d'écrire le nom des sous-unité juste au-dessus
imagestring ($im, $titre_police, $x, $y-63-$barreHauteur-10, $element[$i], $gris);
}

imagepng ($im);

?>


Dans cet example tout fonctionne,
ce que je veux c'est récupérer le tableau $tableau (du script a.php) dans image.php de manière à faire un autre schéma. Comment récupérer le tableau?

j'espère avoir tout dit etre clair...
0
Mikey_UFC Messages postés 315 Statut Membre 1 > pontarose Messages postés 151 Statut Membre
 
Vu que tu utilises déjà les sessions, le plus simple est de continuer.

Tu as juste à stocker ton tableau dans une variable de session comme ça tu pourras y accéder de n'importe quelle page.
0
Dalida Messages postés 7114 Date d'inscription   Statut Contributeur Dernière intervention   923
 
salut,

ce que je veux c'est récupérer le tableau $tableau (du script a.php) dans image.php de manière à faire un autre schéma. Comment récupérer le tableau?
en début de "image.php" tu démarres la session puis tu récupères la valeur après avoir testé si elle existe.
<?php
	session_start(); // si ce n'est pas déjà fait par ailleurs

	if(isset($_SESSION['tableau']))
		$tableau = $_SESSION['tableau'];
	else
		// traitement d'erreur : pas de tableau
?>

dis nous ce que ça donne !
-;o)
0
pontarose Messages postés 151 Statut Membre 2
 
Je n'ai pas de message d'erreur.
néanmoins quand je fais un print_r($tableau): mon tableau ne s'affiche pas et j'ai un carré vide pour mon schéma
0
pontarose Messages postés 151 Statut Membre 2 > pontarose Messages postés 151 Statut Membre
 
il semble que je ne peux pas mettre de print dans mon fichier image.php car celui-ci est dédié à la génération de mon schéma.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Dalida Messages postés 7114 Date d'inscription   Statut Contributeur Dernière intervention   923
 
pour débuguer tu peux écrire dans un fichier texte.
ob_start();
print_r($tableau);
file_put_contents('debug.log', ob_get_contents());
ob_end_flush();

c'est pas très académique mais ça me dépanne souvent…
0
pontarose Messages postés 151 Statut Membre 2
 
j'ai mis cela dans un fichier test.php et je le lance en ligne de commande php test.php mais je n'obtiens rien.
Je l'ai mis dans mon fichier a.php mais j'obtiens le message suivant: warning: file_put_contents (debug.log): failed to open stream: Permission denied in ../../../ on line...
0
Dalida Messages postés 7114 Date d'inscription   Statut Contributeur Dernière intervention   923 > pontarose Messages postés 151 Statut Membre
 
salut,

tu le fais en local ?
crée toi même le fichier, avec le CHMOD ad hoc, ça devrait bien finir par passer !
0