Afficher une image avec src="....php"

Eléphant du PHP | 68 Messages

27 avr. 2006, 07:43

Bonjour, voici mon problème, j'aimerai créer quelque chose du style

Code : Tout sélectionner

<a href="lien.php"><img src="source.php?d=5"></a>
de façon à ce que le fichier source affiche une image différente selon la valeur du paramètre d.

Toutes les images à afficher sont déjà dans mon répertoire (donc, je ne veux pas les générer dynamiquement!).
Dans source.php, j'ai un tableau qui associe à chaque valeur de d l'image à afficher.

Ce n'est pas à proprement parlé le code php que je cherche mais plutôt la méthode (en-tête à déclarer)

Merci

Eléphant du PHP | 353 Messages

27 avr. 2006, 08:02

montre nous ton code , ca sera plus simple !!!

sinon beh voilà le header information si ton image est au format jpeg

header('Content-type: image/jpeg');

Eléphant du PHP | 68 Messages

27 avr. 2006, 08:20

Le problème c'est que je n'ai aucune idée de ce que je dois y mettre dans source.php

Je ne sais pas transmettre l'image 1.gif (comme on le fait en générant l'image)

Je voudrais faire ceci, mais je trouve assez bête de générer l'image alors qu'elle existe!

Code : Tout sélectionner

if ($_GET['d']==1) {$fichier="1.gif";} else {$fichier="2.gif";} $im = imagecreatefromgif($fichier) or die ("Erreur lors de la création de l'image"); header ("Content-type: image/png"); imagepng ($im); imagedestroy($im);

Avatar du membre
ViPHP
ViPHP | 3008 Messages

27 avr. 2006, 09:25

C'est dans le fichier source que tu veux afficher l'image ?

Si c'est le cas pourquoi ne pas faire tout simplement un affichage selon l'ID récupéré ? Avec un switch ou des if ?[/php]

Eléphant du PHP | 68 Messages

27 avr. 2006, 09:41

C'est dans le fichier source que tu veux afficher l'image ?

Si c'est le cas pourquoi ne pas faire tout simplement un affichage selon l'ID récupéré ? Avec un switch ou des if ?[/php]
L'image sera affichée sur des sites externes au mien et en fonction de certaines spécifications (paramètre d), ca doit être une image bien précise!

Avatar du membre
ViPHP
ViPHP | 3008 Messages

27 avr. 2006, 09:45

Oui c'est bien ce que j'ai compris.

Si ce l'affichage se fait sur des sites externes, tu pointes dans le tag <img> l'url complet : http://...etc

Et pour afficher l'image précise c'est justement grâce à l'ID que tu passes dans l'URL.

Eléphant du PHP | 68 Messages

27 avr. 2006, 09:50

Oui c'est bien ce que j'ai compris.

Si ce l'affichage se fait sur des sites externes, tu pointes dans le tag <img> l'url complet : http://...etc

Et pour afficher l'image précise c'est justement grâce à l'ID que tu passes dans l'URL.
Oui, mais je ne sais pas quel instruction employer pour afficher l'image


Le ocde plus haut fonctionne mais c'est un peu fort de devoir regénérer une image qui existe déjà, il suffit d'indiquer le nom.
Mon réel problème n'est pas dans le choix de l'image mais simplement dans l'affichage. Que doit "sortir" le code source.php?

Voilà un exemple de code qui marche pas et qui me paraît plus approprié, me manque juse la vraie instruction

Code : Tout sélectionner

if ($_GET['d']==1) {$fichier="1.gif";} else {$fichier="2.gif";} echo $fichier;

Avatar du membre
ViPHP
ViPHP | 3008 Messages

27 avr. 2006, 10:14

if ($_GET['d']==1)
{
	echo '<img src="chemin/1.gif" border="0" alt="">';
}
else
{
	echo '<img src="chemin/2.gif" border="0" alt="">';
}
Tu peux faire avec les switch c'est plus simple.

Eléphant du PHP | 68 Messages

27 avr. 2006, 10:32

Voilà où j'en suis:

Sur la page du site externe, on trouvera

Code : Tout sélectionner

<a href="http://monsite.com/traitement.php?p=..."> <img src="http://monsite.com/afficheimage.php?p=..."> </a>
Si p = 1, on doit montrer 1.gif
si p = 2, on doit montrer 2.gif

Mon code de affichelmage.php

Code : Tout sélectionner

if ($_GET['d']==1) { echo '<img src="chemin/1.gif" border="0" alt="">'; } else { echo '<img src="chemin/2.gif" border="0" alt="">'; }
Mais aucune image n'apparaît! Merci pour votre aide!

Avatar du membre
ViPHP
ViPHP | 3008 Messages

27 avr. 2006, 10:35

C'est normal :)

Tu passes en URL la variable "p" et tu la récupères avec "d".

Utilises $_GET['p'] au lieu de $_GET['d'].

Mammouth du PHP | 1353 Messages

27 avr. 2006, 13:58

Juste une proposition qui ne changera rien dans l immédiat mais qui risque de te simplifier la vie si tu rajoutes des cas... Au lieu de faire un if utilise directement ta variable :

Code : Tout sélectionner

echo '<img src="chemin/'.$_GET['d'].'.gif" border="0" alt="">';

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

27 avr. 2006, 14:58

Ton problème vient surtout du fait que la balise <img> n'est pas capable de traiter l'url que tu lui donnes... elle s'attend à trouver une image et tu lui retourne une chaine texte :)

Ce code n'est vallable que si afficheimage.php génère un flux avec le header d'une image :

Code : Tout sélectionner

<img src="http://monsite.com/afficheimage.php?p=...">
Puisque l'image existe, il te suffit de l'ouvrir directment sans passer par le fichier php : il te faut remplacer ce lien par le nom de l'image (et le chemin naturellement :))

Remplace ce code par celui que t'a donné charabia et oubli le afficheimage.php :)

Eléphant du PHP | 68 Messages

27 avr. 2006, 17:07

Ton problème vient surtout du fait que la balise <img> n'est pas capable de traiter l'url que tu lui donnes... elle s'attend à trouver une image et tu lui retourne une chaine texte :)

Ce code n'est vallable que si afficheimage.php génère un flux avec le header d'une image :

Code : Tout sélectionner

<img src="http://monsite.com/afficheimage.php?p=...">
Puisque l'image existe, il te suffit de l'ouvrir directment sans passer par le fichier php : il te faut remplacer ce lien par le nom de l'image (et le chemin naturellement :))

Remplace ce code par celui que t'a donné charabia et oubli le afficheimage.php :)
Tout à fait, le problème est bien là:Ton problème vient surtout du fait que la balise <img> n'est pas capable de traiter l'url que tu lui donnes... elle s'attend à trouver une image et tu lui retourne une chaine texte :)

Mais je ne peux pas donner le chemin direct puisque l'image à afficher ne sera déterminée que lors de afficheimage.php

Le même site externe utilisant ma balise n'aura pas forcément la même image aujourd'hui que demain, donc je ne peux pas lui donner un code avec le lien de l'image en dur puisque cela dépend d'autres paramètres!

Eléphant du PHP | 413 Messages

28 avr. 2006, 16:09

salut,

il suffit de faire dans ton source.php (ou afficheimage.php) :
$d = $_GET['d'];
readfile("chemin/$d.gif");
ça envoie le contenu de l'image directement au navigateur.

si ça suffit pas, ajoute au tout début de ce script :
header ("Content-type: image/png"); // ou ce qui va bien
ça devrait marcher ça. dis-nous.
--
Goeb

Eléphant du PHP | 68 Messages

28 avr. 2006, 17:57

Génial...ca marche! Merci beaucoup!!!!!!

Pour info, d'après mes tests, si on ajoute

Code : Tout sélectionner

header ("Content-type: image/png"); // ou ce qui va bien
ca ne fonctionne plus!

Peu importe....merci