Page 1 sur 1

Récupération d'une valeur select

Posté : 06 déc. 2016, 22:21
par yeyene
Bonjour,

Je poste ce post en espérant avoir une lumière sur la récupération d'une valeur select dans un formulaire.
Dans une formulaire, j'ai plusieurs champs de type input et select. La validation du formulaire fonctionne très bien et se fait par un autre fichier.

Mon problème est que quand je reçois le résultat du formulaire par mail, je ne récupère que la valeur des champs input et les champs select restent vide.

Le code du formulaire :
<form class="form" method="POST" action="verification.php">
       								
								<select name="vehicule" id="vehicule" class="selectpicker">
									<option value="FIAT Panda">FIAT Panda</option>
									<option value="NISSAN Micra">NISSAN Micra</option>
									<option value="SEAT Ibiza">SEAT Ibiza</option>
									<option value="FIAT Fiorino">FIAT Fiorino</option>
									<option value="NISSAN NV200">NISSAN NV200</option>
									<option value="HYUNDAI H1">HYUNDAI H1</option>
								</select>
								<input type="date" name="date" id="date" placeholder="Date d'arrivée" class="wheel-half-width pull-left">
								<input type="time" name="heure" id="heure" placeholder="Heure d'arrivée" class="wheel-half-width pull-right marg-r0">
								<input type="text" name="compagnie" id="compagnie" placeholder="Compagnie" class="wheel-half-width pull-left">
								<input type="text" name="vol" id="vol" placeholder="N° du vol" class="wheel-half-width pull-right marg-r0">
							   		<p>
										<button class="wheel-btn">Envoyer votre demande</button>
									</p>
							</form>
Le code du fichier de vérification et d'envoi du mail
<?php
$vehicule = ($_POST['vehicule']);
	$newdate = date_create($_POST['date']);                
	$datedeb = date_format($newdate,"d-m-Y");
	$heure = ($_POST['heure']);
	$compagnie = ($_POST['compagnie']);
	$vol = ($_POST['vol']);
	$note = ($_POST['note']);
	$subject = "Réservation envoyée depuis le site.";
	
<!-- ligne de test du page
	echo $personne;
	echo $vehicule;
	echo $compagnie;
	
	
		$message .= "<b>Véhicule: </b> ".$vehicule."<br>";
		$message .= "<b>Date d'arrivée: </b> ".$datedeb."<br>";
		$message .= "<b>Heure d'arrivée: </b> ".$heure."<br>";
		$message .= "<b>Comapagnie aérienne: </b> ".$compagnie."<br>";
		$message .= "<b>N° de vol: </b> ".$vol."<br>";
		$message .= "<b>Note d'information: </b> ".$note."<br>";

			$headers = 'From: '.$nom.'<'.$email.'>'."\r\n";
			$headers .= 'Reply-to: <'.$email.'>'."\r\n";
			$headers .= 'Content-Type: text/html; charset=utf-8'."\r\n";
			$to = '[email protected]';
Merci par avance pour votre aide !

Re: Récupération d'une valeur select

Posté : 06 déc. 2016, 23:34
par StyiT
Salut,

quand je prend ton code et que je teste chez moi, je récupère bel et bien la valeur select.
je vois pas très bien quel est ton problème, peux tu décrire un peu plus ton app stp =)

STYIT.

Re: Récupération d'une valeur select

Posté : 06 déc. 2016, 23:51
par yeyene
Bonjour,

Merci pour le retour, c'est que chez moi ça ne marche pas !

Je vais retester à nouveau

Re: Récupération d'une valeur select

Posté : 07 déc. 2016, 10:51
par Gregory
Hello

Oui ton code devrait fonctionner mais juste une chose il faut aussi penser à la sécurité et ne jamais faire confiance à ce que peut rentrer l'utilisateur.
Je te conseille de regarder du côté de input_filter.

G.

Re: Récupération d'une valeur select

Posté : 07 déc. 2016, 11:47
par two3d
tu peux utiliser la fonction extract() de PHP qui te facilitera la vie ;)

par exemple:
extract($_POST);
echo $vehicule;//sera directement reconnu, pas besoin de faire: $vehicule = $_POST['vehicule'];

Re: Récupération d'une valeur select

Posté : 08 déc. 2016, 12:38
par moogli
@ two3d : c'est un très mauvaise idée, parce qu'il y a un risque d'écrasement avec d'autre variable déjà existante.
D'ailleurs tu ne sais pas ce qu'il a dans le formulaire (ce n'ai pas parce que tu as envoyer un formulaire html qu tu vas recevoir le même ;) ). Sais tu ce qu'il se passe si il y a un champs de formulaire qui s'appelle _SESSION ou _SERVER ?
D'ailleurs autant éviter les variables inutiles autant utiliser les tableaux.
De plus cela n'évite pas, même oblige, l'utilisation de isset / empty.
Dernière chose, tu perds l'information sur l'origine de la variable, ce qui parfois, est utile ;)

pour le problème de base il nous faut plus d'info parce que le code indiqué ici n'étant pas syntaxiquement correct je suppose qu'il est incomplet (sans parler des variable $nom et $email qui n'existe pas).
Code testé et fonctionnel
<?php
if (!empty($_POST)) {
    $subject = "Réservation envoyée depuis le site.";

    $message = "<b>Véhicule: </b> ". $_POST['vehicule']."<br>";
    $message .= "<b>Date d'arrivée: </b> ".date_format(date_create($_POST['date']), "d-m-Y")."<br>";
    $message .= "<b>Heure d'arrivée: </b> ".$_POST['heure']."<br>";
    $message .= "<b>Compagnie aérienne: </b> ".$_POST['compagnie']."<br>";
    $message .= "<b>N° de vol: </b> ".$_POST['vol']."<br>";
    xdebug_var_dump($message);
}
?>
<form class="form" method="POST" action="">

  <select name="vehicule" id="vehicule" class="selectpicker">
    <option value="FIAT Panda">FIAT Panda</option>
    <option value="NISSAN Micra">NISSAN Micra</option>
    <option value="SEAT Ibiza">SEAT Ibiza</option>
    <option value="FIAT Fiorino">FIAT Fiorino</option>
    <option value="NISSAN NV200">NISSAN NV200</option>
    <option value="HYUNDAI H1">HYUNDAI H1</option>
  </select>
  <input type="date" name="date" id="date" placeholder="Date d'arrivée" class="wheel-half-width pull-left">
  <input type="time" name="heure" id="heure" placeholder="Heure d'arrivée" class="wheel-half-width pull-right marg-r0">
  <input type="text" name="compagnie" id="compagnie" placeholder="Compagnie" class="wheel-half-width pull-left">
  <input type="text" name="vol" id="vol" placeholder="N° du vol" class="wheel-half-width pull-right marg-r0">
  <p>
      <button class="wheel-btn">Envoyer votre demande</button>
  </p>
</form>
si tu n'as pas xebug (tu devrais l'envisagert) remplace xdebug_var_dump par var_dump.
le code affiche : D:\dev\wsphp\test\pff.php:11:string '<b>Véhicule: </b> FIAT Panda<br><b>Date d'arrivée: </b> 01-12-2016<br><b>Heure d'arrivée: </b> 12:15<br><b>Compagnie aérienne: </b> 25<br><b>N° de vol: </b> osef<br>' (length=170)
ce qui correspond à mes choix.

J'ai
- virer la partie mail étant donné que les variable $nom et $email n'existe pas.
- virer la partie demandant un champ de formulaire "note"
- remplacer l'auto concaténation de la première ligne pour utiliser une affectation (concaténation sur une variable qui n'existe pas c'est moyen).

Bref le code semble correct (après ajustement que j'indique) il faut soit nous donner plus d'info soit utiliser un débogueur (xdebug par exemple).


@+

Re: Récupération d'une valeur select

Posté : 09 déc. 2016, 16:39
par two3d
@ two3d : c'est un très mauvaise idée, parce qu'il y a un risque d'écrasement avec d'autre variable déjà existante.
D'ailleurs tu ne sais pas ce qu'il a dans le formulaire (ce n'ai pas parce que tu as envoyer un formulaire html qu tu vas recevoir le même ;) ). Sais tu ce qu'il se passe si il y a un champs de formulaire qui s'appelle _SESSION ou _SERVER ?
D'ailleurs autant éviter les variables inutiles autant utiliser les tableaux.
De plus cela n'évite pas, même oblige, l'utilisation de isset / empty.
Toujours en vérifiant si !empty et que c'est bien la valeur de retour que j'attends, bien évidement ;)
au passage, j'ai réalisé que l'utilisation d'empty t'évite de faire if(isset avant if(empty (empty vérifi si isset je veux dire ;) )
Dernière chose, tu perds l'information sur l'origine de la variable, ce qui parfois, est utile ;)
Je comprend pas, si c'est un $_FILES par exemple tu veux dire ?

Re: Récupération d'une valeur select

Posté : 10 déc. 2016, 21:16
par moogli
$_GET : url
$_POST : formulaire
$_FILES fichier

si tu fais des extrtact($_GET); extract($_POST); etc..
tu ne sais pas d'où vient $toto et cela peu être intéressant de savoir si c'est de l'url où du formulaire.
par exemple dans le cas d'une architecture REST tu peux passer l'id en url et la ressource dans le corps de la requête (pour modif total) si tu imagines la même chose avec un formulaire tu va te retrouver facilement avec un id dans l'url eet un dans le formulaire tu vas en perdre un (celui du 1er extract).
c'est aussi un cas d'écrasement de variable.

que ce passe t il avec un formulaire auquel on ajoute innocemment
<input name="user" value="admin" />
et coté php
<?php
$user = $_SESSION['user'];// oui c'est un peu con mais  courant). 
extract($_POST);
// oups $user === admin quoi qu'il arrive
?>
comme tu ne sais pas ce que tu v recevoir du client tu n sais ce qui va se passer avec se genre de fonction.
c'est d'ailleurs en parti pour cela que les register globals ont étaient supprimées :_)

@+

Re: Récupération d'une valeur select

Posté : 08 nov. 2017, 12:43
par yeyene
Avec beaucoup de retard, je vous remercie tous pour vos retour :)

Re: Récupération d'une valeur select

Posté : 08 janv. 2018, 22:42
par two3d
avec plaisir

ceci dit je vérifie toujours avec

Code : Tout sélectionner

if(isset($_POST['name'])){
en début de fichier et je fait souvent des preg_match sur les résultats pour voir si c'est ce que j'attendais