liste des connectés

Eléphant du PHP | 299 Messages

30 mai 2010, 03:12

Bonjour, j' ai un leger souci pour afficher le nom de mes connectés.

Dans mon header, un update pour les logués.
$temps = 5;
$time = time();
$time2 -= $temps * 60;



$update2="UPDATE users SET derniere=".$time." WHERE pseudo='".$_SESSION['name']."'";
        
$upadte = mysql_query($update2);
Ensuite, j' aimerai afficher les membres presents depuis moins de 5mn:
			<?php
			$connectes2 = mysql_query("SELECT pseudo FROM users WHERE derniere < '$time2' ORDER BY pseudo ASC")or die(mysql_error());
			while ($connectes = mysql_fetch_array($connectes2))
			{
			echo $connectes['pseudo'];
			echo '<br />';
			}
			?>
derniere est la colonne de la bdd qui recupere le timestamp a chaque refresh.

Si qulequ' un pouvait me dire pouquoi je n' ai meme pas un message d' erreur, ca serait cool!

Eléphant du PHP | 428 Messages

30 mai 2010, 14:22

Salut,

Personnellement j'utiliserai un timestamp avec mktime pour calculer le temps.
Cela devrait t'aider à comprendre et résoudre ton problème.

calculer une différence entre deux dates
// le 5 mai 2010 à 12H14mn 30secondes
$date1 = mktime(12,14,30,5,5,2010);
// le 5 mai 2010 à 18H21mn 0seconde
$date2 = mktime(18,5,0,5,21,2010);
 
$diff_date = $date2-$date1;
$diff['heures'] = (int)($diff_date/(60*60));
$diff['jours'] = (int)($diff_date/(60*60*24));
print_r ($diff);
 
/*
 * retourne $diff = 
 * Array
 * (
 *   [heures] => 390
 *   [jours] => 16
 * )
 */
Ne reste plus qu'à l'utiliser dans ton contexte ;)

Eléphant du PHP | 299 Messages

30 mai 2010, 17:32

Effectivement, ta methode est geniale, ca marche pas trop mal, mais c' est parce que je suis en train de l' adapter! Merci encore!!!

Question bete, un nouveau souci survient.

J' utilise donc un timestamp et j' aimerai afficher la derniere connexion du membre, pas de souci, ca fonctionne.

Le hic, c' est que j' aimerai qu' au lieu d' afficher la date du jour si c' est le jour d' aujou'.....attend, je vais expliquer plus simple.

Aujourd hui le membre est connecté, ca affiche la date du jour et l' heure, j' aimerai que ca affiche "aujourd hui à 00h00".

C' est le "aujourd hui" a la place de la date du jour :/

Du coup, question similaire, surement la meme methode que pour ma premiere question, si le membre est connecté depuis moins de 5 minutes, comment faire le calcul?

Merci d' avance car j' ai deja appris une methode grace a toi :)

ViPHP
ViPHP | 5462 Messages

30 mai 2010, 19:17

Salut,

Personnellement j'utiliserai un timestamp avec mktime pour calculer le temps.
Cela devrait t'aider à comprendre et résoudre ton problème.

calculer une différence entre deux dates
// le 5 mai 2010 à 12H14mn 30secondes
$date1 = mktime(12,14,30,5,5,2010);
// le 5 mai 2010 à 18H21mn 0seconde
$date2 = mktime(18,5,0,5,21,2010);
 
$diff_date = $date2-$date1;
$diff['heures'] = (int)($diff_date/(60*60));
$diff['jours'] = (int)($diff_date/(60*60*24));
print_r ($diff);
 
/*
 * retourne $diff = 
 * Array
 * (
 *   [heures] => 390
 *   [jours] => 16
 * )
 */
Ne reste plus qu'à l'utiliser dans ton contexte ;)

ou date_diff :wink: (mais php 5.3)

Eléphant du PHP | 299 Messages

30 mai 2010, 19:41

Non je n' y arrive pas sachant que j' enregistre le temsp en secondes sur mon timestamp :/

ViPHP
ViPHP | 5462 Messages

30 mai 2010, 19:45

Non je n' y arrive pas sachant que j' enregistre le temsp en secondes sur mon timestamp :/
si c'est en timestamp ta pas besion de faire la fonction mktime :wink: