8792 sujets

Développement web côté serveur, CMS

Bonjour je souhaite créer une image avec un texte sélectionné à l'aide d'un menu déroulant.

En utilisant ce code avec texte prédéfini :

<?php
  header("Content-type: image/png");
  
  $largeur = 250;
  $hauteur = 200;
  $img = imageCreate($largeur, $hauteur);
  $rouge = imageColorAllocate($img, 200, 100, 100);
  $noir  = imageColorAllocate($img, 0, 0, 0);

  // Fond transparent
  //imageColorTransparent($img, $rouge);
  
  $titre        =  $_POST[menu'];
  $titre_police = 5;
  
  imageString($img, $titre_police,
             ($largeur-imageFontWidth($titre_police)*strlen("$titre"))/2,
             0, $titre, $noir);
  //imageTTFText($img, 15, 90, $largeur-10, $hauteur-10, $noir, "Gigi.ttf",
  //           "Copyright PHP Facile !");

  imagePNG($img);
  imageDestroy($img);  
?> 


Un rectangle rouge avec le texte "Histogramme" apparaît.
Si l'utilisateur fait un click droit et enregistre l'image dans son disque dur il aura le rectangle rouge avec le texte "Histogramme" sauvegardé.


Si on utilise un texte issu d'un menu déroulant avec $_POST['menu']="Histogramme" dans ce menu déroulant:

<?php
  header("Content-type: image/png");
  
  $largeur = 250;
  $hauteur = 200;
  $img = imageCreate($largeur, $hauteur);
  $rouge = imageColorAllocate($img, 200, 100, 100);
  $noir  = imageColorAllocate($img, 0, 0, 0);

  // Fond transparent
  //imageColorTransparent($img, $rouge);
  
  $titre        = "Histogramme";
  $titre_police = 5;
  
  imageString($img, $titre_police,
             ($largeur-imageFontWidth($titre_police)*strlen("$titre"))/2,
             0, $titre, $noir);
  //imageTTFText($img, 15, 90, $largeur-10, $hauteur-10, $noir, "Gigi.ttf",
  //           "Copyright PHP Facile !");

  imagePNG($img);
  imageDestroy($img);  
?> 


Un rectangle rouge avec le texte "Histogramme" apparaît.
Si l'utilisateur fait un click droit et enregistre l'image dans son disque dur il aura le rectangle rouge sans le texte "Histogramme" sauvegardé.

Savez-vous pourquoi le texte issu du menu déroulant n’apparaît pas dans l’enregistrement ?

Merci d’avance de votre aide.
Modifié par Nandofive (16 Sep 2006 - 18:11)
l'erreur oit se trouve là:
$titre = $_POST[menu'];
il manque un '
$titre = $_POST['menu'];

etonnant que php ne génère pas d'erreur Smiley smile

mettre ces 2 lignes au début du code php permet (entre autres) de retrouver les erreur de se type:
error_reporting(E_ALL);
ini_set('display_errors', true);
la c'est moi qui est fait une boulette en transcrivant le code

C'est bien ça que j'ai :

$titre = $_POST['menu']; avec le ' manquant mais je ne comprend toujours pas pourquoi lorsque le texte est défini celui-ci s'enregistre avec l'image et si le texte est attribué à la suite d'un choix dans un menu déroulant il ne s'enregistre pas. Smiley decu
au niveau du formulaire c'est bien:
<form method="POST" ...
sinon le contenu de la variable se retrouve dans $_GET[]
pour attraper les résultats $_GET[] et $_POST[] c'est $_REQUEST[]

Smiley cligne
desg a écrit :
au niveau du formulaire c'est bien:
<form method="POST" ...
sinon le contenu de la variable se retrouve dans $_GET[]
pour attraper les résultats $_GET[] et $_POST[] c'est $_REQUEST[]

Smiley cligne


Vraimment merci à toi de ton aide.

En fait j'ai remplacé le method="POST" par method="GET" et je récupère les données par $_GET[] et cela fonctionne parfaitement. 3 semaines que je tournais en rond. Smiley cligne
Administrateur
Si GET fonctionne, il n'y a pas de raison que POST ne fonctionne pas, nan?
A condition de modifier quelques noms côté page web (formulaire) et côté serveur (récupérer _POST et pas _GET). Etonnant ...