Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Ranking podstron swojego serwisu, Jak wykonać skrypt?
Szunaj85
post
Post #1





Grupa: Zarejestrowani
Postów: 392
Pomógł: 7
Dołączył: 11.05.2008

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


Chciałbym wykonać ranking odwiedzin wybranych podstron swojego serwisu. Opisze jak by miało to wyglądać. Skrypt zliczałby wejścia na podstrony, a dane zapisywał i przechowywał np. w pliku/plikach txt. Myślę, że trzbaby wykonać coś na wzór licznika wejść/odwiedzin, najlepiej odporny na odświeżanie. Następnie w wybranej podstronie wyświetlałby wyniki, ale nie w formie ilości wejść lecz procentowej. Postaram się to pokazać na przykładzie. Na podstronę1 weszło najwięcej 500 osób, na podstronę2 300 osób, na podstronę3 100 osób, na podstronę4 100 osób, na podstronę5 0 osób.
Więc skrypt powinien wyświetlić taki wynik jak poniżej.
Gdyby jeższe dało się do tego dołożyć wykres np. w postaci pliku "gif", a jego długość zależałaby od ilości procent. U mnie wykres to znak "=". Nie pogardziłbym też segregacją stron przy wyświetlaniu od największej ilości procent do najmniejszej.

Ranking wejść:
Podstrona1 50% ==========
Podstrona2 30% ======
Podstrona3 10% ==
Podstrona4 10% ==
Podstrona5 0%
Tu się kłania matematyka. Wydaje mi się (trzymając się przykładu), że pierw powiniennem zsumować wszystkie osoby 500+300+100+100+0=1000, a następnie wykonać takie obliczenia według wzoru:
(100% * liczba wejść) : suma wszystkich osób = ilość procent

100% = 1000 osób (suma wszystkich osób)

(100%*500):1000 = 50%
(100%*300):1000 = 30%
(100%*100):1000 = 10%
(100%*100):1000 = 10%
(100%*0):1000 = 0%

Będę wdzięczny za wszelką pomoc. Sam też spróbuję pokombinować, może coś mi wyjdzie. Jednak nie za bardzo wiem jak się za to wziąć. Liczę na Wasze propozycje, a nie na gotowca. Proszę nie proponujcie mi rozbudowanych skryptów
z opcjami dla admnistratora! (IMG:http://forum.php.pl/style_emoticons/default/dry.gif)

Ten post edytował Szunaj85 17.05.2008, 15:41:07
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 18)
1010
post
Post #2





Grupa: Zarejestrowani
Postów: 749
Pomógł: 37
Dołączył: 3.10.2006

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


I jaki problem?

Może spróbuj coś sam napisać, a jak coś nie będzie działać to pomożemy...

Na gotowca nie licz, chyba że w dziale Praca oferowana. Pomysł masz dobry. Wystarczy go zrealizować...
Go to the top of the page
+Quote Post
Cezar708
post
Post #3





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

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


a może właśnie gotowiec Ci wystarczy?

tu wejdź i sprawdź opensourceowy bbClone

Pozdrawiam
Cezar708
Go to the top of the page
+Quote Post
Szunaj85
post
Post #4





Grupa: Zarejestrowani
Postów: 392
Pomógł: 7
Dołączył: 11.05.2008

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


