Rechercher : dans
Par :

Envoi données formulaire dans fichier texte

Neige, le 23 déc 2006 à 12:55:14 
 Signaler ce message aux modérateurs

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 :

<code><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@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);
}
?>

Configuration: Windows XP
Firefox 2.0.0.1

Meilleures réponses pour « Envoi données formulaire dans fichier texte » dans :
[MS-Dos] Ecrire dans un fichier texte en batch VoirPour écrire dans un fichier texte, il suffit d'utiliser une redirection ">" : echo texte_à_ecrire > fichier_de_sortie.txt Pour écrire à la fin d'un texte existant (concaténation) : echo "écriture a la fin du fichier ">>...
MySQL - Chargement d'un fichier texte dans une table VoirPour charger une fichier texte défini comme suit : $ tail /home/user1/test.txt 'nom1',1,9 'nom2',2,3 'nom3',3,54 'nom4',4,2 'nom5',5,9 Dans une table définie comme suit : CREATE TABLE chargertest ( ...
Se connecter à un serveur FTP en mode Ms-Dos VoirLa commande ftp permet de se connecter à un serveur FTP en ligne de commande. Certaines options de cette commande permettent d'automatiser la connexion en fournissant une liste de commandes contenues dans un fichier texte : ftp -i ...
Fichier TXT VoirFormat TXT Un fichier TXT est un fichier texte, c'est-à-dire un simple fichier contenant du texte au format ASCII. Pour ouvrir ou modifier un tel fichier, il suffit d'utiliser le bloc-notes ou un éditeur de texte traditionnel.