IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Formulaire contact multi champs


Sujet :

Langage PHP

  1. #1
    nal
    nal est déconnecté
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 129
    Points : 56
    Points
    56
    Par défaut Formulaire contact multi champs
    Bonjour,

    Juste une petite question
    j'ai un formulaire de contact avec des champs: nom,
    email, objet et message.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
     
    <?php
     include('connect.php');
    	/*
    		********************************************************************************************
    		CONFIGURATION
    		********************************************************************************************
    	*/
    	// destinataire est votre adresse mail. Pour envoyer à plusieurs à la fois, séparez-les par une virgule
    	$destinataire = 'alnnalis.N@gmail.com';
     
    	// copie ? (envoie une copie au visiteur)
    	$copie = 'oui';
     
    	// Action du formulaire (si votre page a des paramètres dans l'URL)
    	// si cette page est index.php?page=contact alors mettez index.php?page=contact
    	// sinon, laissez vide
    	$form_action = '';
     
    	// 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.";
     
    	// Message d'erreur du formulaire
    	$message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";
     
     
     
     
    	/*
    		********************************************************************************************
    		FIN DE LA CONFIGURATION
    		********************************************************************************************
    	*/
     
    	/*
    	 * 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;
    	};
     
    	$err_formulaire = false; // sert pour remplir le formulaire en cas d'erreur si besoin
     
    	// si formulaire envoyé, on récupère tous les champs. Sinon, on initialise les variables.
    	$nom     = (isset($_POST['nom']))     ? Rec($_POST['nom'])     : '';
    	$email   = (isset($_POST['email']))   ? Rec($_POST['email'])   : '';
    	$objet   = (isset($_POST['objet']))   ? Rec($_POST['objet'])   : '';
    	$message = (isset($_POST['message'])) ? Rec($_POST['message']) : '';
     
    	if (isset($_POST['envoi']))
    	{
    		// 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é
    		$err_formulaire = (IsEmail($email)) ? false : true;
     
    		if (($nom != '') && ($email != '') && ($objet != '') && ($message != ''))
    		{
    			// les 4 variables sont remplies, on génère puis envoie le mail
    			$headers = 'From: '.$nom.' <'.$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 = html_entity_decode($message);
    			$message = str_replace(''',"'",$message);
    			$message = str_replace('’',"'",$message);
    			$message = str_replace('<br>','',$message);
    			$message = str_replace('<br />','',$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.' <a href="contact.php">Retour au formulaire</a></p>'."\n";
    			$err_formulaire = true;
    		};
    	}; // fin du if (!isset($_POST['envoi']))
    
    	if (($err_formulaire) || (!isset($_POST['envoi'])))
    	{
    		// afficher le formulaire
    		echo '<form id="contact" method="post" action="'.$form_action.'">'."\n";
    		echo '	<fieldset><legend>Vos coordonnées</legend>'."\n";
    		echo '		<p>'."\n";
    		echo '			<label for="nom">Nom :</label>'."\n";
    		echo '			<input type="text" id="nom" name="nom" value="'.stripslashes($nom).'" tabindex="1" />'."\n";
    		echo '		</p>'."\n";
    		echo '		<p>'."\n";
    		echo '			<label for="email">Email :</label>'."\n";
    		echo '			<input type="text" id="email" name="email" value="'.stripslashes($email).'" tabindex="2" />'."\n";
    		echo '		</p>'."\n";
    		echo '	</fieldset>'."\n";
    
    		echo '	<fieldset><legend>Votre message :</legend>'."\n";
    		echo '		<p>'."\n";
    		echo '			<label for="objet">Bien :</label>'."\n";
    		echo '			<textarea id="objet" name="objet" tabindex="3" cols="30" rows="1">'.stripslashes($objet).'</textarea>'."\n";
    		echo '		</p>'."\n";
    		echo '		<p>'."\n";
    		echo '			<label for="message">Tel et Message :</label>'."\n";
    		echo '			<textarea id="message" name="message" tabindex="4" cols="45" rows="8">'.stripslashes($message).'</textarea>'."\n";
    		echo '		</p>'."\n";
                   
    		echo '	</fieldset>'."\n";
    
                    
    		
    		
    
    		echo '	<div style="left: 12%"><input type="submit" name="envoi" value="Envoyer le formulaire" /></div>'."\n";
    		echo '</form>'."\n";
    	};
    ?>
    les variables en sont donc:
    $nom --> le nom de l'envoyeur
    $email --> l'adresse mail de l'envoyeur
    $objet --> dans le champs objet de l'email
    $message --> dans le corps du message

    Ma question: serait t-il possible de rajouter un champs "Tel"
    $tel qui s'afficherait dans le corps du message en plus de ce que contient $message?
    Je pensais créer une nouvelle variable $message2 qui contiendrait $message + $tel....(mais c'est pas sûr que ce soit la bonne piste...)
    Quelqu'un verrait il comment modifier le code pour ça??
    Merci pour votre aide

  2. #2
    nal
    nal est déconnecté
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 129
    Points : 56
    Points
    56
    Par défaut formulaire de contact avec champs obligatoires
    J'ai finallement trouvé un script de formulaire
    a plusieurs champs modifiables Nom, mail, tel, adresse, message ect... assez pratique
    pour ce que ça intéresse:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
     
    <?php
    // Couleur du texte des champs si erreur saisie 
    $color_font_warn="#FF0000";
    // Couleur de fond des champs si erreur saisie 
    $color_form_warn="#FFCC66";
    // Champs
    $list['f_1']=array("Sélectionnez","Mademoiselle"," Madame"," Monsieur");
    if(isset($_POST['submit'])){
    	$erreur="";
    	// Nettoyage
    	while(list($var,$val)=each($_POST)){
    	if(!is_array($val)){
    		$$var=strip_tags($val);
    	}else{
    		while(list($arvar,$arval)=each($val)){
    				$$var[$arvar]=strip_tags($arval);
    			}
    		}
    	}
    	// Formatage
    	$f_2=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèà‚Äö?Ñ??Ä?ú\ -]", "", $f_2)));
    	$f_3=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèà‚Äö?Ñ??Ä?ú\ -]", "", $f_3)));
    	$f_4=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèà‚Äö?Ñ??Ä?ú\ -]", "", $f_4)));
    	$f_5=trim(eregi_replace("[^0-9+]", "", $f_5));
    	$f_6=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèà‚Äö?Ñ??Ä?ú\ -]", "", $f_6)));
    	$f_7=strip_tags(trim($f_7));
    	$f_8=trim(eregi_replace("[^0-9\ +]", "", $f_8));
    	// Verification
    	if($f_1==0){
    		$erreur.="<li><span class='txterror'>Le champ &laquo; Civilité &raquo; n'a pas été défini.</span>";
    		$errf_1=1;
    	}
    	if(strlen($f_2)<2){
    		$erreur.="<li><span class='txterror'>Le champ &laquo; Nom &raquo; est vide ou incomplet.</span>";
    		$errf_2=1;
    	}
    	if(strlen($f_7)<2){
    		$erreur.="<li><span class='txterror'>Le champ &laquo; Email &raquo; est vide ou incomplet.</span>";
    		$errf_7=1;
    	}else{
    		if(!ereg('^[-!#$%&\'*+\./0-9=?A-Z^_`a-z{|}~]+'.
    		'@'.
    		'[-!#$%&\'*+\/0-9=?A-Z^_`a-z{|}~]+\.'.
    		'[-!#$%&\'*+\./0-9=?A-Z^_`a-z{|}~]+$',
    		$f_7)){
    			$erreur.="<li><span class='txterror'>La syntaxe de votre adresse e-mail n'est pas correcte.</span>";
    			$errf_7=1;
    		}
    	}
    	if(strlen($f_9)<2){
    		$erreur.="<li><span class='txterror'>Le champ &laquo; Message &raquo; est vide ou incomplet.</span>";
    		$errf_9=1;
    	}
    	if($erreur==""){
    		// Création du message
    		$titre="Un message est la";
    		$tete="Depuis:Site@Jonathan-menet.fr\n";
    		$corps.="Civilité : ".$list['f_1'][$f_1]."\n";
    		$corps.="Nom : ".$f_2."\n";
    		$corps.="Prénom : ".$f_3."\n";
    		$corps.="Adresse : ".$f_4."\n";
    		$corps.="Code postal : ".$f_5."\n";
    		$corps.="Ville : ".$f_6."\n";
    		$corps.="Email : ".$f_7."\n";
    		$corps.="Téléphone : ".$f_8."\n";
    		$corps.="Message : ".$f_9."\n";
    		if(mail("votreadresse@personnelle.fr", $titre, stripslashes($corps), $tete)){
    			$ok_mail="true";
    		}else{
    			$erreur.="<li><span class='txterror'>Une erreur est survenue lors de l'envoi du message, veuillez refaire une tentative.</span>";
    		}
    	}
    }
    ?>
    <html>
    <head>
    <style type="text/css" media="screen"><!--
    INPUT { color: #000; font-size: 11px; font-family: verdana, Arial, Helvetica, Geneva, Swiss, SunSans-Regular; background-color: #EEEEEE }
    SELECT { color: #000; font-size: 11px; font-family: verdana, Arial, Helvetica, Geneva, Swiss, SunSans-Regular; background-color: #EEEEEE }
    TEXTAREA { color: #000; font-size: 11px; font-family: verdana, Arial, Helvetica, Geneva, Swiss, SunSans-Regular; background-color: #EEEEEE }
    .txterror { color: black; font-size: 11px; font-family: Verdana, Arial, Helvetica, Geneva, Swiss, SunSans-Regular }
    .txtform { color: black; font-size: 12px; font-family: Verdana, Arial, Helvetica, Geneva, Swiss, SunSans-Regular }
    --></style>
    </head>
    <body>
    <? if($ok_mail=="true"){ ?>
    	<table width='100%' border='0' cellspacing='1' cellpadding='1'>
    		<tr><td><span class='txtform'>Le message ci-dessous nous a bien été transmis, merci.</span></td></tr>
    		<tr><td>&nbsp;</td></tr>
    		<tr><td><tt><?echo nl2br(stripslashes($corps));?></tt></td></tr>
    		<tr><td>&nbsp;</td></tr>
    		<tr><td><span class='txtform'>Nous allons y répondre le plus vite possible.<br>A bientôt.</span></td></tr>
    	</table>
    <? }else{ ?>
    <form action='<? echo $PHP_SELF ?>' method='post' name='Form'>
    <table width='100%' border='0' cellspacing='1' cellpadding='1'>
    <? if($erreur){ ?><tr><td colspan='2' bgcolor='red'><span class='txterror'><font color='white'><b>&nbsp;ERREUR, votre message n'a pas été transmis</b></font></span></td></tr><tr><td colspan='2'><ul><?echo$erreur?></ul></td></tr><?}?>
    <tr><td colspan='2'><span class='txterror'>Les champs marqué d'un * sont obligatoires</span></td></tr>
    <tr><td align='right' width='30%'><span class='txtform'>Civilité* :</span></td><td><select style='width:200 <?if($errf_1==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_1' size='1'>
    <? for($id=0;$id<count($list['f_1']);$id++){
    if($id==$f_1){$ct="selected";}
    print("<option ".$ct." value=".$id.">".$list['f_1'][$id]."</option>");
    unset($ct);
    }?>
    </select></td></tr>
    <tr><td align='right' width='30%'><span class='txtform'>Nom* :</span></td><td><input type='text' style='width:200 <?if($errf_2==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_2' value='<?echo stripslashes($f_2);?>' size='24' border='0'></td></tr>
    <tr><td align='right' width='30%'><span class='txtform'>Prénom :</span></td><td><input type='text' style='width:200 <?if($errf_3==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_3' value='<?echo stripslashes($f_3);?>' size='24' border='0'></td></tr>
    <tr><td align='right' width='30%'><span class='txtform'>Adresse :</span></td><td><input type='text' style='width:200 <?if($errf_4==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_4' value='<?echo stripslashes($f_4);?>' size='24' border='0'></td></tr>
    <tr><td align='right' width='30%'><span class='txtform'>Code postal :</span></td><td><input type='text' style='width:200 <?if($errf_5==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_5' value='<?echo stripslashes($f_5);?>' size='24' border='0'></td></tr>
    <tr><td align='right' width='30%'><span class='txtform'>Ville :</span></td><td><input type='text' style='width:200 <?if($errf_6==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_6' value='<?echo stripslashes($f_6);?>' size='24' border='0'></td></tr>
    <tr><td align='right' width='30%'><span class='txtform'>Email* :</span></td><td><input type='text' style='width:200 <?if($errf_7==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_7' value='<?echo stripslashes($f_7);?>' size='24' border='0'></td></tr>
    <tr><td align='right' width='30%'><span class='txtform'>Téléphone :</span></td><td><input type='text' style='width:200 <?if($errf_8==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_8' value='<?echo stripslashes($f_8);?>' size='24' border='0'></td></tr>
    <tr><td align='right' width='30%'><span class='txtform'>Message* :</span></td><td><textarea style='width:360 <?if($errf_9==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_9' rows='6' cols='40'><?echo$f_9?></textarea></td></tr>
    <tr><td align='right' width='30%'></td><td><input type='submit' name='submit' value='Envoyer' border='0'></td></tr>
    </table>
    </form>
    <? } ?>
    </body>
    </html>
    Script de John's Graphisme:
    http://www.jonathan-menet.fr/blog/20...-obligatoires/

    ça fonctionne

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 21/02/2014, 20h16
  2. besoin d'aide sur un formulaire multi champs
    Par franckor dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 29/10/2009, 09h59
  3. [MySQL] Formulaire contact : un champ jamais récupéré
    Par michaeljeru dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 22/06/2008, 13h45
  4. Ouverture formulaire multi champs avec liste modifiable
    Par Jacques-Henri dans le forum VBA Access
    Réponses: 9
    Dernier message: 19/05/2008, 11h18
  5. requete multi table - multi champ
    Par Jean-Matt dans le forum Oracle
    Réponses: 6
    Dernier message: 14/10/2005, 17h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo