J'ai quelques problèmes concernant mon formulaire de contact. D'avance désolée mais je cherche depuis des heures et en vain. Peut-être pouvez-vous m'aider :
1) Comment exercer un contrôle sur les boutons radio ?
Mon script de contôle actuel ne doit pas être bon car quand je coche l'un des 2 boutons et que je valide, j'ai un message d'erreur ("Veuillez répondre par oui ou par non).
2) Comment récupérer la valeur du bouton radio sélectionné ? Le nom du champ s'affiche dans le mail qui m'est envoyé mais il est vide.
3) Comment faire en sorte que mes alertes de contrôle s'affichent au-dessous des champs à renseigner et non dans une nouvelle page (qui est blanche en plus) ?
4) Comment faire en sorte que mon message de confirmation ('Message bien envoyé...) s'affiche sur une page non blanche ? Dois-je lier mon template au formail.php ? Ou créer une page spéciale message-confirm (et si oui comment l'afficher ?).
5) Comment faire en sorte que dans les mails de confirmation et de récupération des données, tout le texte soit ferré à gauche ? J'ai essayé avec \r mais j'ai toujours ces alinéas :
Nom : (valeur)
Prénom : (valeur)
E-mail : (valeur)
Sujet : (valeur)
Message :
(valeur)
News :
6) Le changement de casse dans le champ Prénom ne fonctionne pas, y aurait-il une erreur dans le script ?
Voici mon fichier html :
CODE
<form name="contact" action="http://e.guerfi.free.fr/PREPROD/formail.php" method="post">
<div id="form">
<h3>Pour nous contacter, merci de compléter ce formulaire.</h3>
<p><em>(*) : champs obligatoires</em></p>
<p>
<label for="nom" title="Saisissez votre NOM">Votre nom *</label><br />
<input class="txt" type="text" size="40" name="nom" id="nom" title="Saisissez votre NOM" tabindex="1" value="" onChange="java script:this.value=this.value.toUpperCase();"/>
<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" size="40" name="prenom" id="prenom" title="Saisissez votre PRENOM" tabindex="2" value="" onChange="java script:changeCase(this.form.prenom)"/><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="" /><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="choisir">Sélectionnez votre sujet</option>
<option 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>
</select>
<p class="mentions">** Accessoires uniquement.
<br />
Veuillez en préciser la référence dans votre message ci-dessous.</p>
<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"></textarea>
<p>Je souhaite recevoir les news<br />
<input class="news" type="radio" name="news_ok" id="news_ok" title="Je souhaite recevoir les news" tabindex="6" value="1" />
<label for="news_ok" title="Je souhaite recevoir les news">Oui</label>
<br />
<input class="news" type="radio" name="news_no" id="news_no" title="Je ne souhaite pas recevoir les news" tabindex="7" value="O" />
<label for="news_no" title="Je ne souhaite pas recevoir les news">Non</label></p>
<br />
<input class="sub" type="submit" name="soumettre" value="Envoyer" title="Cliquez sur ce bouton pour envoyer le formulaire" tabindex="8" />
<input class="sub" type="reset" name="annuler" value="Effacer" title="Cliquez sur ce bouton pour effacer le formulaire" tabindex="9" /></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>
Et mon fichier php :
CODE
<?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["news"])) $_POST["news"]=trim(stripslashes($_POST["news"]));
// 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 pseudo
$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.";
}
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 "<span style=\"color:red\">".$erreur."</span><br /><br />\n"; // On affiche le message correspondant à l'erreur
}
?>
<?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"];
$news = $_POST["news"];
$adresse = "eguerfi_AT_gmail.com"; // Mise en forme du message que vous recevrez
$exped = "Estelle";
$mon_objet = "Contact";
$message = "Nom : $nom \r
Prénom : $prenom \r
E-mail : $email \r
Sujet : $sujet \r
Message : \r $text
News : \r $news";
$mon_url = "http://e.guerfi.free.fr/PREPROD/index.html";
// Mise en forme de l'accusé réception qu'il recevra
$son_objet = "Confirmation de votre message";
$accuse = "Bonjour $prenom $nom,\r
Votre message nous a bien été envoyé et nous tâcherons de vous répondre le plus rapidement possible.\r
Votre E-mail : $email \r
Le sujet de votre message : $sujet \r
Votre message : \r $text \r
Merci et à bientôt !";
// 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 "<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
echo "<a href=\"" . $mon_url . "\">Retour</a></p>\n"; // Avec un lien de retour vers l'accueil du site
}
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;$news;\n\r");
/* on ferme le fichier */
fclose($fl);
?>
Merci beaucoup.
Edit Norseb : merci d'utiliser la balise CODEBOX pour les codes les plus longs