traiter formulaire et checkbox

une novice
Invité n'ayant pas de compte PHPfrance

16 mai 2006, 11:00

Bonjour à tous,

Je viens de créer une formulaire avec des champs "nom" e-mail"...avec ça pas de problème !
Là où ça se complique c'est pour récupérer les données des cases à cocher.

Code : Tout sélectionner

<input type="checkbox" name="assistera" value=""> assistera<br> < input type="checkbox" name="representepar" value=""> ne pourra pas assister mais sera repr&eacute;sent&eacute;(e) par <input name="represente" type="text" value="" size="35"> <br> <input type="checkbox" name="assisterapas" value=""> n'assistera pas </strong></p>
en php, comment fait-on pour récupérer les infos...savoir quelle case a été cochée ??
<?php

$destinataire = "[email protected]";
if ($assistera == 1)
	{
	$message .= "assistera \n";
	echo "Assistera\n";
	}
if ($representepar == 1)
	{
	$message .= "sera represente par : $represente \n";
	echo "Représenté par\n";
	}
if ($assisterapas == 1)
	{
	$message .= "n'assistera pas \n";
	echo "Assistera pas\n";
	}
mail($destinataire, $sujet, $message);
?>
Merci d'avance pour votre aide qui va m'être très précieuse !

ViPHP
ViPHP | 3607 Messages

16 mai 2006, 11:17

je vais te répondre en général...
si tu as un formulaire:
<form method="post" action="traitement.php">
<input type="..." name="nom" />
<input type="submit" value="envoyer" />
</form>
la méthode pour récupérer les valeures des champs est la suivante:
<?php
if (isset($_POST['nom'])){
   $nom=$_POST['nom'];
}
//si la méthode de ton form et get, tu remplace POST par GET
//tu peux aussi tester si la variable est non vide, sinon ça veut dire que
//l'utilisateur n'a pas rempli le champ.
//pour ce faire tu remplace if (isset($_POST['nom'])) par 
//if (isset($_POST['nom']) && $_POST['nom']!="")
?>
voila j'espère que ça répond à la question?

Avatar du membre
ViPHP
ViPHP | 3008 Messages

16 mai 2006, 11:25

Pour ce que tu veux faire, il te suffit de détecter si la variable existe avec isset() :
if(isset($_POST['assistera'])) echo "assistera";
if(isset($_POST['representepar'])) echo "repre";
if(isset($_POST['assisterapas'])) echo "assistera pas";

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

16 mai 2006, 11:31

De manière un petit peu plus précise, pour chaque champ tu récupères quelque chose de la forme : NomDuChamp => ValeurDuChamp

Pour une case à cocher, la valeur de celle-ci n'est envoyée que si celle-ci est cochée. Ainsi tu peux effectivement utiliser isSet pour savoir si elle a été passée ou non.

Si ta ckeckbox ne contient pas l'attribut value, la valeur retournée par défaut lorsque celle-ci est cochée est "on", sinon c'est la valeur spécifiée qui est utilisée.
Si tu laisse l'attribut value à vide, alors la valeur associée quand la case est cochée sera vide. La seule manière de tester si la case est cochée est de vérifier si elle est définie dans $_POST ou $_GET.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

16 mai 2006, 23:34

il y a aussi un petit tuto dans la FAQ très utile :wink:

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