Réponse acceptée !
Salut,
Décidément, il va vraiment falloir que je fasse un tuto sur comment fonctionne PHP par rapport au code HTML. Il s'agit là d'une des bases du fonctionnement d'un serveur web. Sans vouloir être méchant, il me parait difficile de faire du développement web sans avoir assimilé ça.
Une image générée à la volée, est un fichier complet envoyé par HTTP. Quand dans le code HTML le navigateur rencontre une balise du genre :
<img src="/images/monimage.png" alt="Mon image" />
le navigateur effectue une AUTRE requpete sur le serveur HTTP, lui demandant de lui envoye l'image. Il recevra l'image et l'affichera à sa place, en fonction du code HTML.
Le serveur HTTP ne fera rien d'autre que fournir un fichier image.
Or, dans ton template, tu veux afficher l'image... Erreur... Tu veux générer du HTML qui affiche une image. C'est pas pareil.
Dans ton template, tu lui fournis l'url de l'image. Le navigateur va alors demander au serveur HTTP de lui fournir l'image que le navigateur lui demande.
L'image peut être de n'importe quelle nature : un fichier image (.png, .jpg, .gif, ...) ou un script qui génère une image.
Après tout, qu'est-ce qu'une image si ce n'est une série de 1 et de 0 arrangés de telle façon qu'avec le bon traitement l'oeil ne perçoive quelque chose qu'il connait ou peu interpréter ?
L'URL peut donc tout à fait être du style :
<img src="/images/dynamiques/image.php?param=valeur" alt="Mon image générée à la volée" />
A ce moment là, le navigateur va appeler le script image.php avec comme argument param=valeur. C'est le serveur HTTP qui va se charger de gérer cette url (s'agit-il d'un fichier brut à renvoyer tel quel, ou bien d'un script à passer à un interpréteur, comme par exemple PHP ?).
Le navigateur s'attend simplement à recevoir des octets qui, mis bout à bout, forment une image. Il s'en cogne royal de savoir si l'url est celle d'un fichier, d'un script PHP, Python ou autre. Il demande simplement à Apache de lui envoyer les données qui correspondent à cette URL. Le navigateur, quand il les reçoit, puisqu'il s'agit d'une balise <img>, s'attend à recevoir une image et traite le résultat de sa demande comme telle : il affiche ce qu'il pense être une image (tant pis si c'en est pas une et que ça plante : il n'affichera rien)
Pour revenir à ton problème : tu dois prévoir d'un côté un script qui génère l'image que tu veux. Il doit être capable de recevoir les arguments qui lui permettent de déterminer quelle image afficher (ou pas d'argument, il peut très bien afficher toujours la même image).
Dans ton template, tu dois simplement assigner à la variable l'url qui permet d'obtenir cette image (l'URL du script qui génère cette image, avec ou sans paramètres).
J'espère que c'est clair, parce que c'est vraiment élémentaire.
Neige
N'hésitez pas à lire la doc de PHP avant de poser des questions triviales...