ForumCała strona

Nawigacja

Aktualnie online

Gości online: 6

Użytkowników online: 0

Łącznie użytkowników: 25,400
Najnowszy użytkownik: AlojzyBartek

Logowanie

Nazwa użytkownika

Hasło



Zarejestruj się

Odzyskaj hasło

Shoutbox

Musisz zalogować się, aby móc dodać wiadomość.

Zbigniew@
17.11.2024 11:33:24
Nie ten grzeszy kto pije, ale ten, kto się nie upije.

JazOOn
16.11.2024 20:46:18
tja

Zbigniew@
15.11.2024 18:58:17
Kto pije, ten nie bije.

JazOOn
31.10.2024 20:49:47
Kto pije?

piterus
30.10.2024 19:45:48
I będziemy śpiewać: "Kiedy 20 blisko, przebadaj wszystko, przebadaj wszystko..." Pfft

Pobierz nową wersję
Pobierz podręcznik
Zobacz inne oficjalne Supporty
Statystyki supportu
PHP-Fuson PL na Facebooku

RSS

Polecamy hosting SferaHost.pl

Zobacz temat

 Drukuj temat
Statystyki zalogowań użytkowników
dante77
Zlecę wykonanie statystyki zalogowań użytkowników. Nadmieniam, że nie chodzi mi o unikalne wizyty.

Statystyka powinna pokazywać:
- ilość zalogowanych użytkowników dziennie z podziałem na poszczególne dni miesiąca.
- statystyki miesięczne
- statystyki roczne

Dodatkowo udostępniam kod, który pokazuje ilość zalogowań dziennie:

Pobierz kod źródłowy  GeSHi: PHP
  1. openside("Licznik zalogowań");
  2. $rok = date('Y');
  3. $miech = date('n');
  4. $dzien = date('j');
  5. $time = gmmktime(0, 0, 0, $miech, $dzien, $rok);
  6. $dzis = dbquery("SELECT count(user_id) FROM ".$db_prefix."users WHERE user_lastvisit >'$time'");
  7.  
  8.  
  9.  
  10. echo "<table border='0' width='100%' class='small'>
  11. <tr><td class='small'>Dziś zalogowało się</td><td align='right' class='small'><font color='white'><b>".number_format(dbresult($dzis, 0))."</b></font> userów</td></tr>
  12.  
  13. </table>";
  14. closeside();
Zinterpretowano w sekund: 0.024, wykorzystano GeSHi 1.0.8.10


Zainteresowanych proszę o kontakt na PW


PW od moderatora:
  1. Zmiana nazwy tematu - Pieka 01.10 - 11:40

Edytowane przez Pieka dnia 22.10.2008 09:55:12
 
http://stronyrobie.pl
Wścibski Gość
Dodany dnia 22.11.2024 15:37:10
Pan Kontekstualny

Postów: n^x
Data rejestracji: Zawsze

Polecamy hosting SferaHost.pl
IP: localhost  
kefirek
Moja koncepcja jest taka zrobić w bazie danych tabele
Z polami rok, miesiąc, tydzień, przedwczoraj, wczoraj
Kod do wklejenia w dodatkowe strony jest taki
Pobierz kod źródłowy  GeSHi: PHP
  1. <?php
  2. $result = dbquery("DROP TABLE IF EXISTS ".$db_prefix."logowania");
  3. $result = dbquery("CREATE TABLE ".$db_prefix."logowania (
  4. `log_id` smallint(5) unsigned NOT NULL auto_increment,
  5. `rok` int(10) unsigned NOT NULL default '0',
  6. `miesioc` int(10) unsigned NOT NULL default '0',
  7. `tydzien` int(10) unsigned NOT NULL default '0',
  8. `przedwczoraj` int(10) unsigned NOT NULL default '0',
  9. `wczoraj` int(10) unsigned NOT NULL default '0',
  10. `user_id` smallint(5) unsigned NOT NULL default '0',
  11. PRIMARY KEY (`log_id`)
  12. ) TYPE=MyISAM;");
  13.  
  14.  
  15. if ($result) {
  16. echo "Baza danych została utworzona poprawnie.<br>";
  17. } else {
  18. echo "Błąd baza danych nie została utworzona.<br>";
  19. }
  20. ?>
Zinterpretowano w sekund: 0.020, wykorzystano GeSHi 1.0.8.10

