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 :

Comment savoir sur quel bouton on a cliqué ?


Sujet :

Langage PHP

  1. #1
    Membre du Club Avatar de sarah65536
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2006
    Messages : 93
    Points : 59
    Points
    59
    Par défaut Comment savoir sur quel bouton on a cliqué ?
    Bonjour ,

    J'ai un formulaire dans lequel j'affiche une liste d'éléments. Pour chaque élément, j'ai un bouton, qui va exécuter un code permettant de changer les valeurs de l'élément dans la base de données.

    les boutons sont des input avec une classe, une nom et un id. le nom = l'id et est composé de "btn_"<état de l'élément : lettre a ou lettre d>"_"<id de l'élément".
    Exemples :
    name="btn_a_78"
    name="btn_d_1452"
    ...

    Voila l'appel de ma fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (empty($_POST)==false)// Si on a deja cliqué sur un des boutons
            {
                  // appelle la fonction qui change d'état
                  $mon_objet->change_etat();
            }
    J'aimerai, dans ma fonction change_etat(),
    Trouver un moyen de savoir sur quel bouton on a cliqué.
    Existe-t'il une fonction donnant les éléments contenus dans $_POST ?
    Ainsi je n'aurai qu'a découper le nom du bouton afin de savoir son etat (a ou d) et l'id de l'élément.

    Merci

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Points : 1 177
    Points
    1 177
    Par défaut
    Non il n'existe pas une telle fonction mais ,tu peux acceder a ta variable, en mettant son nom entre crochet $_POST['variable_name'] donc une peti boucle devrait régler ton probleme.

  3. #3
    Membre du Club Avatar de sarah65536
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2006
    Messages : 93
    Points : 59
    Points
    59
    Par défaut
    Une petite boucle allant de 0 à 20 000(pour l'instant).... Dans 5 ans, ca fera un peu trop non ? Ça risque d'être trop long
    Enfin je peux quand même essayer pour voir !

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Points : 1 177
    Points
    1 177
    Par défaut
    J'ai pas compris la, ta page affiche 20000 lignes ???
    Je crois pas que ton navigateur va supporter.

    Tu pourrais avoir 2 hidden fields via javascript, copier le nom et l'etat de la ligne que tu veux modifier. Tu n'aurais alors qu'a récupérer 2 valeurs dans ton POST.

  5. #5
    Membre du Club Avatar de sarah65536
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2006
    Messages : 93
    Points : 59
    Points
    59
    Par défaut
    Et bien pour l'instant ma page affiche au maximum 9 000 ( les 20 000 c'est de l'anticipation) enregistrements. Pour changer l'état, cela prends environ 3 secondes en local. Le temps de trouver le bon bouton, et de ré afficher la liste. j'ai peur que ca devienne 10 secondes lorsque ca sera sur le web.

    Tu pourrais avoir 2 hidden fields via javascript, copier le nom et l'etat de la ligne que tu veux modifier. Tu n'aurais alors qu'a récupérer 2 valeurs dans ton POST.
    Merci pour cette solution, mais je ne dois pas utiliser javascript sur ordre du chef de projet.
    L'idée était bonne, mais pas dans mon cas.

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Points : 1 177
    Points
    1 177
    Par défaut
    C'est pas tres propre mais si tu ne peux pas utiliser de javascript tu peux toujours créer autant de formulaires que de ligne, a chaque fois que tu cliques tu ne posteras que les elements de la ligne cliquée.

  7. #7
    Membre du Club Avatar de sarah65536
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2006
    Messages : 93
    Points : 59
    Points
    59
    Par défaut
    C'est pas tres propre mais si tu ne peux pas utiliser de javascript tu peux toujours créer autant de formulaires que de ligne, a chaque fois que tu cliques tu ne posteras que les elements de la ligne cliquée.
    C'est vrai que ce n'est pas très propre. mais ma solution actuelle (celle de la boucle) n'est pas beaucoup mieux...

    Je vais tester cette solution, pour voir si elle est plus rapide que l'autre.

  8. #8
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 298
    Points : 101
    Points
    101
    Par défaut
    salut bon pour s'avoir a quel valeur tu 'as choisis dans ton input j'ai peut etre une solution pour toi
    pourquoi pas utlisé l'index d'input et un compteur
    exemple :
    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
    17
    18
    19
    20
    <?php 
    $compt=0;
    for($i=0;$i<2;$i++)
    {
    ?>
    <table width="220" border="1">
      <tr>
        <td width="59"><label>
        <input type="checkbox" name="checkbox" value="<?php print($compt) ?>" />
        </label></td>
        <td width="86"><label><a href="#" onclick="voila(<?php  print($compt); ?>)" >clique ici <?php print($compt); ?></a> </label></td>
      </tr>
    </table>
     
    <br />
    <?php $compt++; 
     
     
    }
    ?>
    l'input va se boucler $i fois avec le même name
    alors utlise l'index des objets pour recuperer ses valeurs grâce a la magie du javascript

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     function voila(choix)
    {
    vchoix=document.forms['form1'].elements[choix].value;
    alert("index.php?choix="+vchoix);
    }
    et puis tu met l'evenement Onclick
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="#" onclick="voila(<?php  print($compt); ?>)" >clique ici?></a>
    code complet du l'exemple
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    <!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>Document sans nom</title>
    <script language="javascript">
    function voila(choix)
    {
    vchoix=document.forms['form1'].elements[choix].value;
    alert("index.php?choix="+vchoix);
    }
    </script>
    </head>
     
    <body>
    <form id="form1" name="form1" method="post" action="ecriture.php">
    <?php 
    $compt=0;
    for($i=0;$i<2;$i++)
    {
    ?>
    <table width="220" border="1">
      <tr>
        <td width="59"><label>
        <input type="checkbox" name="checkbox" value="<?php print($compt) ?>" />
        </label></td>
        <td width="86"><label><a href="#" onclick="voila(<?php  print($compt); ?>)" >clique ici <?php print($compt); ?></a> </label></td>
      </tr>
    </table>
     
    <br />
    <?php $compt++; 
     
     
    }
    ?>
    <br />
    <br />
    <br />
     
     
     
    </form>
    </body>
    </html>

  9. #9
    Membre du Club Avatar de sarah65536
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2006
    Messages : 93
    Points : 59
    Points
    59
    Par défaut
    Merci pour ta réponse. J'ai oublié de préciser que le javascript est interdit dans mon application. ( ordre du chef de projet )

    je suppose que ta solution ne convient donc plus.

    Désolé, mais merci quand même

  10. #10
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 298
    Points : 101
    Points
    101
    Par défaut
    Citation Envoyé par sarah65536 Voir le message
    Merci pour ta réponse. J'ai oublié de préciser que le javascript est interdit dans mon application. ( ordre du chef de projet )

    je suppose que ta solution ne convient donc plus.

    Désolé, mais merci quand même
    ok pas de probleme bon si un jour ou t'as besoin de recuperer valeur d'un input cet exemple va etre utile je crois j crois
    bon contunation

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 21
    Points : 25
    Points
    25
    Par défaut
    Salut,
    plutot que d'utiliser un bouton par élément, pourquoi ne pas utiliser des boutons radio?
    étant donné que tu ne sélectionne qu'un seul élément à chaque fois il me semble que c'est la solution la plus logique non?

Discussions similaires

  1. Savoir sur quel bouton on a cliqué
    Par juniordev dans le forum Débuter
    Réponses: 10
    Dernier message: 23/12/2013, 18h58
  2. Savoir sur quel bouton créé dynamiquement l'utilisateur a cliqué
    Par Pierre Fauconnier dans le forum Contribuez
    Réponses: 8
    Dernier message: 05/08/2011, 12h54
  3. savoir sur quel bouton l'utilisateur clique
    Par Mihalis dans le forum Delphi
    Réponses: 4
    Dernier message: 13/06/2007, 21h07
  4. [WinForms]comment savoir sur quel bouton j'ai cliqué?
    Par bossun dans le forum Général Dotnet
    Réponses: 4
    Dernier message: 14/03/2006, 14h18
  5. Formulaire -> pour savoir sur quel bouton on a cliqué.
    Par Thierry8 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 17/09/2005, 18h53

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