Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL]Problem z odejmowaniem dat, problem w liczeniu czasu zalogowania
Marr
post
Post #1





Grupa: Zarejestrowani
Postów: 103
Pomógł: 1
Dołączył: 19.08.2008
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Witam,
Mój problem polega na tym: chcę sobie zrobić liczenie łącznego czasu zalogowania użytkownika i na razie jestem na etapie liczenia czasu od logowania do wylogowania. Skrypt wygląda tak:
  1. <?php
  2. $baza=mysql_connect("localhost", "root", "");
  3. mysql_select_db("systen");
  4. mysql_query("SET NAMES utf8");
  5. ?>
  6. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "ht://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  7. <html xmlns="ht://www.w3.org/1999/xhtml">
  8. <meta http-equiv="refresh" content="180; url=index.php?auth_admin=logout">
  9.                            
  10. <?php
  11. if ($_GET['auth_admin']=='logout'){
  12. $active = 0;
  13. $logouttime = date("U");
  14. $zapytanie_t= mysql_query ("SELECT * FROM pracownicy WHERE id='$_SESSION[logged_admin]';");
  15. $login_time = $zapytanie_t['login_t'];
  16. $staryczas = $zapytanie_t['czas'];
  17. $roznica = $logouttime - $login_time ;
  18.  
  19. $logout = "UPDATE pracownicy SET aktywny = '" . $active . "', logout_t = '" . $logouttime . "', czas = '".$roznica."' WHERE id = '" .$_SESSION['logged_admin'] . "'";
  20. mysql_query($logout);
  21. unset($_SESSION['logged_admin']);
  22. }
  23. //
  24. // dalsza czesc skryptu ....
  25. //
  26. else{
  27.                        session_start();
  28.                        $_SESSION['logged_admin']=$id;
  29.                        zalogowany_admin();
  30.                        $active = true;
  31.                        $logintime = date("U");
  32.                        $aktywny = "UPDATE pracownicy SET aktywny = '" . $active . "', login_t = '".$logintime."' WHERE id = '" .$_SESSION['logged_admin'] . "'";
  33.                        mysql_query($aktywny);
  34.                    }
  35.                }
  36.            }
  37.        }else{
  38.        logowanie_admin();
  39.        }
  40.    }
  41. }
  42. function zalogowany_admin(){
  43.    
  44.    }
  45.    
  46.  
  47. ?>

tylko problem polega na tym ze na poczatku skryptu, gdzie liczę różnicę czasu to zmienna $róznica jest równa $logouttime a przecież odejmuje od niej $login_time :/ co jest nie tak? Moze ktoś podpowie jak rozwiązać problem liczenia czasu gdy ktos jest nieaktywny ale się nie wylogował - np. zamknął przeglądarkę, lub odszedł od komputera.

EDIT: ojejku juz widze, przeciez nie zapisalem drugiej daty do tablicy w ogole ;/ ale pozostale pytania nadal jak najbardziej aktualne

Ten post edytował Marr 16.09.2008, 14:32:48
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Marr
post
Post #2





Grupa: Zarejestrowani
Postów: 103
Pomógł: 1
Dołączył: 19.08.2008
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Więc tak, kombinowałem kombinowałem i coś nie liczy mi to poprawnie czasu chyba. Coś nie mogę się połapać gdzie robie błąd. Może ktoś wychwyci:

