IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

problème du test d'un bouton image appuyé


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 142
    Points : 83
    Points
    83
    Par défaut problème du test d'un bouton image appuyé
    sur ma page j'ai un formulaire et 3 images qui font office de bouton submit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     <form method="post" action="" name="form">
    ........
    <input type="image" name="etape12" onClick="envoyer_form('bon2b.php')" src="img/2B_off.jpg" border="0">
    <input type="image" name="etape13" onClick="envoyer_form('bonm.php')" src="img/2011_off.jpg" border="0">
    <input type="image" name="etape14" onClick="envoyer_form('bond.php')" src="img/Divers_off.jpg" border="0">
    .......
    </form>
    je valide mon formulaire via le script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <script language="javascript">
    function envoyer_form(pageTraitement) {
      document.form.action = pageTraitement;
      document.form.submit();
    }
    </script>

    Jusque là ca marche, et je suis rediriger vers la page bonne page.

    Sur la page concernée, j'ai ceci comme est pour savoir sur quelle image on a appuyé et quelle données il faut traiter, mais rien ne se passe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    if (isset($_POST['etape12'])) 
    { 
    echo"<script language=\"Javascript\">alert(\"ok bouton 12\");</script>";
    ...
    }
    if (isset($_POST['etape13'])) 
    { 
    echo"<script language=\"Javascript\">alert(\"ok bouton 13\");</script>";
    ...
    }
    if (isset($_POST['etape14'])) 
    { 
    echo"<script language=\"Javascript\">alert(\"ok bouton 14\");</script>";
    ...
    }
    D'ou viendrait l'erreur ?

    Merci

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    As tu controlé ce que contenait $_POST ?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 142
    Points : 83
    Points
    83
    Par défaut
    oiu j'ai controlé, et effectivement elle contient quelque chose, donc la condition devrait se faire logiquement.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    que contient $_POST ?
    il n'y a pas de magie : si la condition ne passe pas, c'est que les valeurs ne correspondent pas.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 142
    Points : 83
    Points
    83
    Par défaut
    à mon avis j'étais très endormi hier soir... apparemment elle ne contient rien...

    ma fonction javascript fait en tout cas une partie du traitement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <script language="javascript">
    function envoyer_form(pageTraitement) {
      alert("ok traitement bouton 12");
      document.form.action = pageTraitement;
    }
    </script>
    le document.form.action a été traité vu que je suis redirigé vers la bonne page.

    mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.form.submit();
    comment savoir si cela a été fait ?

  6. #6
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Normalement tu n'as pas besoin de sur-couche JS (sur le onclick par exp.) car ce sera le couple nom/valeur du bouton qui cliqué sera retourné, et seulement 1.

    Puis faire un document.form.submit() sur un bouton submit ne sert à rien, car ça fait doublon. Un click sur un bouton type submit déclenchera un évènement de type submit, donc soumettre le formulaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?php
    print_r($_POST);
    ?>
    <form action="test.php" name="verif" method="post">
        <input type="submit" name="input_a" value="input_1" />
        <input type="submit" name="input_b" value="input_5" />
    </form>
    Un click sur input_a le print_r() affichera input_1 uniquement.
    Ou Un click sur input_b le print_r() affichera input_2 uniquement.

    Donc une simple vérification sur la valeur de la clé suffit pour savoir quel est le bouton qui a été cliqué.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?php
    if (isset($_POST['input_a'])) {
        // 1er bouton
    }
    else if (isset($_POST['input_b'])) {
        // 2ème bouton
    }
    ?>
    Aussi, si tu place le focus (placer le curseur) dans le formulaire et qu'on appui sur la touche "entrer" (donc sans cliquer) ce sera le 1er bouton qui sera pris en compte.


    Mais peut être faudrait il que tu fasse autrement.
    Au lieu de créer plusieurs boutons submit pour 1 seul formulaire, et bien créer plusieurs formulaires mais avec 1 seul bouton (1 pour chaque formulaire).

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 142
    Points : 83
    Points
    83
    Par défaut
    Bonjour,

    ok merci pour tes explications, mais justement je n'ai pas de bouton "submit" mais 5 images, et c'est 5 images renvoie chacunes vers 1 page différente.

    c'est pour cela que j'ai mis la fonction javascript en plus.

  8. #8
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Non, tu as ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="image" ...etc ... />
    Un input de type image c'est un bouton submit (mais qui donne la possibilité de mettre une image au lieu d'un texte, c'est tout), c'est fait pour soumettre un formulaire.

    Pourquoi ne fais tu pas un essai sur une page basique, comme l'exemple que j'ai mis, tu sera fixé.

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 142
    Points : 83
    Points
    83
    Par défaut
    oui cela marche bien avec <input type="submit"> !

    mais avec <input type="image"> cela ne m'affiche rien du tout !

  10. #10
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    mais avec <input type="image"> cela ne m'affiche rien du tout !
    Et si tu rajoutais une valeur (value="une_valeur") peut être que ça affichera quelque chose.

    Puis si tu avais fait un essai, comme dans l'exemple avec un print_r($_POST), tu aurais remarqué que cela retourne quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Array
    (
        [input_a_x] => 10
        [input_a_y] => 4
    )
    Pourtant, ici le INPUT (du nom de input_a) n'a pas de valeur, mais on remarque que les coordonnés X et Y sont retournés.
    Donc on a quand même quelque chose.

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 142
    Points : 83
    Points
    83
    Par défaut
    oui j'avais fait tout cela et j'obtiens ceci :

    Array ( [input_a] => input_1 )
    ou Array ( [input_b] => input_5 )


    Oui quand meme j'avais bien mis value="..." :-)
    j'avait juste changé mon formulaire avec ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <form action="test2.php" name="verif" method="post">
        <input type="image" name="input_a" value="input_1" src="....." />
        <input type="image" name="input_b" value="input_5" src="....." />
    </form>
    et là ca n'affiche plus rien

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 142
    Points : 83
    Points
    83
    Par défaut
    j'ai intégré tout ceci sur mes pages et tout marche parfaitement mais uniquement avec un bouton classique !
    sur les boutons images, rien à faire !

  13. #13
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    sur les boutons images, rien à faire !
    A ben là, tu m'étonne
    Il y a des trucs des fois, c'est vraiment mystère et boule de bill

    Je peux te garantir que de mon coté ça marche parfaitement comme je l'ai décris, et cela aussi bien sur Firefox que IE.

    Je n'ai aucune explication à te donner, à part (grosse hypothèse) que ce serait lié à un code JS par là qui te couperais l'herbe sous le pieds.

    Juste comme ça, car je remarque que tu as mis des .... dans le src.
    As tu mis une URL valide vers une image ?


    Essai de faire comme ceci, juste pour voir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <button type="submit" name="input_a" value="input_1" ><img src="une_image.png" /></button>
    C'est un poil plus long comme code, m'enfin, sait on jamais.

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 142
    Points : 83
    Points
    83
    Par défaut
    merci pour ton aide en tout cas.

    oui c'est se prendre la tête pour des conneries !

    cela marche avec <button type="submit"> mais au niveau estéthique ce n'est pas cela du tout, mais enfin ca marche.

  15. #15
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Pour l'esthétique, ce n'est que du CSS, c'est pas grand chose. (2 ou 3 bricoles dans la feuille de style).

    Enfin, tu fais comme tu veux, la dessus pas de problème (encore heureux tu vas me dire ), mais il me semble mieux d'éviter du JS pour valider un formulaire.

    Je reste surpris du phénomène en tout cas.

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 142
    Points : 83
    Points
    83
    Par défaut
    oui pas de problème !
    oui c'est sur, si JS est désactivé chez certaines personnes, cela posera problème.

    Grand merci !

  17. #17
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Plusieurs boutons submit
    Bonjour,

    Il s'agit de mes premiers pas en tant que participant à un forum, j'implore donc votre indulgence.

    Je cherchais également le moyen d'avoir plusieurs boutons de type submit sur une page de formulaire.

    Je suis arrivé par un détour à cette conversation qui ma foi m'a semblé une bonne alternative à ce que je recherchais, seulement comme tomguiss, la solution image dans un boutton ne me convenais guère.

    Apparemment lorsqu'on insère une image à la place d'un bouton submit, $_POST interprète cette dernière en terme de coordonnées "x" ou "y" par rapport au curseur de la souris.

    c'est pourquoi dans la page de récupération des données on doit spécifier "_x" pour notre cas ici (ou je présume "_y" si les boutons sont l'un au dessus de l'autre).

    voici donc en image le code de ma page de saisie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <form action="processor.php" name="verif" method="post">
        <input type="image" src = "IMG/remove.png" name="input_a" value="input_1" />
        <input type="image" src = "IMG/delete.png" name="input_b" value="input_5" />
    </form>
    et celui de ma page de récupération
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    if (isset($_POST['input_a_x'])) {
        echo'1er bouton';
    }
    else if (isset($_POST['input_b_x'])) {
        echo'2ème bouton';
    }
    ?>
    le code tourne bien chez moi

    peut-être je répond à côté de la plaque car après une relecture rapide je viens de voir que RunCodePhp à soumis l'idée
    Array
    (
    [input_a_x] => 10
    [input_a_y] => 4
    )
    .

    en espérant que ça serve à quelqu'un

    bonne continuation

    Filou

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 17/12/2013, 09h39
  2. [WD10] Test d'une fenêtre - Problème avec l'utilisation du bouton GO
    Par oumlike dans le forum WinDev
    Réponses: 10
    Dernier message: 14/03/2011, 17h54
  3. Problème avec les Boutons Image
    Par abdoing dans le forum Struts 1
    Réponses: 4
    Dernier message: 29/06/2007, 10h35
  4. bouton image problème IE
    Par poussinphp dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 09/12/2005, 12h24
  5. bouton image
    Par furikuri dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 07/12/2004, 11h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo