Membre connecté ?
J'ai bien compris le sens mais je n'arrive pas du tout a faire ce que je veux et là je viens même d'effacer les membres :( mouarf j'en ai marre...
EN fait j'ai rajouté le champ ip, et time dans ma table membre j'ai déjà un id, login , pass_md5, email, date, ip, time ... je ne sais vraiment pas comment interroger ma bdd....as-tu un exemple de jointure qui récupère l'id connecté ?
Merci par avance.
Je suis un guerrier et un insatisfait permanent, c’est ça l’apanage du champion :)
Pourquoi as tu modifié ta table de membre au lieu de créer une table contenant les utilisateurs en ligne ?
Si tu n'écoutes pas les conseils, cela ne sert à rien d'aller plus loin.
C'est juste stupide de faire des traitements sur une table membre (qui a potentiellement beaucoup plus de ligne que le nombre de personne en ligne) lorsque les membres se connectent, car durant ces modifications (si tu es en MyISAM), ta table sera lockée le temps du traitement, et plus aucun SELECT ne passera sur cette table (du coup, les gens ne pourront plus se loguer).
En même temps, cela ne risque pas d'arriver avec un nombre de visiteur limité (j'entends par la genre moins de 1000 personnes connectées sur le site), mais autant prendre les bonnes habitudes.
Bon ok.
Alors je reprends tout, car c'est me suis perdu là moi...
<?php
// lancement de la requete
$sql = 'SELECT login FROM pymembres ';
// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
// on recupere le resultat sous forme d'un tableau
$data = mysql_fetch_array($req);
// on libère l'espace mémoire alloué pour cette interrogation de la base
mysql_free_result ($req);
mysql_close ();
?>
Le login est :<br />
<?php echo $data['login']; ?>
Cela m'affiche le premier membre de ma base connecté ou pas...
On est d'accord ?
Je suis un guerrier et un insatisfait permanent, c’est ça l’apanage du champion :)
Maintenant j'ai un champ 'lastlog' il y a la dernière connexion et l'ip... 20/06/2009 à 23h25 | 82.***.***.***|
As-tu une idée ou la syntaxe qu'il faut que j'utilise stp ?
Je suis un guerrier et un insatisfait permanent, c’est ça l’apanage du champion :)
Re depuis le temps...
Bon en cherchant un peu sur le net je suis tombé sur une personne qui a eu cette idée...
Son code avant
<?php
$var = '20/06/2009 à 14h33 | 255.255.255.255|';
$var2 = preg_split("/[\/\shà]+/", $var);
$timestamp_derniere_visite = mktime($var2[3], $var2[4], 0, $var2[1], $var2[0], $var2[2]);
// Test basé sur les 5 dernières minutes
echo 'Machin '.(($timestamp_derniere_visite >= time() - 300) ? 'est' : 'n\'est pas').' connecté.<br />';
// Test basé sur les dernières 24 heures
echo 'Machin '.(($timestamp_derniere_visite >= time() - 86400) ? 'est' : 'n\'est pas').' connecté.';
?>
Code après...
<?php
$var = '20/06/2009 à 14h33 | 255.255.255.255|';
$var2 = preg_split("/[\/\shà]+/", $var);
$timestamp_derniere_visite = mktime($var2[3], $var2[4], 0, $var2[1], $var2[0], $var2[2]);
// Test basé sur les 5 dernières minutes
echo "".$data['login']."".(($timestamp_derniere_visite >= time() - 300) ? 'est' : 'n\'est pas')." connecté.<br />";
// Test basé sur les dernières 24 heures
echo "".$data['login']."".(($timestamp_derniere_visite >= time() - 86400) ? 'est' : 'n\'est pas')." connecté.";
?>
Le soucis c'est que cela n'affiche aucun membre connecté (pourtant je le suis...
par contre sur la ligne $var ma base de donnée affiche plus de chose alors je ne sais pas si c'est dû à cela (22/06/2009 à 20h20 | **.***.***.***| **-***-***-***.rev.libertysurf.net)
Merci de me donner un coup de main.
@plus
Je suis un guerrier et un insatisfait permanent, c’est ça l’apanage du champion :)
Après galère...
J'y suis presque mais il y a tous mes membres qui s'affichent...
une idée ?
<?php
$connect = mysql_connect("localhost","root","****");
mysql_select_db("****", $connect);
$rMembresConnectes = mysql_query('SELECT login, lastlog FROM pymembres');
while($Membre = mysql_fetch_assoc($rMembresConnectes));
{
$var = preg_split("/[\/\shà]+/", $Membre['lastlog']);
if(mktime($var2[3], $var2[4], 0, $var2[1], $var2[0], $var2[2]) >= time() - 30);
echo $Membre['login'].' est connecté.<br />';
}
?>
Merci
Je suis un guerrier et un insatisfait permanent, c’est ça l’apanage du champion :)
Bonjour,
là le membre s'affiche mais il este toujours connecté même qd il se deconnecte...il faut surement indérer un delete from... mais là je ne sais ps faire...
<?php
$connect = mysql_connect("localhost","root","****");
mysql_select_db("****", $connect);
$rMembresConnectes = mysql_query('SELECT login FROM pymembres WHERE last >='.(time() - 150));
while($Membre = mysql_fetch_assoc($rMembresConnectes))
{
echo $Membre['login'].' est connecté.<br />';
}
mysql_close($connect);
?>
Je suis un guerrier et un insatisfait permanent, c’est ça l’apanage du champion :)
Message du 19/06/2009 :
Et je te suggère de lire le "
Comment faire pour afficher le nombre de connectés sur un site en PHP".
PS : la solution que tu as trouvé sur le net qui consiste à sélectionner tous tes membres et ensuite à tester leur date de dernière connexion n'est pas du tout optimisée. Quand ton site aura 5 millions de membre, à chaque page chargée, tu vas faire un select qui loadera 5 millions de ligne.
Ok c'est même évident mais bon j'apprends...Maintenant j'ai une question si je reprends le script afficher le nombbre de connectés...donc une table différente que celle de mon espace membre. Si je rajoute un champ ip dans ma table pymembres, serait-il possible de comparer les deux ip (et si c'est une ip identique, j'affiche le pseudo de ma table pymebres ?
Merci
Je suis un guerrier et un insatisfait permanent, c’est ça l’apanage du champion :)
Cela s'appelle une jointure apparemment... je pourrais donc faire
<?php SELECT pymembres.login FROM pymembres,nb_connecte WHERE pymembres.ip=nb_connecte.ip
echo "".$data['login']."";
?>
En gros ça peut tenir la route ?
Je suis un guerrier et un insatisfait permanent, c’est ça l’apanage du champion :)