Za pomocą tego skryptu, który właśnie tworzę próbuję odczytać adresy IP plików txt, zliczyć i przerobić na procenty czyli ranking. Na razie nie jest ukończony. Proszę o pomoc w przerobieniu tego kodu. No i w jaki sposób miałbym zliczać
wejścia na stronę?
  1. <?php
  2. $strona_1 = file_get_contents('plik1.txt');
  3. $strona_2 = file_get_contents('plik2.txt');
  4. $strona_3 = file_get_contents('plik3.txt');
  5. $strona_4 = file_get_contents('plik4.txt');
  6. $strona_5 = file_get_contents('plik5.txt');
  7.  
  8. if ($strona_1 === false or $strona_2 === false or $strona_3 === false or $strona_4 === false or $strona_5 === false) {
  9. exit ("Błąd podczas próby otwarcia pliku!"); //zakończenie wykonywania skryptu
  10. } 
  11. while(!feof($plik))
  12. {
  13. $linie = fgets($plik,1024);
  14. $strona_1 = explode('\n',$linie);
  15. $strona_1;
  16. }
  17. while(!feof($plik))
  18. {
  19. $linie = fgets($plik,1024);
  20. $strona_2 = explode('\n',$linie);
  21. $strona_2;
  22. } 
  23. while(!feof($plik))
  24. {
  25. $linie = fgets($plik,1024);
  26. $strona_3 = explode('\n',$linie);
  27. $strona_3;
  28. } 
  29. while(!feof($plik))
  30. {
  31. $linie = fgets($plik,1024);
  32. $strona_4 = explode('\n',$linie);
  33. $strona_4;
  34. } 
  35. while(!feof($plik))
  36. {
  37. $linie = fgets($plik,1024);
  38. $strona_5 = explode('\n',$linie);
  39. $strona_5;
  40. }
  41.  
  42. $strona_1 + $strona_2 + $strona_3 + $strona_4 + $strona_5 = $suma;
  43.  
  44. (100% * $strona_1)/$suma = $ilosc_procent;
  45. (100% * $strona_2)/$suma = $ilosc_procent2;
  46. (100% * $strona_3)/$suma = $ilosc_procent3;
  47. (100% * $strona_4)/$suma = $ilosc_procent4;
  48. (100% * $strona_5)/$suma = $ilosc_procent5;
  49.  
  50. echo $ilosc_procent;
  51. echo $ilosc_procent2;
  52. echo $ilosc_procent3;
  53. echo $ilosc_procent4;
  54. echo $ilosc_procent5;
  55. ?>


Ten post edytował Szunaj85 22.05.2008, 14:19:08
Go to the top of the page
+Quote Post
em1X
post
Post #5





Grupa: Zarejestrowani
Postów: 984
Pomógł: 41
Dołączył: 16.03.2002
Skąd: Płock

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


ogólnie co do wzorów to kłania się podstawówka:

wszystkie wejścia to 100%
500 wejść to X%

mnożymy na krzyż i wyznaczamy X co daje:

