Bonjour !
J'ai un script qui met à jour automatiquement le statut du membre en ligne suivant un certain temps d'inactivité. Ma fonction testerActivite() fonctionne très bien, cependant je n'arrive pas à mettre à jour le statut en BDD via Ajax :/
Pouvez-vous m'aidez svp ?
Voici mon code :
header.php :
measure_activity.js :
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 <script type="text/javascript" src="<?php echo ROOTPATH; ?>/js/measure_activity.js"></script> </head> <body onload="refreshChat();" onkeydown="activite_detectee = true;" onmousemove="activite_detectee = true;"> <div id="page"> <div id="statut"> <?php if(isset($_SESSION['id'])) { if(isset($_GET['statut'])) { $statut = $_GET['statut']; $query = $bdd->prepare('INSERT INTO online(online_status) VALUES(?) WHERE online_members = ?'); $query->execute(array($statut, $_SESSION['id'])); } } ?> </div>
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78 // On déclare et initialise la variable var activite_detectee = false; var intervalle = 100; var temps_inactivite = 0; var inactivite_persistante = true; function getXMLHttpRequest() { var xhr = null; if (window.XMLHttpRequest || window.ActiveXObject) { if (window.ActiveXObject) { try { xhr = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } } else { xhr = new XMLHttpRequest(); } } else { alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest..."); return null; } return xhr; } function MAJStatut(statut) { var xhr = getXMLHttpRequest(); xhr.onreadystatechange = function() { if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) { document.getElementById('statut').innerHTML = xhr.responseText; // Données textuelles récupérées } }; xhr.open("GET", "header.php?statut="+statut, true); xhr.send(null); } // On crée la fonction qui teste toutes les x secondes l'activité du visiteur via activite_detectee function testerActivite() { // On teste la variable activite_detectee // Si une activité a été détectée [On réinitialise activite_detectee] if(activite_detectee) { activite_detectee = false; temps_inactivite = 0; inactivite_persistante = false; var statut = "actif"; MAJStatut(statut); } // Si aucune activité n'a été détectée else { // Si l'inactivite est persistante [on met à jour temps_inactivite] if(inactivite_persistante) { temps_inactivite += intervalle; } // Si le temps d'inactivite dépasse les 30 secondes if(temps_inactivite >= 30000) { statut = "inactif"; MAJStatut(statut); } // Si l'inactivite est nouvelle [on met à jour inactivite_persistante] else { inactivite_persistante = true; } } // On relance la fonction ce qui crée une boucle setTimeout('testerActivite();', intervalle); }
Partager