Potem chciałem ustawić cookie ważne do północy i jeśli if (!isset($_COOKIE["data"]) istnieje to nie dodawać danych do tabeli do kolumny wczoraj. Potem sprawdzało by się czy data w polu przedwczoraj jest mniejsza o 2 dni od daty dzisiejsze jeśli tak zostawiany tak jak jest jeśli nie pole aktualizujemy tak samo z innym polami robimy.
Szczerze mówiąc ciężkie do zrobienia na chwile obecną próbowałem zrobić cos takiego ale jeszcze myślę nad zrobieniem tego

Pobierz kod źródłowy  GeSHi: PHP
  1. if (iMEMBER) {
  2.  
  3. if (!isset($_COOKIE&#91;"data"&#93;)) {
  4.  
  5. $czas = mktime(23,59,59,date("m"),date("d"),date("Y"));
  6. setcookie("data", "czas", $czas);
  7.  
  8. }
  9. else
  10. {
  11.  
  12. $wynik = dbquery("SELECT * FROM ".$db_prefix."logowania WHERE user_id='".$userdata&#91;'user_id'&#93;."'");
  13.  
  14. if(dbrows($wynik) == 0) {
  15.  
  16. $result = dbquery("INSERT INTO ".$db_prefix."logowania (rok, miesioc, tydzien, przedwczoraj, wczoraj, user_id) VALUES ('".time()."', '".time()."', '".time()."', '".time()."', '".time()."', '".$userdata&#91;'user_id'&#93;."')");
  17. }
  18.  
  19. }
  20. }
  21. openside("Licznik zalogowań");
  22. $rok = date('Y');
  23. $miech = date('n');
  24. $dzien = date('j');
  25. $time = gmmktime(0, 0, 0, $miech, $dzien, $rok);
  26. $przedw = $time - 60*60*24;
  27.  
  28. $wynik1 = dbquery("SELECT * FROM ".$db_prefix."logowania WHERE user_id='".$userdata&#91;'user_id'&#93;."'");
  29. $data = dbarray($wynik1);
  30. $w1 = $data&#91;'wczoraj'&#93;;
  31.  
  32. $dzis = dbquery("SELECT count(user_id) FROM ".$db_prefix."users WHERE user_lastvisit >'$time'");
  33. $wczoraj = dbquery("SELECT count(log_id) FROM ".$db_prefix."logowania WHERE wczoraj <'$time' AND wczoraj >'$przedw'");
  34. $przedwczoraj = dbquery("SELECT count(log_id) FROM ".$db_prefix."logowania WHERE wczoraj <'$przedw'");
  35. echo "<table border='0' width='100%' class='small'>
  36. <tr>
  37. <td class='small'>Dziś zalogowało się</td>
  38. <td align='right' class='small'><font color='white'><b>".number_format(dbresult($dzis, 0))."</b></font> userów</td>
  39. </tr>
  40. <tr>
  41. <td class='small'>Wczoraj zalogowało się</td>
  42. <td align='right' class='small'><font color='white'><b>".number_format(dbresult($wczoraj, 0))."</b></font> userów</td>
  43. </tr>
  44. <tr>
  45. <td class='small'>Przedwczoraj zalogowało się</td>
  46. <td align='right' class='small'><font color='white'><b>".number_format(dbresult($przedwczoraj, 0))."</b></font> userów</td>
  47. </tr>
  48. </table>";
  49.  
  50. closeside();
Zinterpretowano w sekund: 0.027, wykorzystano GeSHi 1.0.8.10
 
dante77
Wczoraj i przedwczoraj jest mi nie potrzebne. Jeżeli będzie to ok, ale najważniejsze dla mnie to staty dzienne, miesięczne i roczne.
Edytowane przez dante77 dnia 01.10.2008 12:43:16
 
http://stronyrobie.pl
kefirek
Chciałem to zrobić tak
W bazie danych pola
Rok Miesiąc

Użytkownik który jest zalogowany dodaje się aktualna data to tych dwóch pól ( ale tylko wtedy kiedy data tego użytkownika nie istnieje ) I potem sprawdzało by się daty i je odpowiedni aktualizowało. Jak wiadomo data dzisiejsza liczy się od razu do statystyk z tego miesiąca i roku. Gdyby użytkownik nie logował się w tym miesiącu to data była by brana tylko do statystyk rocznych. Czyli trzeba odpowiednio zrobić warunki if by aktualizowały pola
 
dante77
Załączyłem schemat jak chciałbym żeby to wyglądało.
Podobnie jest zrobione w modyfikacji Archiwum Newsów.
dante77 dodał/a następującą grafikę:
schemat.jpg

Edytowane przez dante77 dnia 01.10.2008 13:24:16
 
http://stronyrobie.pl
kefirek
Wklej sobie w panel powinno działać
Zrobiłem na polu user_lastvisit bo jeśli ktoś się dziś zalogował to będzie policzony do aktualnego miesiąca dnia oraz roku ale jeśli ktoś się nie logował w dziś ale wczoraj to będzie policzony dla aktualnego miesiąca wiec wydaje mi się że działa dobrze

Pobierz kod źródłowy  GeSHi: PHP
  1. openside("Licznik zalogowań");
  2.  
  3. $rok = date('Y');
  4. $miech = date('n');
  5. $dzien = date('j');
  6. $time = gmmktime(0, 0, 0, $miech, $dzien, $rok);
  7. $miech1 = gmmktime(0, 0, 0, $miech, 1, $rok);
  8. $rok1 = gmmktime(0, 0, 0, 1, 1, $rok);
  9. $dzis = dbquery("SELECT count(user_id) FROM ".$db_prefix."users WHERE user_lastvisit >'$time'");
  10. $miech = dbquery("SELECT count(user_id) FROM ".$db_prefix."users WHERE user_lastvisit >'$miech1'");
  11. $roku = dbquery("SELECT count(user_id) FROM ".$db_prefix."users WHERE user_lastvisit >'$rok1'");
  12. $dwamiechy = dbquery("SELECT count(user_id) FROM ".$db_prefix."users WHERE user_lastvisit >'$dwa'");
  13. $trzymiechy = dbquery("SELECT count(user_id) FROM ".$db_prefix."users WHERE user_lastvisit >'$trzy'");
  14.  
  15. $miesiac = date("m")-1;
  16. if ($miesiac<1) {
  17. $miesiac = 12;
  18. $rok -= 1;
  19. }
  20.  
  21. $miesiac1 = date("m")-2;
  22. if ($miesiac1<2) {
  23. $miesiac1 = 12;
  24. $rok -= 1;
  25. }
  26.  
  27. $miesioce2 = date("t", mktime(0, 0, 0, $miesiac, 1, $rok));
  28. $miesioce3 = date("t", mktime(0, 0, 0, $miesiac1, 1, $rok));
  29.  
  30. $dni = $miesioce2*60*60*24;
  31. $dni2 = $miesioce3*60*60*24;
  32.  
  33. $dwa = $miech1 + $dni;
  34.  
  35. $trzy = $miech1 + $dni + $dni2;
  36.  
  37. echo "<table border='0' width='100%' class='small'>
  38. <tr>
  39. <td class='small'>Dziś</td>
  40. <td align='right' class='small'>".number_format(dbresult($dzis, 0))."</td>
  41. </tr>
  42.  
  43. <tr>
  44. <td class='small'>W tym misiącu:</td>
  45. <td align='right' class='small'>".number_format(dbresult($miech, 0))."</td>
  46. </tr>
  47.  
  48. <tr>
  49. <td class='small'>W ostanich 2 misiącach:</td>
  50. <td align='right' class='small'>".number_format(dbresult($dwamiechy, 0))."</td>
  51. </tr>
  52.  
  53. <tr>
  54. <td class='small'>W ostanich 3 misiącach:</td>
  55. <td align='right' class='small'>".number_format(dbresult($trzymiechy, 0))."</td>
  56. </tr>
  57.  
  58. <tr>
  59. <td class='small'>W tym roku:</td>
  60. <td align='right' class='small'>".number_format(dbresult($roku, 0))."</td>
  61. </tr>
  62.  
  63. </table>";
  64.  
  65. closeside();
Zinterpretowano w sekund: 0.027, wykorzystano GeSHi 1.0.8.10


Wiadomość doklejona:
Aha ty chcesz jak na tej grafice idzie takie coś zrobić ale dziś już raczej tego nie zrobię bo cisnę do szkoły zaraz :D ale dziś wieczorem albo jutro może zrobię
Edytowane przez kefirek dnia 01.10.2008 14:01:21
 
dante77
W takiej formie nie będzie działać dobrze bo będzie przekłamywał wyniki, już wcześniej poruszaliśmy ten temat.

Modyfikacje jest mi potrzebna w takiej formie jak zamieściłem powyżej.


 
http://stronyrobie.pl
kefirek
Nie przekłamuje wyników bo sprawdzałem

Jakbyś chciał zrobić kto się zalogował wczoraj i przedwczoraj to tak wtedy przekłamuje ale jak chcesz zrobić ktoś się zalogował dziś, w tym miesiącu w ostatnich 2 miesiącach w tym roku to nie przekłamuje


Wiadomość doklejona:
Jak ktoś się zalogował dziś to wtedy data ta jest brana pod uwagę że logował się tym miesiącu i w tym roku ale jak nie logował się dziś ale powiedzmy tydzień temu to wyświetli go że logował się w tym miesiącu i w tym roku a jak się logował 3 miesiące temu to wyświetli go że logował się tylko w tym roku. Więc w tej formie nie przekłamuje wyników zobacz sobie sam że kod co podałem wyżej działa dobrze.

Wiadomość doklejona:
Jeśli chcesz dokładnie tak jak na grafice podąłeś żeby pokazywało miesiące i dni w miesiącu ile było logowań to na polu user_lastvisit tego nie zrobisz. Jak wrócę ze szkoły to pomyśle jak to zrobić
Edytowane przez kefirek dnia 01.10.2008 14:42:43
 
dante77
Nie zależy mi żeby było zrobione na polu user_lastvisit. Podałem ten kod, bo myślałem, że może być pomocny.

@edit
W załączniku załączam gotowe rozwiązanie, które wykonał dla mnie metaxy. Jest dokładnie tak jak chciałem.

Instalacja:
Należy wrzucić wszystkie pliki tak jak są do głównego katalogu (foldery są utworzone właściwie). Następnie wtyczkę należy zainstalować. W PA -> Wtyczki pojawi się opcja statystyki zalogowań.
dante77 dodał/a następującą plik:
statystyki.zip [6.56kB / 529 Pobrane]

Edytowane przez dante77 dnia 22.10.2008 09:37:53
 
http://stronyrobie.pl
Przejdź do forum:
Created by Arox Copyright (C) 2004
Copyright (C) 2004 - 2018 Ekipa PHP-Fusion.pl