Amis du jour bonjour,
J'ai de nouveau un problème insondable et j'espère que vous m'éclairerez de vos lumières.
J’ai récupéré un formulaire qui permet d’envoyé un mail. Ce formulaire à été conçu pour être seul sur une page. Or j’ai du l’adapter pour le mettre au centre d’une autre page. Je ne suis pas sur d’être claire mais vous allez mieux comprendre avec les sources.
Dans le cas ou certain champs ne serait pas complété une pop up alerte l'internaute et empêche l’envoi du mail (via du JavaScript donc). Le problème c'est qu’après adaptation du code comme d'écrit ci-dessus les pop up ne s’affichent plus sous Firefox et Netscape (Firefox mentionne une erreur dans le JavaScript à la ligne 2, voir source plus bas).
Mais là ou ça devient étrange c’est qu’après de longue recherche je me suis rendu compte qu’en enlevant le DocType tout est à nouveau fonctionnel
Je ne connais rien au JavaScript, je ne pense même pas que le problème vienne de là. Donc si vous avez une solution gardez en tête que je suis un débutant en xhtml, tâtonne le php et ignorent tout du JavaScript.
Code du formulaire mail original :
Code du formulaire mail adapté à mes besoin (notez que le JavaScript à été séparé):
contact.js
Voilà tout et merci d'avance
PS : je vous aies présenté ma page dans sont entier, en réalité j'utilise une include pour insérer le formulaire dans le conteneur du centre.
Modifié par Spark (20 Jan 2007 - 00:27)
J'ai de nouveau un problème insondable et j'espère que vous m'éclairerez de vos lumières.

J’ai récupéré un formulaire qui permet d’envoyé un mail. Ce formulaire à été conçu pour être seul sur une page. Or j’ai du l’adapter pour le mettre au centre d’une autre page. Je ne suis pas sur d’être claire mais vous allez mieux comprendre avec les sources.
Dans le cas ou certain champs ne serait pas complété une pop up alerte l'internaute et empêche l’envoi du mail (via du JavaScript donc). Le problème c'est qu’après adaptation du code comme d'écrit ci-dessus les pop up ne s’affichent plus sous Firefox et Netscape (Firefox mentionne une erreur dans le JavaScript à la ligne 2, voir source plus bas).
Mais là ou ça devient étrange c’est qu’après de longue recherche je me suis rendu compte qu’en enlevant le DocType tout est à nouveau fonctionnel

Je ne connais rien au JavaScript, je ne pense même pas que le problème vienne de là. Donc si vous avez une solution gardez en tête que je suis un débutant en xhtml, tâtonne le php et ignorent tout du JavaScript.
Code du formulaire mail original :
<?php
$email_dest = "contact@domaine.fr";
if ($_POST['envoi']) {
$message_remerciement = "Le message à bien été envoyé [smile]";
// E-mail headers:
$headers ="MIME-Version: 1.0 \n";
$headers .="From: Contact CXP<contact@domaine.fr>\n";
$headers .="Content-Type: text/html; charset=iso-8859-1 \n";
$subject = "Une personne vous a contacté";
$partie_entete = "<html><head>
<meta http-equiv=Content-Type content=text/html; charset=iso-8859-1>
</head>
<body bgcolor=#FFFFFF>";
for ($a=1; $a<= $_POST['nbre_champs_texte']; $a++) {
$partie_champs_texte .= "<font face='Verdana' size='2' color='#003366'>" . $_POST['titre_champ'.$a] . " = " . $_POST['champ'.$a] . "</font><br>";
}
if ($_POST['nbre_zone_email'] != 0) {
$partie_zone_email = "<font face='Verdana' size='2' color='#003366'>" . $_POST['titre_email'] . " = " . $_POST['zone_email'] . "</font><br>";
}
if ($_POST['nbre_zones_texte'] != 0) {
$partie_zone_texte = "<font face='Verdana' size='2' color='#003366'>" . $_POST['titre_zone'] . " = " . $_POST['zone_texte'] . "</font><br>";
$partie_zone_texte = stripslashes($partie_zone_texte);
}
$fin = "</body></html>";
$sortie = $partie_entete . $partie_champs_texte . $partie_zone_email . $partie_zone_texte . $fin;
// Send the e-mail
if (@!mail($email_dest,$subject,$sortie,$headers)) {
echo("Envoi du formulaire impossible");
} // Closing if !mail...
} // Closing if edit
?><html>
<head>
<title>Assistant d'envoi de formulaires</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript"><!-- Hide script from older browsers
function verifSelection() {if (mail_form.zone_email.value == "") {
alert("Vous n’avez pas saisie d’adresse e-mail !")
return false
}
invalidChars = " /:,;'"
for (i=0; i<invalidChars.length; i++) { // does it contain any invalid characters?
badChar = invalidChars.charAt(i)
if (mail_form.zone_email.value.indexOf(badChar,0) > -1) {
alert("Votre adresse e-mail contient des caractères invalides. Veuillez vérifier.")
mail_form.zone_email.focus()
return false
}
}
atPos = mail_form.zone_email.value.indexOf("@",1) // there must be one "@" symbol
if (atPos == -1) {
alert('Votre adresse e-mail ne contient pas le signe "@". Veuillez vérifier.')
mail_form.zone_email.focus()
return false
}
if (mail_form.zone_email.value.indexOf("@",atPos+1) != -1) { // and only one "@" symbol
alert('Il ne doit y avoir qu\'un signe "@". Veuillez vérifier.')
mail_form.zone_email.focus()
return false
}
periodPos = mail_form.zone_email.value.indexOf(".",atPos)
if (periodPos == -1) { // and at least one "." after the "@"
alert('Vous avez oublié le point "." après le signe "@". Veuillez vérifier.')
mail_form.zone_email.focus()
return false
}
if (periodPos+3 > mail_form.zone_email.value.length) { // must be at least 2 characters after the
alert('Il doit y avoir au moins deux caractères après le signe ".". Veuillez vérifier.')
mail_form.zone_email.focus()
return false
}if (mail_form.zone_texte.value == "") {
alert("Vous n’avez pas saisie de message !")
return false
} } // Fin de la fonction
</script>
</head>
<body>
<form name="mail_form" method="post" action="<?=$PHP_SELF?>" onSubmit="return verifSelection()">
<div align="center"></div>
<p align="center">
<?php
if ($message_remerciement) {
echo("<font face=Verdana size=2>");
echo(stripslashes($message_remerciement));
echo("</p></body></html>");
exit();
}
?>
<table width="566" border="0" align="center">
<p align="center">
</p><tr>
<td width><font face="Verdana" size="2">Veuillez saisir votre adresse e-mail</font></td>
<td width><input name="zone_email" type="text"></td>
</tr><tr>
<td valign="top"><font face="Verdana" size="2">Votre message</font></td>
<td><textarea name="zone_texte" cols="50" rows="10"></textarea></td>
</tr><tr>
<td valign="top"><input name="nbre_champs_texte" type="hidden" id="nbre_champs_texte" value="0">
<input name="nbre_zones_texte" type="hidden" value="1">
<input name="nbre_zone_email" type="hidden" value="1">
<input name="titre_email" type="hidden" value="Veuillez saisir votre adresse e-mail"><input name="titre_zone" type="hidden" value="Votre message"></td>
<td><div align="center">
<input type="reset" name="Reset" value="Effacer">
<input type="submit" name="envoi" value="Envoyer">
</div></td>
</tr>
</table>
<div align="center"></div>
</form>
</body>
</html>
Code du formulaire mail adapté à mes besoin (notez que le JavaScript à été séparé):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title>Le site</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" media="screen" type="text/css" title="Design en css" href="templates/********/css/index.css" />
<link rel="stylesheet" media="screen" type="text/css" title="Design en css" href="templates/********/css/menu.css" />
<script type="text/javascript" src="script/contact.js"></script>
<script type="text/javascript" src="templates/********/script/menu.js"></script>
</head>
<body>
<? include("includes/header.php"); ?>
<? include("includes/menu.php"); ?>
<div id="conteneur1" ><div id="conteneur2" >
<?php
$email_dest = "contact@domaine.fr";
if ($_POST['envoi']) {
$message_remerciement = "Le message à bien été envoyé [smile]";
// E-mail headers:
$subject = "Une personne vous a contacté";
for ($a=1; $a<= $_POST['nbre_champs_texte']; $a++) {
$partie_champs_texte .= "<font face='Verdana' size='2' color='#003366'>" . $_POST['titre_champ'.$a] . " = " . $_POST['champ'.$a] . "</font><br>";
}
if ($_POST['nbre_zone_email'] != 0) {
$partie_zone_email = "<font face='Verdana' size='2' color='#003366'>" . $_POST['titre_email'] . " = " . $_POST['zone_email'] . "</font><br>";
}
if ($_POST['nbre_zones_texte'] != 0) {
$partie_zone_texte = "<font face='Verdana' size='2' color='#003366'>" . $_POST['titre_zone'] . " = " . $_POST['zone_texte'] . "</font><br>";
$partie_zone_texte = stripslashes($partie_zone_texte);
}
$sortie = $partie_champs_texte . $partie_zone_email . $partie_zone_texte;
// Send the e-mail
if (@!mail($email_dest,$subject,$sortie)) {
echo("Envoi du formulaire impossible");
} // Closing if !mail...
} // Closing if edit
?>
<form name="mail_form" method="post" action="<?=$PHP_SELF?>" onSubmit="return verifSelection()">
<div class="centrer">
<p>
<?php
if ($message_remerciement) {
echo("<font face=Verdana size=2>");
echo(stripslashes($message_remerciement));
echo("</p></div>");
exit();
}
?>
<div class="centrer">
<p>Veuillez saisir votre adresse e-mail :</p>
<input name="zone_email" type="text">
<p>Votre message :</p>
<textarea name="zone_texte" cols="50" rows="10"></textarea>
<input name="nbre_champs_texte" type="hidden" id="nbre_champs_texte" value="0">
<input name="nbre_zones_texte" type="hidden" value="1">
<input name="nbre_zone_email" type="hidden" value="1">
<input name="titre_email" type="hidden" value="Veuillez saisir votre adresse e-mail"><input name="titre_zone" type="hidden" value="Votre message">
<br /><br />
<input type="reset" name="Reset" value="Effacer">
<input type="submit" name="envoi" value="Envoyer">
</div>
</form>
</div></div>
<? include("includes/footer.php"); ?>
</body>
</html>
contact.js
<!-- Hide script from older browsers
function verifSelection() {if (mail_form.zone_email.value == "") {
alert("Vous n’avez pas saisie d’adresse e-mail !")
return false
}
invalidChars = " /:,;'"
for (i=0; i<invalidChars.length; i++) { // does it contain any invalid characters?
badChar = invalidChars.charAt(i)
if (mail_form.zone_email.value.indexOf(badChar,0) > -1) {
alert("Votre adresse e-mail contient des caractères invalides. Veuillez vérifier.")
mail_form.zone_email.focus()
return false
}
}
atPos = mail_form.zone_email.value.indexOf("@",1) // there must be one "@" symbol
if (atPos == -1) {
alert('Votre adresse e-mail ne contient pas le signe "@". Veuillez vérifier.')
mail_form.zone_email.focus()
return false
}
if (mail_form.zone_email.value.indexOf("@",atPos+1) != -1) { // and only one "@" symbol
alert('Il ne doit y avoir qu\'un signe "@". Veuillez vérifier.')
mail_form.zone_email.focus()
return false
}
periodPos = mail_form.zone_email.value.indexOf(".",atPos)
if (periodPos == -1) { // and at least one "." after the "@"
alert('Vous avez oublié le point "." après le signe "@". Veuillez vérifier.')
mail_form.zone_email.focus()
return false
}
if (periodPos+3 > mail_form.zone_email.value.length) { // must be at least 2 characters after the
alert('Il doit y avoir au moins deux caractères après le signe ".". Veuillez vérifier.')
mail_form.zone_email.focus()
return false
}if (mail_form.zone_texte.value == "") {
alert("Vous n’avez pas saisie de message !")
return false
} } // Fin de la fonction
Voilà tout et merci d'avance

PS : je vous aies présenté ma page dans sont entier, en réalité j'utilise une include pour insérer le formulaire dans le conteneur du centre.
Modifié par Spark (20 Jan 2007 - 00:27)