Aller au contenu

Envoi données formulaire dans fichier texte


Neige

Sujets conseillés

Bonjour,

J'ai créé un formulaire de contact dont les données vont incrémenter un fichier texte.

Tout fonctionne très bien, sauf que le fichier texte est incrémenté chaque fois qu'il y a clic sur "Envoyer", même si le formulaire n'a pas été validé.

En fait, comme il y a des contrôles sur les champs obligatoires, même si le visiteur clique sur "Envoyer", le formulaire n'est validé que quand le visiteur a renseigné correctement tous les champs, ce qui décenche l'envoi du mail de récupération des données et l'envoi d'un email de confirmation au visiteur.

Et je voudrais qu'il en soit de même pour l'incrémentation du fichier texte : que quand le formulaire a été validé.

Voici le code de mon formulaire :


<div id="content-form">
<div id="fil-ariane">
<a href="http://e.guerfi.free.fr/PREPROD/index2.html">Accueil</a> > Contacts
</div>
<?php
if (isset($_POST["soumettre"])){ // Si le formulaire a été soumis
$etat = "erreur"; // On initialise notre etat à erreur, il sera changé à "ok" si la vérification du formulaire est un succès, sinon il reste à erreur

// On récupère les champs du formulaire, et on arrange leur mise en forme
if (isset($_POST["nom"])) $_POST["nom"]=trim(stripslashes($_POST["nom"])); // trim() enlève les espaces en début et fin de chaine

if (isset($_POST["prenom"])) $_POST["prenom"]=trim(stripslashes($_POST["prenom"]));

if (isset($_POST["email"])) $_POST["email"]=trim(stripslashes($_POST["email"])); // stripslashes() retire les backslashes ==> \' devient '

if (isset($_POST["sujet"])) $_POST["sujet"]=trim(stripslashes($_POST["sujet"]));

if (isset($_POST["text"])) $_POST["text"]=trim(stripslashes($_POST["text"]));

if (isset($_POST["radionews"])) $_POST["radionews"];

// Après la mise en forme, on vérifie la validité des champs
if (empty($_POST["nom"])) { // L'utilisateur n'a pas rempli le champ nom
$erreur="Veuillez renseigner votre nom."; // On met dans erreur le message qui sera affiché
}
elseif (empty($_POST["prenom"])) { // L'utilisateur n'a pas rempli le champ email
$erreur="Veuillez renseigner votre prénom.";
}
elseif (empty($_POST["email"])) { // L'utilisateur n'a pas rempli le champ email
$erreur="Veuillez renseigner votre e-mail.";
}
elseif (!eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-z]{2,4}$",$_POST["email"])){ // On vérifie si l'email est bien de la forme messagerie_AT_domaine.tld (cf cours d'expressions régulières)
$erreur="Veuillez renseigner une adresse e-mail valide.";
}
elseif (empty($_POST["sujet"])) { // L'utilisateur n'a pas sélectionné le champ sujet
$erreur="Veuillez sélectionner le sujet de votre message.";
}
elseif (empty($_POST["text"])) { // L'utilisateur n'a écrit aucun message
$erreur="Veuillez saisir votre message.";
}
elseif (empty($_POST["radionews"])) { // L'utilisateur n'a renseigné ce champ
$erreur="Veuillez répondre par oui ou par non.";
}
else { // Si tous les champs sont valides, on change l'état à ok
$etat="ok";
}
}
else { // Sinon le formulaire n'a pas été soumis
$etat="attente"; // On passe donc dans l'état attente
}

