Page 1 sur 1
Posté : 21 sept. 2007, 19:40
par zeus
salut en fait je n'ai pas compris ce que tu demandes parce que c'est tout écrit en une seule ligne sans ponctuation et sans saut de ligne du coup je ne comprend pas d'où tu pars et ou tu veux aller et je ne pourrais donc pas t'aiguiller merci de donner plus de détail en partant du fait qu'on ne connait pas ton système actuel.
PS : j'espère que tu comprendras que ce n'est pas un "foutage de gueule", mais juste un moyen de te montrer comme ton écriture peut être illisible"
Posté : 21 sept. 2007, 19:51
par zeus
Ok, mais si je peut me permettre, nous n'avons pas non plus forcément des heures à te consacrer.
Donc, la prochaine fois que tu as 10mn à perdre, donne nous une description plus détaillée de ce que tu as déjà, de ce que tu veux faire, de ce que tu as essayé et de ce qui ne fonctionne pas

Posté : 29 sept. 2007, 13:14
par Sékiltoyai
Tu dois stocker le temps à la connexion du membre et un autre temps à chaque actualisation.
Prenons N le temps maximal de la session, Tc le timestamp de la connexion, Ta le timestamp de la dernière actualisation, et T le timestamp actuel.
A chaque demande de page, tu récupères Tc et Ta dans ta table :
Si T - Ta > N, le membre est déconnecté, et tu fais toutes les opérations en conséquence (par exemple pour le reconnecter, tu stockes dans ta table Ta = T et Tc = T ), sinon le membre est connecté depuis le temps T - Tc , et tu stockes dans ta table Ta = T.
A chaque demande de la liste des membres, tu récupères les membres qui satisfont cette relation T - Ta <= N , et le temps de connexion est là aussi égal à T - Tc.
Voilà, il n'y a plus qu'à créer les timestamp, sachant qu'un timestamp est exprimé en secondes, pour avoir le timestamp courant en php, c'est la fonction time(), et pour mysql, c'est CURRENT_TIMESTAMP(). Si je ne me trompe, tu as tout ce qu'il te faut pour implémenter ce que tu veux faire.
Posté : 29 sept. 2007, 13:18
par @rthur
Bonjour,
Voila la méthode à suivre:
1) ajouter un champ "derniere_activite" type TIMESTAMP dans ta table "membres"
2) Ajouter au début de toute les pages de ton espace membre, le morceau de script suivant (à adapter bien sûr):
mysql_query("UPDATE membres SET derniere_activite=NOW() WHERE pseudo='".$pseudo_membre_connecte."'") or die("Erreur MySQL : ".mysql_error());
3) Enfin, pour obtenir la liste des membres connectés, il faut faire le postulat qu'un membre qui n'a pas eu d'activité depuis X minutes n'est plus connecté.
Prenons, par exemple, X=10 :
mysql_query("SELECT * FROM membres WHERE derniere_activite>DATE_SUB(NOW(), INTERVAL 10 MINUTE)") or die("Erreur MySQL : ".mysql_error());
Posté : 29 sept. 2007, 14:34
par Aureusms
Ok, mais si je peut me permettre, nous n'avons pas non plus forcément des heures à te consacrer.
Donc, la prochaine fois que tu as 10mn à perdre, donne nous une description plus détaillée de ce que tu as déjà, de ce que tu veux faire, de ce que tu as essayé et de ce qui ne fonctionne pas

Et hop un big Mac...
Posté : 29 sept. 2007, 14:38
par Aureusms
Si tu dois afficher le liste des membres en "live". AJAX peut t'aider. Car si tu fais seulement ton code, tu donneras la liste des membres connectés lors de la connexion de l'utilisateur. Avec un Timers Javascript (toute les minutes par exemple) et AJAX (en mode texte cela suffira), tu pourras interroger ta base de données pour voir qui est connecté et l'afficher , donc, toutes les minutes...
Posté : 30 sept. 2007, 13:10
par iclo
Il y a un petit problème avec ta méthode Arthur :
ça m'affiche juste le nombres des membres connectés !!
Mais encore ? le select proposé par @rthur te renvoit la liste des membres.
Montres nous ce que tu en fais dans ton code...
Posté : 08 oct. 2007, 21:00
par @rthur
J'ai pas tout compris désolé ^^
Montre nous ton code.
Le code que je t'ai donné renvoi la liste des membres, il te suffit d'un mysql_fetch_array() dans une boucle while() pour les afficher.