Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 13 sur 13
  1. #1
    Membre habitué Avatar de Alexandrebox
    Inscrit en
    août 2006
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : août 2006
    Messages : 625
    Points : 104
    Points
    104

    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 :
    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 : 25

    Informations forums :
    Inscription : juillet 2007
    Messages : 246
    Points : 176
    Points
    176

    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
    Modérateur
    Avatar de s.n.a.f.u
    Homme Profil pro jmleroux
    Développeur Web
    Inscrit en
    août 2006
    Messages
    2 761
    Détails du profil
    Informations personnelles :
    Nom : Homme jmleroux
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : août 2006
    Messages : 2 761
    Points : 3 862
    Points
    3 862

    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
    Inscrit en
    août 2006
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : août 2006
    Messages : 625
    Points : 104
    Points
    104

    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 :
    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 :
    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 : 25

    Informations forums :
    Inscription : juillet 2007
    Messages : 246
    Points : 176
    Points
    176

    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
    Modérateur
    Avatar de s.n.a.f.u
    Homme Profil pro jmleroux
    Développeur Web
    Inscrit en
    août 2006
    Messages
    2 761
    Détails du profil
    Informations personnelles :
    Nom : Homme jmleroux
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : août 2006
    Messages : 2 761
    Points : 3 862
    Points
    3 862

    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 :
    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 :
    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
    Modérateur
    Avatar de s.n.a.f.u
    Homme Profil pro jmleroux
    Développeur Web
    Inscrit en
    août 2006
    Messages
    2 761
    Détails du profil
    Informations personnelles :
    Nom : Homme jmleroux
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : août 2006
    Messages : 2 761
    Points : 3 862
    Points
    3 862

    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
    Inscrit en
    août 2006
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : août 2006
    Messages : 625
    Points : 104
    Points
    104

    Par défaut

    Je commence à tout comprendre maintenant.
    Donc si je résume voilà ce que je dois faire :
    Code :
    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
    Modérateur
    Avatar de s.n.a.f.u
    Homme Profil pro jmleroux
    Développeur Web
    Inscrit en
    août 2006
    Messages
    2 761
    Détails du profil
    Informations personnelles :
    Nom : Homme jmleroux
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : août 2006
    Messages : 2 761
    Points : 3 862
    Points
    3 862

    Par défaut

    Pas tout à fait. Si tu veux faire du JS, pas besoin de repasser sur le serveur :

    Code :
    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
    Inscrit en
    août 2006
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : août 2006
    Messages : 625
    Points : 104
    Points
    104

    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
    Inscrit en
    août 2006
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : août 2006
    Messages : 625
    Points : 104
    Points
    104

    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 :
    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
    Modérateur
    Avatar de s.n.a.f.u
    Homme Profil pro jmleroux
    Développeur Web
    Inscrit en
    août 2006
    Messages
    2 761
    Détails du profil
    Informations personnelles :
    Nom : Homme jmleroux
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : août 2006
    Messages : 2 761
    Points : 3 862
    Points
    3 862

    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
    Inscrit en
    août 2006
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : août 2006
    Messages : 625
    Points : 104
    Points
    104

    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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •