Page 1 sur 1

Bouton radio + formulaire

Posté : 22 déc. 2009, 18:04
par dark_maob
Bonjour,
Je viens une nouvelle fois vers vous car j'ai un petit soucis avec mon formulaire ... Ne connaissant pas le PHP, j'ai réussit tant bien que mal a en faire un fonctionnel à 'aide de tuto trouver sur Internet.. Il fonctionne parfaitement, y'a pas de soucis..

Cependant, je voudrais rajouté deux boutons radio, mais je ne sais pas comment les récupérer ...
 <?php
	$destinataire = '[email protected]';

	// copie ? (envoie une copie au visiteur)
	$copie = 'oui'; // 'oui' ou 'non'

	// Messages de confirmation du mail
	$message_envoye = "Votre message nous est bien parvenu !";
	$message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer SVP.";

	// Messages d'erreur du formulaire
	$message_erreur_formulaire = "Merci de <strong>remplir le formulaire ci-dessous.</strong>";
	$message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";

	/*
		********************************************************************************************
		FIN DE LA CONFIGURATION
		********************************************************************************************
	*/

	// on teste si le formulaire a été soumis
	if (!isset($_POST['envoi']))
	{
		// formulaire non envoyé
		echo '<p>'.$message_erreur_formulaire.'</p>'."\n";
	}
	else
	{
		/*
		 * cette fonction sert à nettoyer et enregistrer un texte
		 */
		function Rec($text)
		{
			$text = trim($text); // delete white spaces after & before text
			if (1 === get_magic_quotes_gpc())
			{
				$stripslashes = create_function('$txt', 'return stripslashes($txt);');
			}
			else
			{
				$stripslashes = create_function('$txt', 'return $txt;');
			}

			// magic quotes ?
			$text = $stripslashes($text);
			$text = htmlspecialchars($text, ENT_QUOTES); // converts to string with " and ' as well
			$text = nl2br($text);
			return $text;
		};

		/*
		 * Cette fonction sert à vérifier la syntaxe d'un email
		 */
		function IsEmail($email)
		{
			$pattern = "^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,7}$";
			return (eregi($pattern,$email)) ? true : false;
		};

		// formulaire envoyé, on récupère tous les champs.
		$nom     = (isset($_POST['nom']))     ? Rec($_POST['nom'])     : '';
		$prenom     = (isset($_POST['prenom']))     ? Rec($_POST['prenom'])     : '';
		$email   = (isset($_POST['email']))   ? Rec($_POST['email'])   : '';
		$objet   = (isset($_POST['objet']))   ? Rec($_POST['objet'])   : '';
		$message = (isset($_POST['message'])) ? Rec($_POST['message']) : '';

		// On va vérifier les variables et l'email ...
		$email = (IsEmail($email)) ? $email : ''; // soit l'email est vide si erroné, soit il vaut l'email entré

		if (($nom != '') && ($email != '') && ($objet != '') && ($message != ''))
		{
			// les 4 variables sont remplies, on génère puis envoie le mail
			$headers = 'From: '.$nom.' '.$prenom.' <'.$email.'>' . "\r\n";

			// envoyer une copie au visiteur ?
			if ($copie == 'oui')
			{
				$cible = $destinataire.','.$email;
			}
			else
			{
				$cible = $destinataire;
			};

			// Remplacement de certains caractères spéciaux
			$message = str_replace("'","'",$message);
			$message = str_replace("&#8217;","'",$message);
			$message = str_replace(""",'"',$message);
			$message = str_replace('<br>','',$message);
			$message = str_replace('<br />','',$message);
			$message = str_replace("<","<",$message);
			$message = str_replace(">",">",$message);
			$message = str_replace("&","&",$message);

			// Envoi du mail
			if (mail($cible, $objet, $message, $headers))
			{
				echo '<p>'.$message_envoye.'</p>'."\n";
			}
			else
			{
				echo '<p>'.$message_non_envoye.'</p>'."\n";
			};
		}
		else
		{
			// une des 3 variables (ou plus) est vide ...
			echo '<p>'.$message_formulaire_invalide.' </p>'."\n";
		};
	}; // fin du if (!isset($_POST['envoi']))
?>
            
<form id="contact" method="post" action="contact.php">
	  <table border="0" align="center" cellpadding="0" cellspacing="0">
        <tr>
          <td width="101" height="30" align="left" valign="middle" class="surligne_pomme">
              <span class="surligne"><label for="label2">Nom :</label></span>
                    </td>
          <td colspan="2" align="left" valign="middle"><input type="text" id="nom" name="nom" tabindex="1" />
            <br /></td>
        </tr>
        <tr>
          <td height="30" align="left" valign="middle" class="surligne_pomme">
              <label for="label4" class="surligne">Pr&eacute;nom :</label></td>
          <td height="30" colspan="2" align="left" valign="middle">
            <input type="text" id="label" name="prenom" tabindex="1" /></td>
        </tr>
        <tr>
          <td height="30" align="left" valign="middle" class="surligne_pomme"><label for="label2"><span class="surligne">Email :</span></label>
          </td>
          <td height="30" colspan="2" align="left" valign="middle"><input type="text" id="email" name="email" tabindex="2" /></td>
        </tr>
        <tr>
          <td height="30" align="left" valign="middle" class="surligne_pomme">
            <label for="label5" class="surligne">Vous &ecirc;tes : </label></td>
          <td width="77" height="30" align="left" valign="middle">
           
            <input type="radio" name="choix" value="Client" />Client
           </td>
          <td width="181" align="left" valign="middle"><input type="radio" name="choix" value="Fournisseur" />Fournisseur</td>
        </tr>
        <tr>
          <td height="30" align="left" valign="middle" class="surligne_pomme">
              <label for="label3" class="surligne">Objet :</label></td>
          <td height="30" colspan="2" align="left" valign="middle">
            <input name="objet" type="text" id="objet" tabindex="3" value="Demande d'information" size="30" /></td>
        </tr>
        <tr>
          <td height="30" align="left" valign="middle" class="surligne">
            <span class="surligne_pomme">Message : </span></td>
          <td colspan="2" rowspan="2" align="left" valign="middle"><textarea id="message" name="message" tabindex="4" cols="30" rows="6"></textarea></td>
        </tr>
        <tr>
          <td align="left" valign="top">&nbsp;</td>
        </tr>
        <tr>
          <td height="30" colspan="3" align="left" valign="middle">
              <div align="center"> <br />
              <input type="submit" name="envoi" value="Envoyer le formulaire !" />
              </div></td>
        </tr>
      </table>
	        </form>
Merci :oops:

Re: Bouton radio + formulaire

Posté : 23 déc. 2009, 23:15
par Ryle
Les boutons radios et les cases à cocher fonctionnent de la même manière que les autres champs du formulaire, à une petite exception : si la case ou le bouton n'est pas coché, rien n'est envoyé.

En gros, d'après ton code, il te suffit de vérifier la valeur de la variable $_POST['choix'] lorsque ton formulaire a été envoyé : si la valeur est "Client", c'est que le bouton client a été coché, si la valeur est "Fournisseur", c'est le bouton fournisseur qui a été coché. Si jamais la variable $_POST['choix'] n'est pas définie, c'est qu'aucun des boutons n'a été coché par l'utilisateur (il est donc important de vérifier si ta variable existe avec isSet() avant de tester sa valeur :))

Re: Bouton radio + formulaire

Posté : 04 janv. 2010, 15:40
par dark_maob
Meric Ryle, avec ces quelques éléments j'ai pu faire quelques tests. J'arrive à vérifier si ma variable choix est remplie, si elle est vide, j'ai bien mon message qui m'indique que tout les champs ne sont pas remplit.

J'ai juste un soucis maintenant pour afficher mon résultat soit "client" soit "fournisseur" dans le corps du mail que je reçois :? J'imagine que je dois rajouté une ligne de type :
echo "Je suis un : <b>" . $_POST[choix] . "</b><br>";
Mais je ne sais pas trop où :oops:

Re: Bouton radio + formulaire

Posté : 04 janv. 2010, 17:25
par Ryle
C'est à peu près ça en effet :)

Tout d'abord, ce n'est pas un echo qu'il te faut faire (le echo c'est pour afficher à l'écran, hors ici, c'est dans ton mail que tu veux avoir l'information). Ce dont tu as besoin, c'est de compléter le corps du message qui est envoyé.

Actuellement, pour envoyer ton mail tu fais appel à la fonction : mail($cible, $objet, $message, $headers)

- $cible contient l'adresse mail du destinataire
- $objet contient l'objet du mail
- $message le corps du message
- $headers les infos complémentaires du mail..

Ce qu'il te faut donc faire c'est modifier la variable $message pour y inclure le texte que tu souhaites ajouter. Ou de façon plus simple, créer ton corps de message dans lequel tu integreras toutes les infos dont tu as besoin.

Par exemple :
$corpsDuMail = ''; // on créer une variable qui contiendra le corps du message, que l'on va compléter au fur et à mesure
$corpsDuMail.= 'Bonjour,' . "\n\n"; // on commence par dire bonjour parce qu'on est bien élevé
$corpsDuMail.= "Je suis un : " . $_POST['choix'] . "\n\n"; // on ajoute l'info client/fournisseur 
// ... 
$corpsDuMail.= $message; // à un moment, on intègre le message de l'utilisateur (histoire de savoir ce qu'il nous veut) 
// ... 

// Et une fois le corps du mail prêt à être envoyé, ben... on l'envoi :)
if (mail($cible, $objet, $corpsDuMail, $headers))
 ... 

Re: Bouton radio + formulaire

Posté : 04 janv. 2010, 19:33
par dark_maob
Yes c'est nikel, ça fonctionne :wink:

Je te remercie Ryle =D>

:love5: :love7: :agenouille:

Re: Bouton radio + formulaire

Posté : 04 janv. 2010, 19:48
par zeus
Modération :
Puisque ta question est résolue, je l'indique en ajoutant la petite icône verte "Résolu" pour que les futures personnes qui voudront consulter ce sujet sachent qu'il contient une solution.

TTu peux réaliser cette opération toi-même en cliquant sur le bouton Image en haut à droite de la réponse qui te semble la plus pertinente, si tu as posté le 1er message en tant que membre (inscrit et identifié).