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 :
<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="javascript: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="javascript: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@choihj.com">choi@choihj.com</a>. </p> </div> </form>
Et mon fichier php :
<?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@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@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.

Et : ça marche !
Pour le point 5), ne fonctionne pas mais ça marche avec
Et pour le 6) j'ai fait plus simple en remplaçant le javascript par dans l'input.
Merci encore :-)