to wykonuje jak loguje użytkownika:
  1. <?php
  2.                        $_SESSION['logged_admin']=$id;
  3.                        zalogowany_admin();
  4.                        $active = true;
  5.                        $logintime = date(&#092;"U\");
  6.                        $aktywny = &#092;"UPDATE pracownicy SET aktywny = '\" . $active . \"', login_t = '\".$logintime.\"' WHERE id = '\" .$_SESSION['logged_admin'] . \"'\";
  7.                        mysql_query($aktywny);
  8. ?>


to wykonuje w przypadku gdy ktoś kliknie wyloguj:

  1. <?php
  2. $active = 0;
  3. $logouttime = date(&#092;"U\");
  4. $zapytanie_t = mysql_query (&#092;"SELECT * FROM pracownicy WHERE id='$_SESSION[logged_admin]';\");
  5. $rekordzik = mysql_fetch_assoc ($zapytanie_t);
  6. $login_time = $rekordzik['login_t'];
  7. $staryczas = $rekordzik['czas'];
  8. $roznica = $logouttime - $login_time + staryczas ;
  9.  
  10. $logout = &#092;"UPDATE pracownicy SET aktywny = '\" . $active . \"', logout_t = '\" . $logouttime . \"', czas = '\".$roznica.\"' WHERE id = '\" .$_SESSION['logged_admin'] . \"'\";
  11. mysql_query($logout);
  12. unset($_SESSION['logged_admin']);
  13. }
  14. ?>


a to z kolei na początku strony mam wciśnięte:
  1. <?php
  2. if (isset($_SESSION['logged_admin'])){
  3. $loggedid = $_SESSION['logged_admin'];
  4. $pobranieakcji = mysql_query (&#092;"SELECT * FROM pracownicy WHERE id='$_SESSION[logged_admin]';\");
  5. $rekordakcja = mysql_fetch_assoc ($pobranieakcji);
  6. $ostatino = $rekordakcja['ostatnia_akcja'];
  7. $login_t = $rekordakcja['login_t'];
  8. $old = $rekordakcja['czas'];
  9. if ($ostatnio+300 < date(&#092;"U\")){
  10. $obliczony = $ostatnio - $login_t + $old;
  11. $aktualizacja = &#092;"UPDATE pracownicy SET czas = '\".$obliczony.\"' WHERE id = '\" .$_SESSION['logged_admin'] . \"'\";
  12. $logintime = date(&#092;"U\");
  13. }
  14. ZapiszAkcje($loggedid);
  15. ?>


funkcja ZapiszAkcje jest to funkcja, którą napisał @b4x
  1. <?php
  2. function ZapiszAkcje($user) {
  3.  
  4. mysql_query('UPDATE `pracownicy` SET `ostatnia_akcja` = date(\"U\") WHERE `id` = \"'.$user.'\"');
  5.  
  6. }
  7. ?>



Już za długo się chyba z tym męcze i nie potrafie sam wylapac bledu, widzi ktoś coś? Zdarza mi się tak, że czas raz jest mniejszy a raz większy ;/

Bożesz Ty mój! Teraz to czas zalogowania wychodzi mi ujemny a ja nie potrafie znaleźć błędu, proszę o pomoc. To akcje które wykonuje:
podczas logowania
  1. <?php
  2.                        $_SESSION['logged_admin']=$id;
  3.                        zalogowany_admin();
  4.                        $active = true;
  5.                        $logintime = date(&#092;"U\");
  6.                        $aktywny = &#092;"UPDATE pracownicy SET aktywny = '\" . $active . \"', login_t = '\".$logintime.\"' WHERE id = '\" .$_SESSION['logged_admin'] . \"'\";
  7.                        mysql_query($aktywny);
  8. ?>


podczas wylogowania
  1. <?php
  2. if ($_GET['auth_admin']=='logout'){
  3. $active = 0;
  4. $logouttime = date(&#092;"U\");
  5. $zapytanie_t = mysql_query (&#092;"SELECT * FROM pracownicy WHERE id='$_SESSION[logged_admin]';\");
  6. $rekordzik = mysql_fetch_assoc ($zapytanie_t);
  7. $login_time = $rekordzik['login_t'];
  8. $staryczas = $rekordzik['czas'];
  9. $roznica = $logouttime-$login_time + $staryczas;
  10.  
  11. $logout = &#092;"UPDATE pracownicy SET aktywny = '\" . $active . \"', logout_t = '\" . $logouttime . \"', czas = '\".$roznica.\"' WHERE id = '\" .$_SESSION['logged_admin'] . \"'\";
  12. mysql_query($logout);
  13. unset($_SESSION['logged_admin']);
  14. }
  15. ?>


a to na początku index'a
  1. <?php
  2. if (isset($_SESSION['logged_admin'])){
  3. $loggedid = $_SESSION['logged_admin'];
  4. $pobranieakcji = mysql_query (&#092;"SELECT * FROM pracownicy WHERE id='$_SESSION[logged_admin]';\");
  5. $rekordakcja = mysql_fetch_assoc ($pobranieakcji);
  6. $ostatino = $rekordakcja['ostatnia_akcja'];
  7. $login_tajm = $rekordakcja['login_t'];
  8. $old = $rekordakcja['czas'];
  9.  
  10. if (($ostatnio+300) < date(&#092;"U\")){
  11. $obliczony = $ostatnio - $login_tajm + $old;
  12. $logintime = date(&#092;"U\");
  13. $aktualizacja = &#092;"UPDATE pracownicy SET czas = '\".$obliczony.\"', login_t = '\" . $logintime . \"' WHERE id = '\" .$_SESSION['logged_admin'] . \"'\";
  14. $wykonanie = mysql_query($aktualizacja);
  15. }
  16.  
  17. $dataakcji = date(&#092;"U\");
  18. $zapiszakcjeq = mysql_query('UPDATE `pracownicy` SET `ostatnia_akcja` = \"'.$dataakcji.'\" WHERE `id` = \"'.$loggedid.'\"');
  19.  
  20. include('modules/descriptions.php');
  21. }
  22. ?>


O rany naprawde nie widzę tu błędu, zaczyna mieszać mi się to wszystko...

Ten post edytował Marr 19.09.2008, 14:48:43
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 7.10.2025 - 13:40