"civilité" obligatoire dans formulaire

Résolu
tautie Messages postés 40 Date d'inscription mardi 19 décembre 2000 Statut Membre Dernière intervention 11 juillet 2010 - 24 nov. 2008 à 15:23
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 - 4 déc. 2008 à 15:19
J'ai un formulaire qui fonctionne très bien, mais je veux rendre  les champs obligatoires (sauf le message), et le champs "civilité" me pose problème avec ses trois boutons radio, le reste a l'air de fonctionner.
Comment dois-je faire ?
Voilà mes scripts:


formulaire.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Envoyer les donn&eacute;es</title>
<SCRIPT LANGUAGE="JavaScript">
window.defaultStatus="Champs Obligatoires";
</SCRIPT>
<script>


function checkrequired(which){
var pass=true
if (document.images){
for (i=0;i<which.length;i++){
var tempobj=which.elements[i]
if (tempobj.name.substring(0,8)=="required"){
if (((tempobj.type=="text"||tempobj.type=="textarea")&&tempobj.value=='')||(tempobj.type.toString().charAt(0)=="s"&&tempobj.selectedIndex==-1)){
pass=false
break
}
}
}
}
if (!pass){
alert("Vous n'avez pas rempli tous les champs obligatoires !!!")
return false
}
else
return true
}




</script>
</head>



<form onSubmit="return checkrequired(this)"  method=POST action=envoyer 1.php >

Civilité*:,
    Mme        Melle        Mr,
----
Votre Nom*:,
    ,
----
----
,
----
Votre Prénom*:,
    ,  
----
----
,
----
Votre Email*:,
    ,
----
----
,
----
Sujet*:,
    ,
----
----
,

----
Commentaires:,
  <textarea name=Texte cols=50 rows=10 id="Texte"></textarea>,

----
,
Les champs marqués * sont obligatoires.,
----
,
   
  -

</form>

</html>

envoyer 1.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Donn&eacute;es envoy&eacute;es</title>
</head>



<?php
$TO = "moi[mailto:moi@wanadoo.fr @wanadoo.fr]";


$h  = "From: " . $TO;


$message = "";


while (list($key, $val) = each($HTTP_POST_VARS)) {
  $message .= "$key : $val\n";
}


mail($TO, $subject, $message, $h);


Header("Location: merci.html>");


?>



</html>

Tautie

16 réponses

Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
24 nov. 2008 à 16:42
l'extrait nécessaire suffisait !

<script type= "text/javascript">
    function checkrequired(formul)
    {    for( var n=0;n<document.frm.civilite.length; n++ )
        {    if ( document.frm.civilite[n].checked )
            {    return true;    } // le formulaire sera envoyé  ( voir les autres tests ? )
        }
        return false;     // formualire non soumis
    }
</script>
<form name="frm"
        onSubmit ="return checkrequired(this);" 
        method="POST" action="javascript:alert('ok');" > <!-- pour les test -->
   
   
   
   
</form>

et attention aux " ! ça peut ne pas plaire à tous

Cordialement

         
3
tautie Messages postés 40 Date d'inscription mardi 19 décembre 2000 Statut Membre Dernière intervention 11 juillet 2010
29 nov. 2008 à 17:54
Je me suis mal eprimée, excuse-moi, mais c'est parce qu'au viveau de ce formulaire, étant encore au niveau des essais, j'ai créer une page formulaire.html rien que pour cela.
Mais en fait, le formulaire à proporement dit sera inclus dans ma page coordonnees.html (donc le fichier formulaire.html n'existera plus) et sera piloté par le fichier


mail.php.
Et c'est pour la redirection que je parle de index.html (c'est un exemple) cela ferait revenir le visiteur sur la page d'accueil après qu'il ait envoyé son mail.
Je vais essayé ce que tu proposes.
<meta http-equiv="Refresh" content="0; URL=index.html">





Tautie.
3
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
24 nov. 2008 à 16:08
Salut,

Avec une feuille de style CSS ca serait plus claire comme code ;-)

Id = id de la div englobante ou du formulaire par exemple

function checkUneCaseCochee(id)
{
          var cbs = id.getElementsByTagName('input');
                        for (var i 0, cb cbs[ i ]; i < cbs.length; cb = cbs[++i]){                if (cb.type 'checkbox' || cb.type 'radio'){
                    if(cb.checked) return true;
                }
           }
           return false;
}
0
tautie Messages postés 40 Date d'inscription mardi 19 décembre 2000 Statut Membre Dernière intervention 11 juillet 2010
24 nov. 2008 à 17:49
Re bonjour Bul3,  merci de répondre si vite et dans le sens de ma question.
Je vais essayer d'introduire ce que tu m'indique dans mon script.
Je te tiens au courant.
(Le menu dynamique fonctionne à merveille !)



Tautie
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tautie Messages postés 40 Date d'inscription mardi 19 décembre 2000 Statut Membre Dernière intervention 11 juillet 2010
27 nov. 2008 à 14:56
J'ai réussi à "bidouiller" un script qui fonctionne et qui vérifie tout les champs obligatoires
:


<script type="text/javascript">
function checkrequired(which){
var pass=true
if ((document.forms[0].civilite[0].checked==false) && (document.forms[0].civilite[1].checked==false) && (document.forms[0].civilite[2].checked==false))
{ alert("Veuillez entrer votre civilité!" );
return false; }
 


if (document.images){
for (i=0;i<which.length;i++){
var tempobj=which.elements[i]
if (tempobj.name.substring(0,8)=="required"){
if (((tempobj.type=="text"||tempobj.type=="textarea")&&tempobj.value=='')||(tempobj.type.toString().charAt(0)=="s"&&tempobj.selectedIndex==-1)){
pass=false
break
}
}
}
}
if (!pass){
alert("Vous n'avez pas rempli tous les champs obligatoires !!!")
return false
}
else
return true
}
</script>

