Connaitre le bouton sur lequel on a cliqué (Formulaire)

takinelinfo Messages postés 13 Date d'inscription mardi 24 avril 2007 Statut Membre Dernière intervention 1 juillet 2008 - 6 avril 2008 à 20:31
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 - 6 avril 2008 à 22:11
Bonsoir.
J'ai un formulaire avec deux boutons de validation et donc deux vérification.
Voici un exemple.
<?php
print_r($_POST);
?>
<!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=utf-8" />
<title>Test JS</title>
<script type="text/javascript">
        function verif1()
        {
                alert('verif1 réussie');
                if(4===3)
                        document.formulaire.submit();  
        }
       
        function verif2()
        {
                alert('verif2 réussie');
                if(2===2)
                        document.formulaire.submit();
        }
</script>
</head>
 

        <form id="formulaire" action="test.php" method="post" name="formulaire">
        Champ 1

        Champ 2

       
    </form>

</html>

Voila ici tout fonctionne, sauf que comme mes boutons ne sont pas des submit, je n'ai pas de $_POST correspondant. Donc niveau js, ça ne pose pas de problème mais après je ne peux pas faire de traitement adéquat car je ne sais pas quel bouton a été cliqué.
J'ai donc fait un truc comme ça:

<?php
print_r($_POST);
?>
<!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=utf-8" />
<title>Test JS</title>
<script type="text/javascript">
        function verif1()
        {
                alert('verif1 réussie');
                if(4===3)
                        document.formulaire.submit();  
        }
       
        function verif2()
        {
                alert('verif2 réussie');
                if(2===2)
                        document.formulaire.submit();
        }
</script>
</head>
 

        <form id="formulaire" action="test.php" method="post" name="formulaire">
        Champ 1

        Champ 2

       
    </form>

</html>

Niveau PHP, no soucis, le $_POST est bien crée donc je sais sur quel bouton j'ai cliqué. Par contre niveau JS, que la condition soit bonne ou non, il soumet le formulaire.

Comment puis je faire pour que cela fonctionne à la fois pour le js(pouvoir faire une vérif selon le bouton) et que cela fonctionne en PHP, connaitre aussi le bouton afin de pouvoir appliquer un traitement spécifique?

5 réponses

yoman64 Messages postés 962 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 2 août 2010 1
6 avril 2008 à 20:44
Salut,

Si tu veux pas que le formulaire s'envoie alors ta fonction doit retourner false (return false;).

Sinon utilise un simple bouton au lieu d'un submit.

-------------------
Vous cherchez un hebergement Php/MySQL Gratuit et sans publicités ??
Et bien c'est la : www.e3b.org  
0
takinelinfo Messages postés 13 Date d'inscription mardi 24 avril 2007 Statut Membre Dernière intervention 1 juillet 2008
6 avril 2008 à 20:52
J'ai essayer avec le return false sous FF, il n'en tiens pas compte:
function verif1()
{
        alert('verif1 réussie');
        if(4===3)
            document.formulaire.submit();   
        else
            return false;
}

Il soumet le formulaire dans tout les cas. J'ai essayer avec des types "bouton". Niveau JS, ça fonctionne parfaitement. Par contre niveau PHP, je ne sais pas sur quel bouton j'ai cliqué car je n'ai pas de $_POST correspondant au bouton de créé. Comment puis je faire pour que cela fonctionne à la fois en JS et en PHP?
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
6 avril 2008 à 21:17
Hello,

un bouton submit soumet le formulaire.Le comportement est normal.
Donc reprends ton code 1 et si tu veux savoir sur quel bouton on a appuyé, ajoute un champ de type caché.
Dans tes fonctions, tu donnes à ce champ una valeur arbitraire en fonction du bouton sur lequel on a cliqué, avant de soumettre.
Et c'est tout.
0
yoman64 Messages postés 962 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 2 août 2010 1
6 avril 2008 à 21:41
Arf malalam m'a devancé (encore) j'étais en train d'écrire que moi j'utiliserais un champs hidden. Ça m'apprenderas à ouvrir la page mais ne pas répondre tout de suite, d'autres réponses arrivent sans que je les vois.

-------------------
Vous cherchez un hebergement Php/MySQL Gratuit et sans publicités ??
Et bien c'est la : www.e3b.org  
0

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

Posez votre question
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
6 avril 2008 à 22:11
Faut pas t'en vouloir...je suis admin, donc je te suis supérieur, c'est normal. Plus rapide, plus intelligent, plus doué etc.
Donc vraiment...tu ne démérites pas, tu perds juste face à bien plus fort que toi. Aucun déhsonneur à ça.

(je sais que Yoman ne prendra pas ça au sérieux, mais je précise pour d'éventuels autres lecteurs : je PLAISANTE, hein... ;-))
0