x = (500 * 100) / wszystkie_wejscia
gdzie x to Twoja szukana procentowa wartość (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
camikazee
post
Post #6





Grupa: Zarejestrowani
Postów: 171
Pomógł: 18
Dołączył: 17.04.2006
Skąd: Bydgoszcz

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


Najlepiej właśnie z proporcji liczyć. Można zbudować prosty wskaźnik na zasadzie obrazka z regulowaną długością, Gdzie 100px równe będzie 100%. Tyleże jak rozkład będzie równomierny to wskaźniki króciutkie, więc można pomnożyć np x2 i wyjdą ładne wykresiki (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Szunaj85
post
Post #7





Grupa: Zarejestrowani
Postów: 392
Pomógł: 7
Dołączył: 11.05.2008

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


camikazee twoją radę wezmę pod uwagę jednak może coś więcej na ten temat. Może masz jakiś przykład takiego wskaźnika. Druga sprawa to to, że wskaźnik nie na wiele się zda jeśli nie wesprzecie mnie przy tym skrypcie. Nie zapominajcie sam też próbuje. (IMG:http://forum.php.pl/style_emoticons/default/sciana.gif)
Go to the top of the page
+Quote Post
em1X
post
Post #8





Grupa: Zarejestrowani
Postów: 984
Pomógł: 41
Dołączył: 16.03.2002
Skąd: Płock

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


Ale w czym problem.. musisz sobie pierw znaleźć jakiś obrazek do wykresu. Wystarczy taki:
http://images.wikia.com/openserving/sports.../vote-bar-1.gif

Pobierasz przez PHP dane i załóżmy, że są one takie:
- serwis 1 : 120 wejść
- serwis 2 : 499 wejść
- serwis 3 : 314 wejść

I liczysz proporcje dla każdego serwisu:
  1. <?php
  2. // maksymalna dlugosc dla wskaznika
  3. $max_length = 200;
  4.  
  5. // tablica serwisy to lista wejść serwisów
  6. // np. $serwisy = array(120,499,314);
  7.  
  8. // do tej zmiennej zapisujemy wyjscie
  9. $output = '';
  10.  
  11. foreach ($serwisy as $entries)
  12. {
  13. # $max_length - 100%
  14. # $entries - X
  15.  
  16. // na krzyz
  17. # x * $max_length = $entries * 100
  18.  
  19. // wyciagamy z rownania x, co daje
  20. # x = ($entries * 100) / $max_length
  21.  
  22. // zaokraglamy wynik do dolu, zeby otrzymac liczbe calkowita
  23. $x = floor(($entries * 100) / $max_length);
  24.  
  25. $output .= '<img src=\"bar.gif\" alt=\"bar\" width=\"'.$x.'\">
  26. ';
  27. }
  28.  
  29. print $output;
  30. ?>


To trzeba przerobić oczywiście, aby wyświetlało legendę czy ewentualne opisy poszczególnych wskaźników. Ale ogólnie działa i dobrze wyświetli obrazki. (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Pozdrawiam </img src=\"bar.gif\" alt=\"bar\" width=\"'.$x.'\">

Ten post edytował em1X 20.05.2008, 18:51:48
Go to the top of the page
+Quote Post
.radex
post
Post #9





Grupa: Zarejestrowani
Postów: 1 657
Pomógł: 125
Dołączył: 29.04.2006

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


Po co angażować w to obrazki?

Kod
<div class="rankwrapper"><div class="rank" style="width:50%"></div></div>


i:

Kod
.rankwrapper
{
   border: 1px solid black;
   width: 100px;
}

.rank
{
   height: 8px;
}
Go to the top of the page
+Quote Post
Szunaj85
post
Post #10





Grupa: Zarejestrowani
Postów: 392
Pomógł: 7
Dołączył: 11.05.2008

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


Chcę się zapytać czy w dobrym kierunku idę przy próbie odczytu ilości adresów IP w pliku txt, a cały kod znajduje się w 4 poście. Dodam jeszcze, że każdy adres IP znajduje się w nowej lini. Jeśli źle się za to wziołem proszę o uwagi w jaki sposób zrobić to lepiej. Jeśli istnieją techniki skrócenia kodu też proszę o komentarz. (IMG:http://forum.php.pl/style_emoticons/default/worriedsmiley.gif)

Ten post edytował Szunaj85 22.05.2008, 14:20:00
Go to the top of the page
+Quote Post
em1X
post
Post #11





Grupa: Zarejestrowani
Postów: 984
Pomógł: 41
Dołączył: 16.03.2002
Skąd: Płock

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


tylko nie wiem po co się tak męczysz z tym otwieraniem pliku skoro wystarczy:

  1. <?php
  2. // i dane pobrane
  3. $dane = file_get_contents('plik1.txt');
  4. ?>
Go to the top of the page
+Quote Post
Szunaj85
post
Post #12





Grupa: Zarejestrowani
Postów: 392
Pomógł: 7
Dołączył: 11.05.2008

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


Ekspertem w tej dziedzinie nie jestem. Nie znam jeszcze wielu poleceń. Poprawiłem kod tak jak zasugerował em1X. Proszę o kolejne uwagi.
Go to the top of the page
+Quote Post
em1X
post
Post #13





Grupa: Zarejestrowani
Postów: 984
Pomógł: 41
Dołączył: 16.03.2002
Skąd: Płock

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


Podałem Ci praktyczne rozwiązanie słupków. Po co odczytujesz adresy IP z tych 4 plików tekstowych?
Go to the top of the page
+Quote Post
Szunaj85
post
Post #14





Grupa: Zarejestrowani
Postów: 392
Pomógł: 7
Dołączył: 11.05.2008

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


W 1 poście wszystko opisałem, jednak nie ma tam odpowiedzi na Twoje pytanie. Licznik, który mam zapisuje IP użytkownika do pliku i tam przechowuje te IP. Dzięki temu licznik jest w stanie stwierdzić ile było wejść na podstawie ilości adresów IP znajdujących się w pliku txt.
Czyli 1 IP = 1 wejście. Ja natomiast chcę wykorzystać te dane do stworzenia statystyk odczytując ilość adresów IP
z pliku/plików txt. (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Pewnie ranking można by było zbudować inaczej jednak ja nie mam takiego skryptu i zrobić to też nie za bardzo umiem.

Cytat(Szunaj85 @ 29.05.2008, 20:05:04 ) *
  1. <?php
  2. // i dane pobrane
  3. $dane = file_get_contents('plik1.txt');
  4. ?>

A jak w ten sposób pobrać dane z tablicy zawierającej kilka plików?

Ten post edytował Szunaj85 29.05.2008, 19:08:26
Go to the top of the page
+Quote Post
em1X
post
Post #15





Grupa: Zarejestrowani
Postów: 984
Pomógł: 41
Dołączył: 16.03.2002
Skąd: Płock

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


a ja wiem.. jakkolwiek:

  1. <?php
  2. $dane = '';
  3.  
  4. foreach ($arrFiles as $plik) {
  5.  $dane .= file_get_contents($plik);
  6. }
  7. ?>
Go to the top of the page
+Quote Post
Szunaj85
post
Post #16





Grupa: Zarejestrowani
Postów: 392
Pomógł: 7
Dołączył: 11.05.2008

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


Ja natomiast zrobiłem coś takiego. Odczytuje z plików txt liczby i mogę wyświetlić je jedna pod drugą, ale choć wiem jak te obliczenia zrobić nie wiem jak je wpisać w PHP, żeby w końcu wyszedł wynik w procentach dla każdego pliku osobno. Szczegóły opisałem w pierwszym poście. Tak myślę, że te zmienne trzeba w jakiś sposób przechować, aż pętla zakończy swoje działanie. Tylko nie wiem jak. Potem je zsumować. No i reszta obliczeń. Dodam, że z zapisem plików już sobie poradziłem. (IMG:http://forum.php.pl/style_emoticons/default/sadsmiley02.gif)
  1. <?php
  2. $dane = array('plik1.txt', 'plik2.txt', 'plik3.txt');
  3. foreach ($dane as $plik) {
  4. if (file_exists($plik)){// i dane pobrane 
  5. echo $plik.'<br />'; 
  6.  }
  7. }
  8. ?>
Go to the top of the page
+Quote Post
em1X
post
Post #17





Grupa: Zarejestrowani
Postów: 984
Pomógł: 41
Dołączył: 16.03.2002
Skąd: Płock

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


logika.. musisz najpierw utworzyc tablice czestosci dla kazdego adresu:

[192.168.0.1] => 20 wejsc
[212.25.100.16] => 10 wejsc
[19.19.19.1] => 17 wejsc

Po utworzeniu takiej tablicy masz wszystkie niezbedne dane (ilosci poszczegolnych wejsc (20,10,17) oraz suma wejsc (47)) do wyrysowania słupków jak napisałem wyżej przykład.
Go to the top of the page
+Quote Post
Szunaj85
post
Post #18





Grupa: Zarejestrowani
Postów: 392
Pomógł: 7
Dołączył: 11.05.2008

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


Cytat(em1X @ 29.05.2008, 22:12:19 ) *
logika.. musisz najpierw utworzyc tablice czestosci dla kazdego adresu:

Co to jest tablica czestosci? Z twojego przykładu można zrozumieć, że dany użytkownik o konkretnym IP wchodził na stronę ileś tam razy. A to wcale tak nie działa w moim przypadku. I czy mógłbyś troszkę więcej szczegółów podać. Ogólnie chcę odczytać ilość adresów IP z każdego pliku, porobić obliczenia i wyświetlić.

Ten post edytował Szunaj85 29.05.2008, 21:28:42
Go to the top of the page
+Quote Post
em1X
post
Post #19





Grupa: Zarejestrowani
Postów: 984
Pomógł: 41
Dołączył: 16.03.2002
Skąd: Płock

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


Skad ja mam wiedziec jak to w Twoim przypadku wyglada skoro nie pokazales przykladowego pliku txt ? (IMG:http://forum.php.pl/style_emoticons/default/sciana.gif)

Ten post edytował em1X 29.05.2008, 21:41:08
Go to the top of the page
+Quote Post

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: 24.08.2025 - 16:09