Ajouter un champ dans un formulaire php

Résolu/Fermé
apocal Messages postés 9 Date d'inscription mardi 7 juin 2011 Statut Membre Dernière intervention 24 juin 2011 - 7 juin 2011 à 16:54
 Profil bloqué - 8 juin 2011 à 14:34
Salut à tous,
Ca fait un certain temps que je viens sur ce site et j'y ai déja trouvé bon nombre de réponse qui m'ont facilité la vie. Aujourd'hui j'ai une question pratique...
Je débute dans le webmastering et je souhaite faire un formulaire php.
Celui que j'ai trouvé marche parfaitement (j'ai testé beaucoup de générateur qui ne fonctionnent pas) je voudrais seulement ajouter un champ téléphone...
J'ai essayé de le bidouiller mais rien n'y fait.
Si une âme charitable pouvait me dire quelles lignes de code modifier je lui en serais gré.
Voici le code php :




<?php
/*
********************************************************************************************
CONFIGURATION
********************************************************************************************
*/
// destinataire est votre adresse mail. Pour envoyer à plusieurs à la fois, séparez-les par une virgule
$destinataire = 'xxx@xxx';

// 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 = "Vous devez d'abord <a href=\"index.html\">envoyer le formulaire</a>.";
$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']) : '';
$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.' <'.$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("’","'",$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.' <a href="contact.html">Retour au formulaire</a></p>'."\n";
};
}; // fin du if (!isset($_POST['envoi']))
?>




Merci beaucoup d'avance...


A voir également:

7 réponses

<form id="contact" method="post" action="contact.php">
<fieldset><legend>Vos coordonnées</legend>
<p><label for="nom">Nom :</label><input type="text" id="nom" name="nom" tabindex="1" /></p>
<p><label for="telephone">Tel :</label><input type="text" id="telephone" name="telephone" tabindex="1" /></p>

...
1
Profil bloqué
7 juin 2011 à 17:28
+1 Tu avais nommé deux éléments différents par le même nom, donc un peu compliqué pour le navigateur ^^'
0
apocal Messages postés 9 Date d'inscription mardi 7 juin 2011 Statut Membre Dernière intervention 24 juin 2011 1
8 juin 2011 à 14:31
CA MARCHE !!!!
Varaldi Q tu me sauve, je te remercie infiniment...
C'est vraiment sympa de ta part et de celle de lpz de m'avoir aidé si rapidement.
Encore merci...
1
Profil bloqué
8 juin 2011 à 14:34
de rien ^^

oublie pas résolu en haut à droite
0
Profil bloqué
7 juin 2011 à 16:58
Salut,

C'est le code de la page qui reçoit les données du form, il nous faut la page du form, qu'on puisse y insérer ton champ.

PS je sais pas trop pourquoi tu as un code aussi long pour un form si tu débutes, mais je ne peux que te conseiller le siteduzero.com si tu veux en faire un simple, pour apprendre, que tu personnaliseras comme tu voudras.
0
apocal Messages postés 9 Date d'inscription mardi 7 juin 2011 Statut Membre Dernière intervention 24 juin 2011 1
7 juin 2011 à 17:20
Merci pour la rapidité de ta réponse varaldi q.
Voila le formulaire html, tu verra que j'ai déja rajouté le champ téléphone, mais quand je le test en ligne, seul nom, objet, mail et message marchent, je ne recoit rien pour le champ téléphone, pourtant je le rempli...
C'est fascinant et térriblement compliqué :)
Je vais aller faire un tour aussi sur le site que tu me conseille.
voila le code :

<form id="contact" method="post" action="contact.php">
<fieldset><legend>Vos coordonnées</legend>
<p><label for="nom">Nom :</label><input type="text" id="nom" name="nom" tabindex="1" /></p>
<p><label for="email">Email :</label><input type="text" id="email" name="email" tabindex="2" /></p>
</fieldset>

<fieldset><legend>Votre message :</legend>
<p><label for="objet">Objet :</label><input type="text" id="objet" name="objet" tabindex="3" /></p>
<p><label for="message">Message :</label><textarea id="message" name="message" tabindex="4" cols="30" rows="8"></textarea></p>
<p><label for="message">Téléphone :</label><textarea id="message" name="Téléphone" tabindex="5" cols="30" rows="1"></textarea></p>
</fieldset>

<div style="text-align:center;"><input type="submit" name="envoi" value="Envoyer le formulaire !" /></div>
</form>



Merci à toi
0
<p><label for="message">Téléphone :</label><textarea id="message" name="Téléphone" tabindex="5" cols="30" rows="1"></textarea>

ton id tu l'as laissé à "message"...
0
et évite les majuscules et accents dans les balises id ou name !!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Et dans les tests...

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

...
0
apocal Messages postés 9 Date d'inscription mardi 7 juin 2011 Statut Membre Dernière intervention 24 juin 2011 1
8 juin 2011 à 13:54
Salut à vous,
J'ai effectué les modifs que vous m'avez conseillés, mais quand je test le formulaire, ce que j'ai écris dans le champ téléphone n'apparaît pas dans le mail que je reçoit...
Effectivement j'avais fait pas mal d'erreur, merci pour les corrections, malgré ça ça ne marche pas...
0
Profil bloqué
8 juin 2011 à 13:56
Renvoies tout ton code propre du formulaire, ainsi que de la page qui reçoit ^^'

On est un peu perdus là ^^
0
apocal Messages postés 9 Date d'inscription mardi 7 juin 2011 Statut Membre Dernière intervention 24 juin 2011 1
8 juin 2011 à 14:09
:) OK
Alors voila mon formulaire HTML :


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Document sans nom</title>
</head>

<body>
<div align="center">SITE EN CONSTRUCTION
</div>
<form id="contact" method="post" action="traitement_formulaire.php">
<fieldset><legend>Vos coordonnées</legend>
<p><label for="nom">Nom :</label><input type="text" id="nom" name="nom" tabindex="1" /></p>
<p><label for="telephone">Tel :</label><input type="text" id="telephone" name="telephone" tabindex="1" /></p>
<p><label for="email">Email :</label><input type="text" id="email" name="email" tabindex="2" /></p>
</fieldset>

<fieldset><legend>Votre message :</legend>
<p><label for="objet">Objet :</label><input type="text" id="objet" name="objet" tabindex="3" /></p>
<p><label for="message">Message :</label><textarea id="message" name="message" tabindex="4" cols="30" rows="8"></textarea></p>

</fieldset>

<div style="text-align:center;"><input type="submit" name="envoi" value="Envoyer le formulaire !" /></div>
</form>
</body>
</html>


Et voila mon : traitement_formulaire.php


<?php
/*
********************************************************************************************
CONFIGURATION
********************************************************************************************
*/
// destinataire est votre adresse mail. Pour envoyer à plusieurs à la fois, séparez-les par une virgule
$destinataire = 'mog.eric@gmail.com';

// 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 = "Vous devez d'abord <a href=\"index.html\">envoyer le formulaire</a>.";
$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']) : '';
$tel = (isset($_POST['telephone'])) ? Rec($_POST['telephone']) : '';
$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.' <'.$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("’","'",$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.' <a href="contact.html">Retour au formulaire</a></p>'."\n";
};
}; // fin du if (!isset($_POST['envoi']))
?>



Ce formulaire est long parceque je l'ai pris sur un site déja tout fait... Comme tu peux t'en apercevoir, je suis pas encore près à faire mes propres php :)
0
Profil bloqué
8 juin 2011 à 14:19
Lol,

tu voudrais que le tel s'affiche où ?

Car ici, tu utilises la fonction mail, mais tu ne passes pas tel en paramètre..

Au lieu de ça

$nom = (isset($_POST['nom'])) ? Rec($_POST['nom']) : '';
$tel = (isset($_POST['telephone'])) ? Rec($_POST['telephone']) : '';
$email = (isset($_POST['email'])) ? Rec($_POST['email']) : '';
$objet = (isset($_POST['objet'])) ? Rec($_POST['objet']) : '';
$message = (isset($_POST['message'])) ? Rec($_POST['message']) : '';

Mets ça

$nom = (isset($_POST['nom'])) ? Rec($_POST['nom']) : '';
$tel = (isset($_POST['telephone'])) ? Rec($_POST['telephone']) : '';
$email = (isset($_POST['email'])) ? Rec($_POST['email']) : '';
$objet = (isset($_POST['objet'])) ? Rec($_POST['objet']) : '';
$message = (isset($_POST['message'])) ? Rec($_POST['message']) : '';
if (isset($_POST['message']) && isset($_POST['telephone']))
{
$message = $message."</br>Tel : ".$tel;
}

ça marche ?
0