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

JavaScript Discussion :

Enregistrement de données en BDD avec AJAX et l'API Page Visibility


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2017
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2017
    Messages : 60
    Points : 21
    Points
    21
    Par défaut Enregistrement de données en BDD avec AJAX et l'API Page Visibility
    Bonjour,
    J'ai un gros problème avec mon code car il est censé vérifier la présence de l'utilisateur sur une page et par la même occasion d'envoyé à une page PHP une donnée pour que PHP l'inscrive dans la base de données. Donc si l'utilisateur consulte la page l'API Page Visibility envoie un signal qui déclenche l'envoi d'une information ici 1 via AJAX vers la page PHP et idem quand l'utilisateur ne consulte pas la page sauf qu'au lieu d'envoyé 1 ont envoi 0. Mais dans mon cas cela ne fonctionne pas avec AJAX car sans AJAX je faisais une redirection en js vers ma page PHP qui redirigeait vers la page précédente de l'utilisateur sauf qu'en redirigent l'API pensait que l'utilisateur consultait la page ce qui n'était donc pas fiable donc en ajax j'essai de faire le même boulot sans redirection. Car mon site affiche que l'utilisateur est connecté si 1 est dans la BDD et si 0 est dans la BDD alors il affiche qu'il est déconnecté.

    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
    46
    47
    <script>
     
        (function() {
            'use strict';
     
            // Set the name of the "hidden" property and the change event for visibility
            var hidden, visibilityChange; 
            if (typeof document.hidden !== "undefined") {
              hidden = "hidden";
              visibilityChange = "visibilitychange";
            } else if (typeof document.mozHidden !== "undefined") { // Firefox up to v17
              hidden = "mozHidden";
              visibilityChange = "mozvisibilitychange";
            } else if (typeof document.webkitHidden !== "undefined") { // Chrome up to v32, Android up to v4.4, Blackberry up to v10
              hidden = "webkitHidden";
              visibilityChange = "webkitvisibilitychange";
            }
     
            // If the page is hidden, ;
            // if the page is shown, 
            function handleVisibilityChange() {
              if (document[hidden]) {
                var state0 = 0;
                var state1 = 1;
                $.ajax({ // A PARTIR DE LA CA BUG!
           url : 'user_connect.php', // La ressource ciblée
           type : 'GET', // Le type de la requête HTTP.
           data : 'state=' + state0;
        });
              } else {
                $.ajax({
           url : 'user_connect.php', // La ressource ciblée
           type : 'GET', // Le type de la requête HTTP. 
           data : 'state=' + state1;
        });
              }
            }
     
            // Warn if the browser doesn't support addEventListener or the Page Visibility API
            if (typeof document.addEventListener === "undefined" || typeof document[hidden] === "undefined") {
              alert("This website requires a modern browser that supports the Page Visibility API.");
            } else {
              // Handle page visibility change   
              document.addEventListener(visibilityChange, handleVisibilityChange, false);
            }
     
        })();</script>
    Merci d'avance pour votre aide

  2. #2
    Membre averti Avatar de Kennel sébastien
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Septembre 2008
    Messages : 226
    Points : 329
    Points
    329
    Par défaut
    Bonjour ArzelPRO,

    Peut-être ainsi :

    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
    function handleVisibilityChange() {
        var state0 = 0;
        var state1 = 1;
     
        if (document[hidden]) {
            $.ajax({ // A PARTIR DE LA CA BUG!
               url : 'user_connect.php', // La ressource ciblée
               type: 'GET', // Le type de la requête HTTP.
               data: 'state=' + state0;
            });
        } else {
            $.ajax({
                url : 'user_connect.php', // La ressource ciblée
                type: 'GET', // Le type de la requête HTTP. 
                data: 'state=' + state1;
            });
        }
    }

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2017
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2017
    Messages : 60
    Points : 21
    Points
    21
    Par défaut
    Sa ne fonctionne pas

  4. #4
    Membre averti Avatar de Kennel sébastien
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Septembre 2008
    Messages : 226
    Points : 329
    Points
    329
    Par défaut
    Hum, il faut peut-être chercher de quel coter ça ne passe pas. Test des « alert » pour voir que le code Javascript passe bien partout en premier temps.

    Sinon les deux variables ne sont pas nécessaire en fait…

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2017
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2017
    Messages : 60
    Points : 21
    Points
    21
    Par défaut
    Je viens de tester ça et ça ne marche malheureusement 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
    19
    20
    function handleVisibilityChange() {
        var state0 = 0;
        var state1 = 1;
     
        if (document[hidden]) {
            $.ajax({ // A PARTIR DE LA CA BUG!
               url : 'user_connect.php', // La ressource ciblée
               type: 'GET', // Le type de la requête HTTP.
               data: 'state=' + state0;
            });
            alert("Non connecté!!");
        } else {
            $.ajax({
                url : 'user_connect.php', // La ressource ciblée
                type: 'GET', // Le type de la requête HTTP. 
                data: 'state=' + state1;
            });
            alert("Connecté!");
        }
    })
    Et faire sans les variables je ne vois pas comment ?

  6. #6
    Membre averti Avatar de Kennel sébastien
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Septembre 2008
    Messages : 226
    Points : 329
    Points
    329
    Par défaut
    Donc ton événement est surement pas déclenché…

    Ça donne quoi ceci ? :
    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
    function handleVisibilityChange() {
        alert('Événement déclenché !');
     
        if (document[hidden]) {
            $.ajax({ // A PARTIR DE LA CA BUG!
               url : 'user_connect.php', // La ressource ciblée
               type: 'GET', // Le type de la requête HTTP.
               data: 'state=0';
            });
        } else {
            $.ajax({
                url : 'user_connect.php', // La ressource ciblée
                type: 'GET', // Le type de la requête HTTP. 
                data: 'state=1';
            });
        }
    })

  7. #7
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2017
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2017
    Messages : 60
    Points : 21
    Points
    21
    Par défaut
    Rien ne se passe et le statut est toujours connecté!

  8. #8
    Membre averti Avatar de Kennel sébastien
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Septembre 2008
    Messages : 226
    Points : 329
    Points
    329
    Par défaut
    Il y a une autre erreur…

    Ceci devrai passer :
    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
    function handleVisibilityChange() { 
        if (document[hidden]) {
            $.ajax({ // A PARTIR DE LA CA BUG!
               url : 'user_connect.php', // La ressource ciblée
               type: 'GET', // Le type de la requête HTTP.
               data: 'state=0'
            });
        } else {
            $.ajax({
                url : 'user_connect.php', // La ressource ciblée
                type: 'GET', // Le type de la requête HTTP. 
                data: 'state=1'
            });
        }
    })

  9. #9
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2017
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2017
    Messages : 60
    Points : 21
    Points
    21
    Par défaut
    Toujours pas

  10. #10
    Membre averti Avatar de Kennel sébastien
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Septembre 2008
    Messages : 226
    Points : 329
    Points
    329
    Par défaut
    Reviens en arrière… Test de nouveau :

    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
    function handleVisibilityChange() {
        alert('Événement déclenché !');
     
        if (document[hidden]) {
            $.ajax({ // A PARTIR DE LA CA BUG!
               url : 'user_connect.php', // La ressource ciblée
               type: 'GET', // Le type de la requête HTTP.
               data: 'state=0'
            });
        } else {
            $.ajax({
                url : 'user_connect.php', // La ressource ciblée
                type: 'GET', // Le type de la requête HTTP. 
                data: 'state=1'
            });
        }
    })
    L'alerte se déclenche ?

    Tu as bien importer ta bibliothèque ? La variable « $ » est bien défini ?

  11. #11
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2017
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2017
    Messages : 60
    Points : 21
    Points
    21
    Par défaut
    L'alerte ne se déclenche pas, ma bibliothèque est bien importée et la variable $ n'est pas défini car je ne sais pas comment la définir je pensais que c'était comme dans le code fournis tout simplement.

  12. #12
    Membre averti Avatar de Kennel sébastien
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Septembre 2008
    Messages : 226
    Points : 329
    Points
    329
    Par défaut
    Si « $ » renvoi « undefined » normal que ça ne marche pas.

    Lit la doc de ta bibliothèque.

  13. #13
    Membre averti Avatar de Kennel sébastien
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Septembre 2008
    Messages : 226
    Points : 329
    Points
    329
    Par défaut
    T'as bibliothèque « jQuery » est importée dans ta page ?

  14. #14
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2017
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2017
    Messages : 60
    Points : 21
    Points
    21
    Par défaut
    Comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js"></script>

  15. #15
    Membre averti Avatar de Kennel sébastien
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Septembre 2008
    Messages : 226
    Points : 329
    Points
    329
    Par défaut
    J'ai testé pour voir et les alertes passent.

    Donc ton problème est surement lié au niveau du serveur

    Quand tu compares la valeur de ta BDD et celle en paramètre de la page c'est bien les mêmes types ?

    Tu les as converti en entier avec « (int) » ?

  16. #16
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2017
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2017
    Messages : 60
    Points : 21
    Points
    21
    Par défaut
    En php je fait une requête $_GET['']; et je ne vois pas ce que tu veut dire par convertir en entier avec int que dois-je convertir ?

  17. #17
    Membre averti Avatar de Kennel sébastien
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Septembre 2008
    Messages : 226
    Points : 329
    Points
    329
    Par défaut
    Ton paramètre est une chaine de caractère, pas forcément la valeur de ton champ de table…

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $state = (int) $_GET['state'];

  18. #18
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2017
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2017
    Messages : 60
    Points : 21
    Points
    21
    Par défaut
    Donc je dois convertir en int ce que je GET avec php cela est du à AJAX ?

  19. #19
    Membre averti Avatar de Kennel sébastien
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Septembre 2008
    Messages : 226
    Points : 329
    Points
    329
    Par défaut
    Ajax, ce n'est qu'une requête d'arrière plan…

    Mais je pense que ton problème vient du coter serveur

    Si tu récupères la réponse d'Ajax du serveur, c'est quoi le message retourné ?

  20. #20
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2017
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2017
    Messages : 60
    Points : 21
    Points
    21
    Par défaut
    Rien

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Récupération des données de BDD avec ajax
    Par malkimohamed dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 12/08/2015, 13h48
  2. script de verification d'une bdd avec ajax
    Par Invité dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 02/12/2008, 22h39
  3. [AJAX] Vérifier des données dans une BDD avec AJAX
    Par mwech dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 22/10/2008, 15h13
  4. Réponses: 2
    Dernier message: 09/01/2008, 08h50
  5. Réponses: 4
    Dernier message: 10/09/2007, 12h05

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