Inclusion de fichier par un <SELECT ... dans un formulaire

Eléphant du PHP | 112 Messages

30 avr. 2008, 11:01

Bonjour,

Voici le problème.
Cherchant à afficher une message contenu dans un fichier à partir d'une séléction de ce fichier par un formulaire, voici comment je procède:
le fichier newsletter_1.php contient:
$message="patatipatata";
le fichier newsletter_2.php contient:
$message="patatichose";
etc
lefichier choix_newsletter.php contient:
<FORM action="envoi_mail.php" method="POST">
<P><SELECT NAME="newsletter">
   <OPTION VALUE="<?php include ("newsletter_1.php"); ?>">annonce_1</OPTION>
   <OPTION VALUE="<?php include("echonewsletter_2.php"); ?>">annonce_2</OPTION>
</SELECT></P>
<INPUT TYPE="submit" NAME="Envoi" VALUE="OK"/>
</FORM>
Enfin
envoi_mail.php contient:
$newsletter=$_POST['newsletter'];
echo $newsletter;
echo $message;
Mais à ce stade, je n'affiche pas "patatipatata" ou "patatichose" selon ma sélection, mais une chose inattendue avec plein de 3D==3D3D etc.
Comment dois-je procéder pour afficher correctement ma sélection?
Merci

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

30 avr. 2008, 11:26

Pourquoi réouvrir un sujet que tu as toi même effacé ?

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

30 avr. 2008, 11:54

Au lieu d'affecter à l'option la valeur de l'include contente toi d'affecter le nom de la newsletter.
L'include se fera sur la page envoi_mail.php avec
include($_POST['newsletter']);
Avec les vérifications de sécurité d'usage...

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 422 Messages

30 avr. 2008, 11:58

quand tu fais
<OPTION VALUE="<?php include ("newsletter_1.php"); ?>">annonce_1</OPTION> 
on attend que newsletter_1.php retourne une valeur qui va être utilisée comme value du tag option. Quand on regarde le code HTML généré, on doit avoir

Code : Tout sélectionner

<OPTION VALUE="identifiant_annonce_1">annonce_1</OPTION>
Or ton fichier newsletter_1.php fait uniquement l'affectation d'une variable message, mais ne l'affiche pas. Regarde donc ton code HTML et tu dois avoir un truc du style :

Code : Tout sélectionner

<OPTION VALUE=" ">annonce_1</OPTION>
avec tous les espaces et tous les retours chariots qu'il y a dans ton fichier newsletter_1.php. et donc à la valeur 3D... qui correspond bien à ce qu'il y a dans le VALUE. Les choses se passeraient différemment si ton fichier newsletter_1.php contenait :
<?php
echo "identifiant 1";
?>
Sans espace avant <?php et sans espace après ?>

Mais je crois que tu devrais commencer par regarder à quoi servent les fichiers include. Ils ne sont pas là pour gérer des options, mais pour découper ton code PHP en morceau (avoir x fichiers au lieu d'un seul énorme fichier) : tu ne vas quand même pas générer un fichier newsletter_x.php pour chacune des 1000 newsletters que tu vas créer. Pose-toi donc la question : Où est stocké ou comment est généré l'identifiant de la newsletter n°n ? Et après, utilise une boucle qui génère les champs option l'un après l'autre.

Eléphant du PHP | 112 Messages

30 avr. 2008, 15:46

Bon, merci pour toutes ces pistes, je vais travailler la_dessus....

P.S: J'ai effacé mon premier message, qui était identique, car je croyais avoir trouvé la solution. J'avais en fait créé un nouveau problème qui occultait le problème initial...

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

30 avr. 2008, 17:07

Et pourquoi remettre celui-ci en délestage maintenant alors que des réponses ont été données ?!??

En tous cas ça donne envie de réfléchir à tes problèmes :evil:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 112 Messages

01 mai 2008, 00:51

Bon,

J'ai enlevé "délestage", puisque ça te fait faire la grimace.
D'ailleurs je ne comprends pas très bien à quoi cela sert.
Oui je sais, "si tu sais pas à quoi ça sert, t'en sers pas, et vas te coucher!"
Alors bonsoir;
Et me voilà bonne pour une autre grimace.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

02 mai 2008, 09:50

V'la ta grimace :D

Délestage signifie que le sujet à été abandonné par son auteur sans réponse au problème soulevé...

Donc pour moi tu abandonnes le sujet alors que des réponses ont été données et tu ne donneras pas de solution.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute