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 :

evènement sur un onclick


Sujet :

Langage PHP

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    428
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2008
    Messages : 428
    Par défaut evènement sur un onclick
    Bonsoir,
    j'ai le code html suivant:
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="mailto:essai@suivi.com?subject=Annonce_ &body=Bonjour, class="btn btn-secondary " onclick="return confirm('message!')">click</a>
    le retourn confirm ouvre une boite de dialogue avec un bouton ok et annuler, ca marche si je clic sur annuler sa n'ouvre pas le mail et si je clic sur ok oui, c'est bon, mais en plus, j'aimerai mettre à jour ma table mysql avec un update, mais pour celà, il faut traiter le retour du ok, j'ai essayé plusieurs solution mais ca ne marche pas.
    merci si il y a une solution

  2. #2
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 140
    Par défaut
    Salut

    Il manque un ",
    <a href="mailto:essai@suivi.com?subject=Annonce_ &body=Bonjour, class="btn btn-secondary " onclick="return confirm('message!')">click</a>
    <a href="mailto:essai@suivi.com?subject=Annonce_ &body=Bonjour", class="btn btn-secondary " onclick="return confirm('message!')">click</a>
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    428
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2008
    Messages : 428
    Par défaut
    oui, j'ai mal recopié mais il y a une solution?

  4. #4
    Membre expérimenté Avatar de Trehinos
    Homme Profil pro
    Analyste développeur PHP
    Inscrit en
    Novembre 2012
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Analyste développeur PHP
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2012
    Messages : 100
    Par défaut
    Oui : créez une fonction. Le code dans le "onclick" est censé être un appel de fonction : https://www.w3schools.com/tags/ev_onclick.asp
    Même si mettre directement du JS fonctionne, ça fait pas propre... et vous pourrez ajouter des fonctionnalités supplémentaires ici.

    Notez que le return n'est pas nécessaire dans le onclick. L'appel de fonction (y compris à confirm() seul) suffit.
    C'est la fonction qui doit retourner false. Ce que fait déjà confirm() quand l'utilisateur clique sur "non" ou "annuler" (suivant son navigateur).


    Pour votre problème :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    ...
    <a href="mailto:essai@suivi.com?subject=Annonce_ &body=Bonjour", class="btn btn-secondary " onclick="maFonction('message!')">click</a>
    ...
    <script>
        function maFonction(message) {
            if (!confirm(message)) {
                // si l'utilisateur a cliqué sur "non", on "annule" le clic :
                return false;
            }
            // si l'utilisateur a cliqué sur "oui" :
            // faire un appel AJAX par exemple pour qu'un script PHP s'occupe de l'UPDATE
        }
    </script>
    ...

    L'appel AJAX peut se faire avec $.post() si vous utilisez jQuery ou bien avec fetch() en JS pur.

    • Fetch : https://developer.mozilla.org/fr/doc...PI/Using_Fetch
    • JQuery post : https://api.jquery.com/jquery.post

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    428
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2008
    Messages : 428
    Par défaut
    merci mais quand je clic sur annuler sa ouvre quand même le mail?

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    428
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2008
    Messages : 428
    Par défaut
    en fait le code est dans une fonction, c'est peut etre ca?
    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    function getAll()
        {
            $messages = reqGet();
            while($donnees = $messages->fetch())
            {
                $id = $donnees['id_a'];
                $id2=$donnees['id_ann_a'];
                ?>
                <tr>
                    <td id="id_a"><?=$donnees['id_a'];?></td>
                    <td id="id_ann_a"><?=$donnees['id_ann_a'];?></td>
                    <td id="pv_a"><?=$donnees['pv_a'];?></td>
                    <td id="date_a"><?=$donnees['date_a'];?></td>
                    <td id="prix_a"><?=$donnees['prix_a'];?></td>
                    <td id="status_a"><?=$donnees['status_a'];?></td>
                    <td id="facture_a"><?=$donnees['facture_a'];?></td>
     
                    <?php 
                    $pclientd=$donnees['pc_a'];
                    $pvendeurd=$donnees['pv_a'];
                    $idcommande=$donnees['id_a'];
                    $idann=$donnees['id_ann_a'];
                    $bloquer=$donnees['bloquer_a'];
     
                    $bdd=bdd();
                    $requete = $bdd -> query("SELECT * FROM a WHERE id_ann_a='$idann' ORDER BY id_a DESC");
                    $donnees2 = $requete -> fetch();
                    $idcom=$donnees2['id_a'];
                    $titre=$bdd -> query("SELECT ann_titre FROM annonce JOIN a ON annonce.ann_id = a.id_ann_a WHERE id_ann_a='$idann' ORDER BY id_a DESC");
                    $donnees3 = $titre -> fetch();
                    ?>
     
     
     
                        <!--//&pclient=<?=$donnees['mess_pc']; ?>&pv=<?=$donnees['mess_pv']; ?>-->
                        <td style="vertical-align: middle;">
                            <a id="<?=$id;?>" href="visualiserAnnonce2.php?id=<?=$donnees['id_ann_a'];?>" class="btn btn-lg btn-primary mr-2 btn-sm">Visualiser</a>
     
                            <button type="button" id="avisb" class="btn btn-primary" style="text-align:center; text-decoration:none;"><i class="fas fa-plane pr-2" ><a href='ajoutavis.php?id=<?php echo $id;?>'style="color:white; text-decoration:none;">Postez un Avis</a></i></button>
     
                            <a href="mailto:essai@suivi.com?subject=Annonce_ &body=Bonjour", class="btn btn-secondary " onclick="maFonction('message!')">click</a>
                                <script>
                                function maFonction(message) {
                                    if (!confirm(message)) {
                                        // si l'utilisateur a cliqué sur "non", on "annule" le clic :
                                        return false;
                                    }
                                    // si l'utilisateur a cliqué sur "oui" :
                                    // faire un appel AJAX par exemple pour qu'un script PHP s'occupe de l'UPDATE
                                }
                            </script>
                            <!--a id="<?=$id;?>" style="margin-left:10px;" class="btn btn-secondary btn-sm litige" href="#">Litige</a-->
                        </td>
                    </tr>
                    <?php
     
                }
            }

  7. #7
    Membre expérimenté Avatar de Trehinos
    Homme Profil pro
    Analyste développeur PHP
    Inscrit en
    Novembre 2012
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Analyste développeur PHP
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2012
    Messages : 100
    Par défaut
    Alors le fait que la balise <script> soit dans la boucle fait que la fonction est déclarée plusieurs fois (autant de fois que la boucle est exécutée). En soit, ce n'est pas ce qui produit le bug (la dernière déclaration est celle qui sera prise en compte par le navigateur, chaque déclaration "masquant" la précédente) mais c'est inutile de charger le code JS. Sortez le JS de la boucle.

    Pour ce qui est du return dans le onclick, je vous ai donné une mauvaise indication : laissez-le.
    Il ne serait pas nécessaire si on liait le onclick en JS avec une référence vers une fonction qui renvoie false mais nous ne sommes pas dans ce cas. Votre onclick est une instruction (qui appelle une fonction) et il faut que onclick() retourne false pour faire comprendre au navigateur d'annuler le comportement par défaut.

Discussions similaires

  1. [ActionListener] Evénement sur tableau de boutons
    Par frouge dans le forum Composants
    Réponses: 5
    Dernier message: 08/10/2011, 02h44
  2. Détruire un bouton sur son OnClick
    Par Volfoni dans le forum C++Builder
    Réponses: 5
    Dernier message: 08/06/2006, 12h00
  3. [C#] [WinForms] Evènement sur le tri d'une colonne
    Par beway dans le forum Windows Forms
    Réponses: 2
    Dernier message: 04/03/2005, 16h43
  4. Non réception d'un evènement sur une JTable
    Par Kant dans le forum Composants
    Réponses: 4
    Dernier message: 28/05/2004, 10h38
  5. Evènement sur clic droit !?
    Par soccersoft dans le forum Composants VCL
    Réponses: 6
    Dernier message: 26/12/2002, 21h39

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