"civilité" obligatoire dans formulaire [Résolu]

tautie 41 Messages postés mardi 19 décembre 2000Date d'inscription 11 juillet 2010 Dernière intervention - 24 nov. 2008 à 15:23 - Dernière réponse : Bul3 4934 Messages postés samedi 1 juillet 2006Date d'inscription 2 février 2015 Dernière intervention
- 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
Afficher la suite 

16 réponses

Répondre au sujet
Bul3 4934 Messages postés samedi 1 juillet 2006Date d'inscription 2 février 2015 Dernière intervention - 24 nov. 2008 à 16:42
+3
Utile
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

         
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Bul3
tautie 41 Messages postés mardi 19 décembre 2000Date d'inscription 11 juillet 2010 Dernière intervention - 29 nov. 2008 à 17:54
+3
Utile
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.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de tautie
nhervagault 6069 Messages postés dimanche 13 avril 2003Date d'inscription 15 juillet 2011 Dernière intervention - 24 nov. 2008 à 16:08
0
Utile
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;
}
Commenter la réponse de nhervagault
tautie 41 Messages postés mardi 19 décembre 2000Date d'inscription 11 juillet 2010 Dernière intervention - 24 nov. 2008 à 17:49
0
Utile
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
Commenter la réponse de tautie
tautie 41 Messages postés mardi 19 décembre 2000Date d'inscription 11 juillet 2010 Dernière intervention - 27 nov. 2008 à 14:56
0
Utile
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.
Commenter la réponse de tautie
Bul3 4934 Messages postés samedi 1 juillet 2006Date d'inscription 2 février 2015 Dernière intervention - 27 nov. 2008 à 15:11
0
Utile
>>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.

         
Commenter la réponse de Bul3
tautie 41 Messages postés mardi 19 décembre 2000Date d'inscription 11 juillet 2010 Dernière intervention - 27 nov. 2008 à 16:10
0
Utile
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
Commenter la réponse de tautie
Bul3 4934 Messages postés samedi 1 juillet 2006Date d'inscription 2 février 2015 Dernière intervention - 27 nov. 2008 à 18:16
0
Utile
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 ....
         
Commenter la réponse de Bul3
tautie 41 Messages postés mardi 19 décembre 2000Date d'inscription 11 juillet 2010 Dernière intervention - 27 nov. 2008 à 18:51
0
Utile
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
Commenter la réponse de tautie
Bul3 4934 Messages postés samedi 1 juillet 2006Date d'inscription 2 février 2015 Dernière intervention - 28 nov. 2008 à 08:37
0
Utile
>>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é )
         
Commenter la réponse de Bul3
tautie 41 Messages postés mardi 19 décembre 2000Date d'inscription 11 juillet 2010 Dernière intervention - 28 nov. 2008 à 19:15
0
Utile
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
Commenter la réponse de tautie
Bul3 4934 Messages postés samedi 1 juillet 2006Date d'inscription 2 février 2015 Dernière intervention - 29 nov. 2008 à 10:24
0
Utile
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

         
Commenter la réponse de Bul3
Bul3 4934 Messages postés samedi 1 juillet 2006Date d'inscription 2 février 2015 Dernière intervention - 29 nov. 2008 à 18:26
0
Utile
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....

        
Commenter la réponse de Bul3
tautie 41 Messages postés mardi 19 décembre 2000Date d'inscription 11 juillet 2010 Dernière intervention - 3 déc. 2008 à 17:00
0
Utile
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
Commenter la réponse de tautie
tautie 41 Messages postés mardi 19 décembre 2000Date d'inscription 11 juillet 2010 Dernière intervention - 4 déc. 2008 à 15:05
0
Utile
Ca y est ! Le formulaire fonctionne, il est en ligne dans ma page de contact.
Merci à toi Bul3 pour ton aide précieuse.



Tautie
Commenter la réponse de tautie
Bul3 4934 Messages postés samedi 1 juillet 2006Date d'inscription 2 février 2015 Dernière intervention - 4 déc. 2008 à 15:19
0
Utile
nickel si ça baigne, merci du retour.
         
Commenter la réponse de Bul3

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.