C'est déjà ça !
Je voudrais maintenant savoir, si il est possible au moment ou l'on clique pour envoyer le message il apparaisse une alerte "message envoyé" et que l'on revienne sur la page du fomulaire à nouveau mais avec les champs vides., car pour l'instant quand j'envoie le formulaire j'arrive sur une page blanche
.

Tautie.
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
27 nov. 2008 à 15:11
>>il apparaisse une alerte "message envoyé"
alert("message envoyé")
mais bof, à mon avis : évite

>>et que l'on revienne sur la page du formulaire à nouveau mais avec les champs vides.,

re bof....
le formulaire est envoyé à la page contenu dans action= du form
s'il n'y a rien, c'est la page qui envoie qui est appelée
les champs sont ( normalement ? ) effacés, mais la page
     qui reçoit fait ce qu'elle veut.

         
0
tautie Messages postés 40 Date d'inscription mardi 19 décembre 2000 Statut Membre Dernière intervention 11 juillet 2010
27 nov. 2008 à 16:10
Justement, l'action du form c'est action=mail.php, donc j'arrive sur une page blanche.

mail.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "[http://www.javascriptfr.com/c.aspx?u=aHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZA== [ Lien ]]

">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Donn&eacute;es envoy&eacute;es</title>
</head>

<?php
$TO = "moi[mailto:moi@wanadoo.fr @wanadoo.fr]";

$h  = "From: " . $TO;

$message = "";

while (list($key, $val) = each($HTTP_POST_VARS)) {
  $message .= "$key : $val\n";
}

mail($TO, $subject, $message, $h);

?>

</html>

Il faudrait tout de même qu'au moment du clic, je redirige sur une page du site, sans passer par la page blanche.

Tautie
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
27 nov. 2008 à 18:16
c'est ce que va créer mail.php qui sera affiché.
ici html et body ( et quasi rien d'autre ) ==> une page blanche.
soit tu y mets le formulaire, soit tu fais le mail
       dans la page qui contient le formulaire, soit tu rediriges
       vers la page du formulaire ( ce serait dommage ), soit ....
         
0
tautie Messages postés 40 Date d'inscription mardi 19 décembre 2000 Statut Membre Dernière intervention 11 juillet 2010
27 nov. 2008 à 18:51
Là, je suiscomplètement perdue !



J'ai mes deux fichiers; formulaire.html et mail.php, si je veux rediriger vers ma page d'accueil; index.html, comment dois-je procéder, et dans quel fichier dois-je intervenir ?



Tautie
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
28 nov. 2008 à 08:37
>>dans quel fichier dois-je intervenir ?
là où tu veux ( ou tu dois ! )
>> si je veux rediriger vers ma page d'accueil
la plus mauvaise solution, certainement, mais
     regarde en html <meta http-equiv="Refresh" content="0; URL=index.php">
     ou rechercher "redirection" en php....
"le mieux" (?) est de "tout" mettre dans une seule et même page
    ( même si tu utilises des include pour la lisibilité )
         
0
tautie Messages postés 40 Date d'inscription mardi 19 décembre 2000 Statut Membre Dernière intervention 11 juillet 2010
28 nov. 2008 à 19:15
Pourquoi rediriger vers la page d'accueil est une mauvaise solution ?
Et si je me sers de : <meta http-equiv="Refresh" content="0; URL=index.php"> c'est bienindex.html et non pas index.php  puisque mon fichier c'est index.html,
et  ce code je dois le placer où  ?
"le mieux"  est de "tout" mettre dans une seule et même page : qu'est ce que tu veux dire par là ?

Plus j'avance, plus j'ai l'impression de "nager".
Merci de ta patience.

Tautie
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
29 nov. 2008 à 10:24
ben tu charges p1.php qui lance p2.php qui lancera p0.php
tu peux tou faire dans la même page
ou au moins en supprimer une.

ton fichier n'est pas index.html !! si ? ou alors j'ai rien compris !

tu as index.html puis formulaire.html puis mail.php : c'est pas ce que tu disais ?
donc... tu dois être dans mail.php lorsque mail en php est lancé ? non ?
si tu veux rediriger... il faut le faire là où tu es, sinon c'est pas fait...

2 pages ( maxi ) : index.html et formulaire.php  doivent suffirent

         
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
29 nov. 2008 à 18:26
coordonnees.html ou formulaire.html.... c'est pareil.
>>Je vais essayé ce que tu proposes. <meta http-equiv="Refresh" content="0; URL=index.html">
si tu y tiens à tout prix....

        
0
tautie Messages postés 40 Date d'inscription mardi 19 décembre 2000 Statut Membre Dernière intervention 11 juillet 2010
3 déc. 2008 à 17:00
Bonjour Bul3, j'ai essayé  <meta http-equiv="Refresh" content="0; URL=index.html"> pour la redirection et cela fonctionne très bien.
Merci ! Tout fonctionne !

Il me reste  maintenant à introduire mon formulaire dans la cellule d'un tableau, je fais l'essai en ligne demain, je te tiens au courant.

Tautie
0
tautie Messages postés 40 Date d'inscription mardi 19 décembre 2000 Statut Membre Dernière intervention 11 juillet 2010
4 déc. 2008 à 15:05
Ca y est ! Le formulaire fonctionne, il est en ligne dans ma page de contact.
Merci à toi Bul3 pour ton aide précieuse.



Tautie
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
4 déc. 2008 à 15:19
nickel si ça baigne, merci du retour.
         
0
Rejoignez-nous