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 exécuter un code PHP selon le bouton sur lequel on clique ?


Sujet :

Langage PHP

  1. #1
    Membre habitué Avatar de Alexandrebox
    Profil pro
    Inscrit en
    Août 2006
    Messages
    635
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 635
    Points : 153
    Points
    153
    Par défaut Comment exécuter un code PHP selon le bouton sur lequel on clique ?
    bonsoir,

    Pourruez-vous SVP m'aider?

    Voici mon problème.
    J'ai un formulaire avec 2 boutons. Un bouton qui exécute une action en javascript (Bouton insérer)
    Un autre bouton qui appelle une fonction (afficher)
    Un autre bouton qui appelle une fonction (Supprimer)
    Actuellement les fonctions sont en javascript de cette manière. Le problème est que mon code est en PHP. Comment exécuter mon code php après avoir cliqué

    Voici le code :
    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
    <?php
    if(isset($_POST['someval']))
    {
     
    }
    ?>
     
    <script language="javascript">
    // fonction pour le cas d'appui sur la touche entrée
    function testsubmit() {
        return !!document.formulaire.action;
    }
     
    //fonction pour choisir l'action
    function gopage(page)
    {
        document.formulaire.action = page;
        document.formulaire.submit();
    }
     
    function afficher()
    {
     
    }
    </script>
     
     
    <form action="#" name="formulaire" id="formulaire" onsubmit="testsubmit();">
    $sql = "SELECT * FROM texte ORDER BY IDT DESC";
    $req = mysql_query($sql);
    $varDonnee .= 'Liste des données<br>'; 
     
    while ($ligne = mysql_fetch_assoc($req))
    {
    $IDT = $ligne['IDT'];
    $titre = $ligne['titre'];
    $link = 'http://www.monsite.com/'.$ligne['link'].'.php';
    // affiche le resultat
    $varDonnee .='<input name="someval" type="radio" id="someval" value="'.$link.'" />'.$titre.'<br />';
    }
    <input type="button" id="insert" name="insert" value="Insérer" onclick="insérer();" />
    			<br><br>
    <input type="button" id="afficher" name="afficher" value="Afficher donnée" onclick="afficher();" />
    <input type="button" id="supprimer" name="supprimer" value="Supprimer la donnée" onclick="supprimer();" />
    </form>
    D'avance je vous remercie
    Je sais que je ne sais rien

  2. #2
    Membre actif Avatar de Momodedf
    Inscrit en
    Juillet 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Juillet 2007
    Messages : 246
    Points : 221
    Points
    221
    Par défaut
    Avant tout il faut savoir que le PHP est un langage interprété coté serveur et JavaScript coté client.

    Ce qui veut dire que le PHP génère un fichier (HTML dans ton cas) et te l'envoi. Le problème c'est que si tu veux utiliser un code PHP (je suppose pour insérerdes éléments dans ta page) il faudra repasser par l'interpréteur PHP donc par le serveur.
    Conséquences : tu perds les infos que l'utilisateur a saisies dans le formulaire.
    Donc il est plus intéressant de faire du JavaScript dans ce cas là.

    Après je sais pas trop ce que doivent faire tes fonctions donc je me trompe peut être.

  3. #3
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Bonjour,
    Citation Envoyé par Momodedf Voir le message
    Conséquences : tu perds les infos que l'utilisateur a saisies dans le formulaire.
    Non, je ne suis pas d'accord.
    Bien au contraire, ces données de formulaire peuvent te permettre de différencier tes actions.

    Chacun de tes boutons sera un submit avec un nom différent.
    Lorsque tu auras cliqué, le même script de traitement sera effectivement lancé, mais à l'intérieur de ce script il t'est tout à fait possible de tester la valeur du nom de bouton appelant pour décider de l'action à entreprendre.



    J'ajouterais que pour moi javascript devrait se cantonner à des manipulations côté client, principalement pour la mise en forme et l'ergonomie.
    Pour les traitements métiers, faites le du côté serveur ! (oui, ajax ça compte côté serveur )
    • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
    • Merci d'utiliser les balises de code (# dans l'éditeur)
    • N'oubliez pas de vous servir des boutons , et

    S.N.A.F.U

  4. #4
    Membre habitué Avatar de Alexandrebox
    Profil pro
    Inscrit en
    Août 2006
    Messages
    635
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 635
    Points : 153
    Points
    153
    Par défaut
    Merci beaucoup même si je reconnais ne pas beaucoup avancer.
    Je résume, si j'ai bien compris, il n'y a aucun moyen d'utiliser 3 boutons sur un formulaire :
    le premier bouton appelle une fonction javascript
    le deuximème affiche une page en javascript je crois
    et le troisimème se contente d'envoyer les valeurs des champs à php via
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php 
    if(isset($_POST['supprimer']))
    //si bouton supprimer est cliqué, faire ces actions
    ?>
    Si oui, comment faire alors?
    Voici ce que j'ai essayé de faire qui ne marche pas :
    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
     
    <script language="javascript">
    // fonction pour le cas d'appui sur la touche entrée
    function testsubmit() {
        return !!document.formulaire.action;
    }
     
    function afficher()
    {
    alert("va afficher une page");//Cette fonction marche
    }
     
    function supprimer()
    {
    <?php
    //Ce code ne marche pas
    ?>
    }
    Merci pour votre aide.
    Je sais que je ne sais rien

  5. #5
    Membre actif Avatar de Momodedf
    Inscrit en
    Juillet 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Juillet 2007
    Messages : 246
    Points : 221
    Points
    221
    Par défaut
    Citation Envoyé par s.n.a.f.u Voir le message
    Bonjour,

    Non, je ne suis pas d'accord.
    Bien au contraire, ces données de formulaire peuvent te permettre de différencier tes actions.

    C'est pas ce que je voulais dire.
    Imaginons que tu aies un bouton qui permette de rajouter un champ de saisie par exemple pour permettre à l'utilisateur de renseigner un 2em mail.
    Si tu passe par PHP pour l'ajout de ce champ de saisie en cliquant sur le bouton ça soumet le formulaire incomplet donc le client doit tout se retaper (ce que je voulais dire par données perdues).
    A moins bien sur que tu ré-remplisse avec les données pré-existantes mais c'est bête de surcharger le code alors que JS peut faire ça facilement.

    La question ici c'est de savoir quel est l'effet désiré lors de l'appui sur les boutons pour savoir si le mieux est d'utiliser du JS ou du PHP.

    A mon avis le code en question n'a pas forcement besoin d'être écrit en PHP et tu ferais bien de le repasser en JS (que doit faire la fameuse fonction ?).

  6. #6
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Citation Envoyé par Alexandrebox Voir le message
    Je résume, si j'ai bien compris, il n'y a aucun moyen d'utiliser 3 boutons sur un formulaire
    Justement si.

    Code html du formulaire : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <form id='frm' name='frm' method='post' action='maPage.php'>
        <input type='submit' name='btn1' value='btn1'/>
        <input type='submit' name='btn2' value='btn2'/>
        <input type='submit' name='btn3' value='btn3'/>
    </form>

    Code php de traitement : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    $action = '';
    if (isset($_POST['btn1'])) $action = 'action1';
    elseif (isset($_POST['btn2'])) $action = 'action2';
    elseif (isset($_POST['btn3'])) $action = 'action3';
    • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
    • Merci d'utiliser les balises de code (# dans l'éditeur)
    • N'oubliez pas de vous servir des boutons , et

    S.N.A.F.U

  7. #7
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Citation Envoyé par Momodedf Voir le message
    C'est pas ce que je voulais dire.
    Imaginons que tu aies un bouton qui permette de rajouter un champ de saisie par exemple pour permettre à l'utilisateur de renseigner un 2em mail.
    Ergonomie => ok pour JS
    Si tu passe par PHP pour l'ajout de ce champ de saisie en cliquant sur le bouton ça soumet le formulaire incomplet donc le client doit tout se retaper (ce que je voulais dire par données perdues).
    A moins bien sur que tu ré-remplisse avec les données pré-existantes mais c'est bête de surcharger le code alors que JS peut faire ça facilement.
    Mais JS peut être désactivé, toujours le garder en mémoire. Je sais, je me fais l'avocat du diable : désactiver JS, c'est se couper du web 2.0, la nouvelle révolution à la mode.

    La question ici c'est de savoir quel est l'effet désiré lors de l'appui sur les boutons pour savoir si le mieux est d'utiliser du JS ou du PHP.
    Je vois justement une fonction "supprimer". J'imagine que ça supprime quelque chose de la base de données. JS ne peut pas le faire.
    Et le pourrait-il que je lui interdirais.
    • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
    • Merci d'utiliser les balises de code (# dans l'éditeur)
    • N'oubliez pas de vous servir des boutons , et

    S.N.A.F.U

  8. #8
    Membre habitué Avatar de Alexandrebox
    Profil pro
    Inscrit en
    Août 2006
    Messages
    635
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 635
    Points : 153
    Points
    153
    Par défaut
    Je commence à tout comprendre maintenant.
    Donc si je résume voilà ce que je dois faire :
    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
     
    <?php
    $action = '';
    if (isset($_POST[''inserer]))
    {
    //Appeler la fonction javascript
    echo '<script text="javascript">MesfichiersDialog.insert(); </script>';
    } 
    elseif (isset($_POST['supprimer']))
    {
    $donneeASupprimer = $_POST['donnee'];
    //Supprimer la donnée avec du php
    }
    if (isset($_POST['afficher'])) 
    {
    echo 'Afficher la donnée'.$_POST['texte'];
    }
    ?>
    D'avance je vous remercie beaucoup.
    Que pensez-vous de ce code?
    Je sais que je ne sais rien

  9. #9
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Pas tout à fait. Si tu veux faire du JS, pas besoin de repasser sur le serveur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <form id='frm' name='frm' method='post' action='maPage.php'>
        <input type='submit' name='ajouter' value='ajouter'/>
        <input type='submit' name='supprimer' value='supprimer'/>
        <input type='button' name='btn2' value='btn2' onclick='alert(\'click2\');'/>
        <input type='button' name='btn3' value='btn3' onclick='alert(\'click3\');'/>
    </form>
    Les deux premiers boutons appellent un traitement serveur avec différentiation, les deux autres appellent du js dans le navigateur.
    • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
    • Merci d'utiliser les balises de code (# dans l'éditeur)
    • N'oubliez pas de vous servir des boutons , et

    S.N.A.F.U

  10. #10
    Membre habitué Avatar de Alexandrebox
    Profil pro
    Inscrit en
    Août 2006
    Messages
    635
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 635
    Points : 153
    Points
    153
    Par défaut
    Merci beaucoup. Je l'ai testé et ça marche nickel.
    Bonne journée et bona appetit
    Je sais que je ne sais rien

  11. #11
    Membre habitué Avatar de Alexandrebox
    Profil pro
    Inscrit en
    Août 2006
    Messages
    635
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 635
    Points : 153
    Points
    153
    Par défaut
    Bonjour,

    C'est encore moi.
    J'étais tellement sûr que j'ai livré ton code sans le tester avant. Je viens de remarquer que le code ne fonctionne pas.
    Si j'utilise que des boutons avec onclick"", tout marche bien.
    Mais si je fais bouton onClik et boutons value, seul le bouton Onclick entrainant un comportement javascript.
    If(isset($_POST['supprimer']))
    ne produit acun effet.

    Voici le code :
    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
    <?php
    echo '
    <form action="#" name="formulaire" id="formulaire" method="post" onsubmit="testsubmit();">
    <input name="someval" type="radio" id="someval" value="'.$link1.'" />'.$titre1.'<br />
    <input name="someval" type="radio" id="someval" value="'.$link2.'" />'.$titre2.'<br />
    <input name="someval" type="radio" id="someval" value="'.$link3.'" />'.$titre3.'<br />
    <input type="button"  name="insert" value="{#insert}" onclick="MesfichiersDialog.insert();" />
    			<br>
    <input type="button" name="afficher" value="afficher donnée"  />
    			<br>
    <input type="button"  name="supprimer" value="supprimer donnée"  />
    			
    </form>
    ';
     
     
    if(isset($_POST['afficher']))
    {
    echo '<br><br>'.$_POST['afficher'];
    }
    elseif(isset($_POST['supprimer']))
    {
    echo '<br><br>'.$_POST['supprimer'];
    }
    ?>
    D'avance merci
    Je sais que je ne sais rien

  12. #12
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Salut,

    Soit tu gères un contrôle "button" affublé d'un attribut onclick avec du javascript, soit le bouton doit être un contrôle "submit", et non pas button, pour qu'il puisse soumettre ton formulaire...

    • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
    • Merci d'utiliser les balises de code (# dans l'éditeur)
    • N'oubliez pas de vous servir des boutons , et

    S.N.A.F.U

  13. #13
    Membre habitué Avatar de Alexandrebox
    Profil pro
    Inscrit en
    Août 2006
    Messages
    635
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 635
    Points : 153
    Points
    153
    Par défaut
    Oups, excuse-moi. C'était ma faute.
    C'est corrigé et ça marche nickel.
    Merci beaucoup
    Je sais que je ne sais rien

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

Discussions similaires

  1. Réponses: 17
    Dernier message: 04/05/2014, 19h08
  2. Réponses: 44
    Dernier message: 02/08/2006, 16h12
  3. Réponses: 5
    Dernier message: 03/04/2006, 16h50
  4. Réponses: 7
    Dernier message: 30/03/2006, 15h43
  5. Réponses: 7
    Dernier message: 03/02/2005, 17h20

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