if ($etat!="ok"){ // Le formulaire a été soumis mais il y a des erreurs (etat=erreur) OU le formulaire n'a pas été soumis (etat=attente)
if ($etat=="erreur"){ // Cas où le formulaire a été soumis mais il y a des erreurs
echo "<center><span style=\"color:red\">".$erreur."</span></center>"; // On affiche le message correspondant à l'erreur
}
?>
<!-- Formulaire HTML qu'on affiche dans l'état attente ou erreur -->
<form name="contact" action="contact.php" method="post">
<div id="form">
<h2>Pour nous contacter, merci de compléter ce formulaire.</h2>
<p><em>(*) : champs obligatoires</em></p>
<p>
<label for="nom" title="Saisissez votre NOM">Votre nom *</label><br />
<input class="txt" type="text" style="text-transform:uppercase;" size="40" name="nom" id="nom" title="Saisissez votre NOM" tabindex="1" value="<?php if (!empty($_POST["nom"])) {
// le nom a été saisi: le réafficher
echo htmlspecialchars($_POST["nom"],ENT_QUOTES);
}
?>"/>
<script type="text/javascript" language="JavaScript">document.contact.nom.focus();</script><br />
<label for="prenom" title="Saisissez votre NOM">Votre prénom *</label><br />
<input class="txt" type="text" style="text-transform:capitalize;" size="40" name="prenom" id="prenom" title="Saisissez votre PRENOM" tabindex="2" value="<?php if (!empty($_POST["prenom"])) {
echo htmlspecialchars($_POST["prenom"],ENT_QUOTES);
}
?>"/><br />
<label for="email" title="Saisissez votre EMAIL">Votre e-mail *</label><br />
<input class="txt" type="text" size="40" name="email" id="email" title="Saisissez votre adresse EMAIL" tabindex="3" value="<?php if (!empty($_POST["email"])) {
echo htmlspecialchars($_POST["email"],ENT_QUOTES);
}
?>" /><br />
<label for="sujet" title="Saisissez le SUJET de votre message">Sujet de votre message *</label><br />
<select name="sujet" id="sujet" tabindex="4">
<option selected="selected" value="dispo">Je souhaite connaître la disponibilité d'un article **</option>
<option value="achat">Où puis-je acheter Choï ?</option>
<option value="presse">Je suis un professionnel de la presse</option>
<option value="commercial">Je voudrais commercialiser votre marque</option>
<option value="desabo">Je souhaite me désabonner de votre mailing-list</option>
<option value="autre">Autre demande</option>
<?php
if (isset($_POST["sujet"])) {
echo htmlspecialchars($_POST["sujet"],ENT_QUOTES);
}
?></select>
<span class="mentions">** Accessoires uniquement.
<br />
Veuillez en préciser la référence dans votre message ci-dessous.</span> <br />
<label for="message" title="Saisissez votre MESSAGE">Votre message *</label><br />
<textarea name="text" id="message" title="Saisissez votre MESSAGE" tabindex="5" cols="45" rows="7"><?php
if (isset($_POST["text"])) {
echo htmlspecialchars($_POST["text"],ENT_QUOTES);
}
?></textarea> <br /> <br />
<label>Je souhaite recevoir les news</label><br />
<input class="news" type="radio" name="radionews" value="news_ok" id="news_ok" title="Je souhaite recevoir les news" tabindex="6" />
<label for="news_ok" title="Je souhaite recevoir les news">Oui</label>
<br />
<input class="news" type="radio" name="radionews" value="news_no" id="news_no" title="Je ne souhaite pas recevoir les news" tabindex="7"/>
<label for="news_no" title="Je ne souhaite pas recevoir les news">Non</label>
<br /> <br />
<input class="sub" type="submit" name="soumettre" value="Envoyer" title="Cliquez sur ce bouton pour envoyer le formulaire" tabindex="8" />
</p><br /><br />
<p class="mentions">
Les informations personnelles recueillies par le biais de ce formulaire sont uniquement destinées à Choï. Elles ne font en aucun cas l'objet de communications extérieures.<br />
Vous disposez d'un droit d'accès, de modification, de rectification et de suppression des données qui vous concernent (art. 34 de la loi "Informatique et Libertés"). <br />
Pour l'exercer, adressez-vous à <a href="mailto:choi_AT_choihj.com">choi_AT_choihj.com</a>.
</p>
</div>
</form>
<!-- FIN du formulaire HTML -->
<?php
}
else { // Sinon l'état est ok donc on envoie le mail
$nom = $_POST["nom"]; // On stocke les variables récupérées du formulaire
$prenom = $_POST["prenom"];
$email = $_POST["email"];
$sujet = $_POST["sujet"];
$text = $_POST["text"];
$radionews = $_POST["radionews"];

$adresse = "eguerfi_AT_gmail.com"; // Mise en forme du message que vous recevrez
$exped = "Estelle";
$mon_objet = "Contact";
$message = "Nom : $nom \r\n";
$message.= "Prénom : $prenom \r\n";
$message.="E-mail : $email \r\n";
$message.="Sujet : $sujet \r\n";
$message.="Message : \r\n";
$message.="$text \r\n";
$message.="News : $radionews\r\n";

// Mise en forme de l'accusé réception qu'il recevra
$son_objet = "Confirmation de votre message";
$accuse = "Bonjour,\r\n\n";
$accuse.= "Votre message nous a bien été envoyé et nous tâcherons de vous répondre le plus rapidement possible. \r\n\n";
$accuse.= "Votre E-mail : $email \r\n";
$accuse.= "Le sujet de votre message : $sujet \r\n";
$accuse.= "Votre message : \r\n";
$accuse.= "$text \r\n\n";
$accuse.= "Merci et à bientôt ! \r\n";

// Envoie du mail
$entete = "From: " . $exped . " <" . $adresse . ">\n"; // On prépare l'entête du message
$entete .= "MIME-Version: 1.0";

if (mail($adresse,$mon_objet,$message,$entete) && mail($email,$son_objet,$accuse,$entete)){ // Si le mail a été envoyé
echo "<br /><br /><p style=\"text-align:center\">Votre message a été envoyé, vous recevrez une confirmation par mail.<br /><br />\n"; // On affiche un message de confirmation
}
else { // Sinon il y a eu une erreur lors de l'envoi
echo "<p style=\"text-align:center\">Un problème s'est produit lors de l'envoi du message.\n";
echo "<a href=\"".$_SERVER["PHP_SELF"]."\">Réessayez...</a></p>\n"; // On propose un lien de retour vers le formulaire
}

}
/* enregistrer les coordonnées de l'envoi dans un fichier texte (chmod 755) dans un répertoire admin que l'on protégera avec un fichier .htacces */

/* on définit la date et l'heure de l'entree */
$datedujour = date('d/m/y/H:i:s');
/* on définit le nom et le lieu du fichier qui sera créé pour stocker les infos */
$filename="./admin/contact.txt";
/*on écrit dans le fichier les infos, séparées par un; et on termine la ligne par un retour à la ligne */
$fl=fopen($filename,"a+");
fwrite($fl,"$datedujour;$nom;$prenom;$email;$radionews;\n\r");
/* on ferme le fichier */
fclose($fl);
?>

</div>

Vous pouvez m'aider ?

Merci !

Lien vers le commentaire
Partager sur d’autres sites

ton écriture dans le fichier doit se faire dans la parenthèse correspondant à l'insertion dans la BdD et pas en dehors. En la mettant après l'écriture BdD, ça permet d'être sur que tout ce qui est dans le fichier texte se trouve bien dans la base.

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...