récupération formulaire <SELECT

Eléphant du PHP | 101 Messages

19 janv. 2006, 14:13

BOnjour à tous,
Je souhaite faire un formulaire pour envoyer un message à une adresse email. Pour cela, dans un fichier html j'utilise un select suivant pour donner la possibilité à l'utilisateur de choisir son destinataire :

Code : Tout sélectionner

<form method=post action="résultatenvoi.php"> <Select name="destinatario"><br /> <option value = "a">A@truc <option value = "b">B@trucsdfsdfsdfs <option value = "c">C@truc </select> </form>
Or je n'arrive pas à récupérer les données de ce select dans mon résultatenvoi.php, voici le code que j'ai mis :
if ($_POST_VARS['destinatario'] == 'a')
    	$dest=$_POST_VARS['a'];
elseif ($_POST_VARS['destinatario'] == 'b')		
	$dest=$_POST_VARS['b'];
elseif ($_POST_VARS['destinatario'] == 'c')
	$dest=$_POST_VARS['c'];
echo $dest;
En fait $dest ne s'affiche pas... :? qu'est-ce que je n'ai pas bien fait?

éventuellement, est-ce la bonne méthode? yen a-t-il d'autres?
Merci d'avance.
A+
Modifié en dernier par troudball le 19 janv. 2006, 14:17, modifié 1 fois.
nan!

Mammouth du PHP | 19672 Messages

19 janv. 2006, 14:15

Jette un coup d'oeil ICI
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 101 Messages

19 janv. 2006, 14:18

quelle réactivité :D
nan!

Invité
Invité n'ayant pas de compte PHPfrance

19 janv. 2006, 19:42

excuse moi mais jene comprends pas l'écriture :
$prenom    = isset($_POST['prenom'])    ? trim($_POST['prenom'])    : ""; 
c'est quoi ces ":" et "?" est un opérateur???

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

19 janv. 2006, 19:47

il s'agit de l'opérateur ternaire, regarde ici pour plus de détails

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

Invité
Invité n'ayant pas de compte PHPfrance

19 janv. 2006, 19:56

c'est de l'Orienté object?

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

19 janv. 2006, 20:16

c'est de l'Orienté object?
Absolument pas, il ne s'agit ni de php5 ni de classe juste d'un test "if" "else" traditionnel

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

Mammouth du PHP | 19672 Messages

19 janv. 2006, 20:44

En clair :
$prenom    = isset($_POST['prenom'])    ? trim($_POST['prenom'])    : "";
Est strictement équivalent à :
if(isset($_POST['prenom']))
{
    $prenom    =  trim($_POST['prenom']);
}
else
    $prenom    =  "";
}
Mais on fait la même chos e sur une seule ligne.
- le ? vérifie la si condition testée renvoie TRUE et dans ce cas affecte la valeur suivante à la variable;
- le : fait office de else et si la condition testée renvoie FALSE, alors on affecte la seconde valeur à la variable.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 101 Messages

20 janv. 2006, 14:23

Comme çà c'est clair :D
Sans vouloir etre trop pesant, (je sais que le form proposé est très complte) mais pourquoi ma méthode ne marche pas?
nan!

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

20 janv. 2006, 16:14

Je dirais qu'il manque les fermetures d'option => </option>

et une mise a jour sur $_POST_VARS qui devient $_POST

/!\ 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 | 101 Messages

23 janv. 2006, 12:24

Dans le très bon code de cyrano, il y a aussi des echo avec des paraenthèse:

Code : Tout sélectionner

<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post">
c'est disons le seul code que je ne comprends pas, cela veut-il dire qu e l'on récupère les valeurs dans le document meme? pouvez m'expliquer en deux mots ce code?

Merci d'avance!
nan!

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

23 janv. 2006, 22:56

en 2 mots :wink:
ceci
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post">

est la même chose que cela:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> 
les parenthèses ne changent rien au résultat du echo, c'est à dire l'affichage du chemin du fichier courant.

/!\ 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 | 101 Messages

24 janv. 2006, 10:44

OK merci pour tout :)
nan!

Eléphant du PHP | 101 Messages

27 janv. 2006, 13:47

salut à tous,
le code cyrano est vraiment très bien! :D Je l'ai ajusté à mes besoins et çà fonctionne très bien... pour le controle des données. Par contre après le commentaire :
/**
* Si aucun des champs obligatoire n'est vide et les données sont valides:
* Traitement des données : ce sujet n'est pas abordé ici, on ne voit que la validation.
* Néanmoins, l'affichdestinatario des données recueillies est un traitement en soi.
* Libre à chacun d'adapter pour faire un autre type de traitement.
*/
j'ai ajouté le code : mail ("arguments") avec mes arguments spécifiques :
et çà n'envoie aucun mail ???

voici mon code :
mail($tomail, $prenom, $remark);
echo $tomail;
echo $prenom;
echo $remark;
les 3 echo me servent de test et les variables sont toutes retourné de manière correcte...

Je ne comprends pas... Peut-etre que cyrano peut m'en dire un peu plus...

A l'aide :)
A+
nan!

Invité
Invité n'ayant pas de compte PHPfrance

30 janv. 2006, 11:18

j'ai meme fait un test :
if ( mail($tomail, $prenom, $remark) )
   echo "Mail envoyé avec succès";
else
   echo "Echec lors de l'envoi du mail";
et j'ai le message "Mail envoyé avec succès" meme quand je suis déconnecté...
J'ai fait le test sur mon ordo de dévellopmenent et sur un server, le résultat est le meme : en réalité, aucun message n'est envoyé...