Liste des membres connectés sur un espace membres

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

21 sept. 2007, 19:40

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"
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

21 sept. 2007, 19:51

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 ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

ViPHP
ViPHP | 5924 Messages

29 sept. 2007, 13:14

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.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9783 Messages

29 sept. 2007, 13:18

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());
Quand tout le reste a échoué, lisez le mode d'emploi...

ViPHP
ViPHP | 1996 Messages

29 sept. 2007, 14:34

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...
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

ViPHP
ViPHP | 1996 Messages

29 sept. 2007, 14:38

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...
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

ViPHP
ViPHP | 2144 Messages

30 sept. 2007, 13:10

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...

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9783 Messages

08 oct. 2007, 21:00

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.
Quand tout le reste a échoué, lisez le mode d'emploi...