napisałem kod, który ma sprawdzać aktywność użytkowników, mam jednak problem z konwersją czasu.
<?php require_once ('funkcje/polacz_baza.php'); polacz_baza('users'); // pobieranie zmiennych z sesji require_once ('funkcje/tworz_zmienne.php'); //Uptade aktywności usera mysql_query('UPDATE dane_postaci SET aktywnosc="'.$data.'" WHERE id_log='.$id.'') or die ('Nie można zaaktualziować czasu ostatniej aktywności!'); //pobranie userow znajdujacych sie w tym samym miejscu $query = 'SELECT aktywnosc, id_log FROM dane_postaci WHERE miejsce="'.$miejsce.'"'; //Jeśli nikogo nie ma... if ($licz_wiersze != 0) { //pętla zwracajaca nazwy userów for ($i=0; $i<$licz_wiersze; $i++) { //TU GDZIES JEST PROBLEM $roznica = $aktualny - $aktywnosc; $sekundy = $roznica%60; $minuty_1 = $roznica - $sekundy; $minuty = $minuty_1/60; //sprawdzanie czasu aktywnosci if ($minuty<30) { $query2 = 'SELECT login FROM logowanie WHERE id='.$wiersz['id_log']; } } } else { break; } ?>
Jak widać skrypt aktualizuje czas aktywności do aktualnej daty, po czym sprawdza każdemu userowi czas aktywności i jeśli jest krótszy niż 30 minut, wyświetla go.
problem w tym, że timestamp daty zaktualizowanej na czas aktualny (pobieranej z mysql'a) jest rożny od timestampa aktualnej daty(generowanej przez php), mimo że data pobrana z MySql wyświetlona w zwykłym formacie jest taka sama jak ta aktualna.
Najlepiej chyba pokazuje to tekst który zwraca skrypt:
Cytat
aktywnosc z db2007-11-21 19:11:22
czas aktualny2007-11-21 19:11:22
aktywnosc 1195668682
aktualny1195668982
roznica 300
sek 0
min 5
czas aktualny2007-11-21 19:11:22
aktywnosc 1195668682
aktualny1195668982
roznica 300
sek 0
min 5