Bonjour,
j'ai créé un formulaire qui permet la récupération des valeurs des champs dans un mail. Ce formulaire contient à la fois du php, du html et du Javascript, pour le contrôle des formulaires. Seuls certains champs sont obligatoires. Les contrôles ont été créées à l'aide du validateur de formulaire de dreamweaver 8 et je souhaiterais y ajouter un contrôle sur les checks box, afin qu'au moins une des checks box soit obligatoirement coché mais je ne sais pas comment modifier le code.
Le code de mon formulaire est le suivant:
<?php
if (isset($_POST['envoie']))
{
//Pour afficher le Nom en protégeant la balise html
$message = "Nom : ";
$message .= htmlspecialchars($_POST['nom']);
//Pour afficher le prénom en protégeant la balise html
$message .= "\nPrenom : ";
$message .= htmlspecialchars($_POST['prenom']);
//Pour afficher l'adresse en protégeantla balise html
$message .= "\nAdresse : ";
$message .= htmlspecialchars($_POST['adresse']);
//Pour afficher le Téléphone
$message .= "\nTelephone : ";
$message .= $_POST['telephone'];
//Pour afficher l'email
$message .= "\nEmail : ";
$message .= $_POST['email'];
//Pour afficher l'objet de la demande
$message .= "\nObjet : ";
//$r = count ($obj);
foreach ($_REQUEST['objet'] as $obj)
$message .= ' '. $obj;
//Pour afficher le descriptif de la demande en protégeant la balise html
$message .= "\nDescriptif : ";
$message .= htmlspecialchars($_POST['descriptif']);
//permet l'envoi du contenu du formulaire dans le corps d'un mail avec indication du sujet du message (email, objet, message)
$ret = mail("monnom@mondomaine.fr", "Demande d'information", $message);
if ($ret === true)
echo "Votre demande a bien été prise en compte . . Nous reprendrons contact avec vous dans les prochains jours.<br><a href=contact.htm target=\_parent>Retour </a>";
}
else
{
?>
<strong><font color="#999999"></font></strong> <br />
<br />
</div>
<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post" onsubmit="MM_validateForm('nom','','R','prenom','','R','email','','RisEmail','descriptif','','R');return document.MM_returnValue">
<table width="450" border="0" cellpadding="0" cellspacing="0">
<tr>
<td height="20" colspan="2"><div align="center">
<p align="center"><span class="Style6"><strong>Vous souhaitez nous contacter</strong></span><br />
<br />
<span class="Style3"><strong>
<b>
<font size="4">
<SCRIPT language="JavaScript" title="G1SCRIPT">
//by Matt Hedgecoe (c) 2002
var text="Merci d'utiliser le formulaire ci-dessous" // YOUR TEXT
var speed=80 // SPEED OF FADE
// ********** LEAVE THE NEXT BIT ALONE!
if (document.all||document.getElementById){
document.write('<span id="highlight">' + text + '</span>')
var storetext=document.getElementById? document.getElementById("highlight" ) : document.all.highlight
}
else
document.write(text)
var hex=new Array("00","14","28","3C","50","64","78","8C","A0","B4","C8","DC","F0" )
var r=1
var g=1
var b=1
var seq=1
function changetext(){
rainbow="#"+hex[r]+hex[g]+hex[b]
storetext.style.color=rainbow
}
function change(){
if (seq==6){
b--
if (b==0)
seq=1
}
if (seq==5){
r++
if (r==12)
seq=6
}
if (seq==4){
g--
if (g==0)
seq=5
}
if (seq==3){
b++
if (b==12)
seq=4
}
if (seq==2){
r--
if (r==0)
seq=3
}
if (seq==1){
g++
if (g==12)
seq=2
}
changetext()
}
function starteffect(){
if (document.all||document.getElementById)
flash=setInterval("change()",speed)
}
starteffect()
</SCRIPT>
</font></b> </strong></span></p>
<br />
</div></td>
</tr>
<tr>
<td width="150" class="Style5"><h6 class="Style7">Nom </h6></td>
<td width="300"><h6>
<input name="nom" type="text" size="40" class="champ" />
<span class="Style7"> (* )</span> </h6></td>
</tr>
<tr>
<td class="Style5"><h6 class="Style7">Prénom </h6></td>
<td><h6>
<input name="prenom" type="text" size="40" class="champ" />
<span class="Style7"> (* )</span> </h6></td>
</tr>
<tr>
<td><h6 class="Style7">Adresse </h6></td>
<td><textarea name="adresse" cols="40"></textarea>
</td>
</tr>
<tr>
<td><h6 class="Style7">Téléphone </h6></td>
<td ><h6 class="Style7">
<input name="telephone" type="text" size="15" class="champ"/>
</h6></td>
</tr>
<tr>
<td><h6 class="Style7">Mail </h6></td>
<td><h6>
<input name="email" type="text" size="40" class="champ"/>
<span class="Style7">(* ) </span></h6></td>
</tr>
<tr>
<td><h6 class="Style7">Objet de votre demande (* )</h6></td>
<td><h6 class="Style7">
<input type="checkbox" name="objet[]" value="Ateliers hebdo enfants" class="champ"/>
Ateliers hebdo enfants
<input type="checkbox" name="objet[]" value="Ateliers hebdo adultes" class="champ"/>
Ateliers hebdo adultes
<p></p>
</h6>
<h6 class="Style7">
<input type="checkbox" name="objet[]" value="Stages" class="champ"/>
Stages
<input type="checkbox" name="objet[]" value="Interventions extérieures" class="champ"/>
Interventions extérieures
<input type="checkbox" name="objet[]" value="Autres" class="champ"/>
Autres </h6></td>
</tr>
<tr>
<td><h6><span class="Style7">Descriptif de votre demande (*) </span></h6></td>
<td><textarea name="descriptif" cols="55" class="champ"></textarea>
</td>
</tr>
<tr>
<td> </td>
<td><input name="envoie" type="hidden" value="1" />
<input type="submit" name="Submit" value="Envoyer" />
<input name="button" type="button" onclick="window.print()" value="Imprimer cette page" />
<input type="reset" name="Réinitialiser" value="Réinitialiser" />
</td>
</tr>
<tr>
<td colspan="2"><div align="center">
<h6 class="Style7">(*) Champs obligatoires </h6>
<p><a href="contact.htm" target="_parent" class="Style3">Retour</a></p>
</div></td>
</tr>
</table>
</form>
<?php }?>
Les contrôles générés par le validateur de formulaire de dreamweaver se déclence lorsque l'on soumet le formulaire, une partie se trouve au niveau du form, l'autre dans le head.
Le code dans le head est le suivant:
<script type="text/JavaScript">
<!--
function MM_findObj(n, d) { //v4.01
var p,i,x; if(!d) d=document; if((p=n.indexOf("?" ))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
if(!x && d.getElementById) x=d.getElementById(n); return x;
}
function MM_validateForm() { //v4.0
var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
if (val) { nm=val.name; if ((val=val.value)!="" ) {
if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
if (p<1 || p==(val.length-1)) errors+='- '+nm+' doit contenir une adresse email.\n';
} else if (test!='R') { num = parseFloat(val);
if (isNaN(val)) errors+='- '+nm+' doit contenir un nombre.\n';
if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
min=test.substring(8,p); max=test.substring(p+1);
if (num<min || max<num) errors+='- '+nm+' doit contenir un nombre compris entre '+min+' et '+max+'.\n';
} } } else if (test.charAt(0) == 'R') errors += '- '+nm+' est nécessaire.\n'; }
} if (errors) alert('Afin de pouvoir vous répondre, Nous vous demandons de bien vouloir remplir tous les champs obligatoires. Merci\n'+errors);
document.MM_returnValue = (errors == '');
}
//-->
</script>
Comment pourrais-je rajouter un contrôle au niveau des checks box.
Merci d'avance pour tout conseil, suggestion ou information et bonne journée à tous.