Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Ranking
Forum PHP.pl > Forum > Przedszkole
dotek
Mam bardzo poważny problem z stworzeniem rankingu :/
Chodzi mi o skrypt, który czytał by z pliku np. wyniki.dat coś takiego:
Cytat
4 user1
45 user2
65 user3
33 user4
21 user5
itd

a następnie sortował według ilości punktów od największej do najmniejszej, wyświetlajc np coś takiego:
Cytat
1. Pierwszy jest user3 (65 pkt)
2. Drugi jest user2 (45 pkt)
3. Trzeci jest user4 (33 pkt)
4. czwarty jest user5 (21 pkt)
5. Piąty jest user1 (4 pkt)
itd.


I tu się zaczyna problem bo mam pomysł a nie wiem jak go zrealizować.

Ogólnie rozchodzi się to tak by skrypt:
1. Czytał z pliku wyniki.dat "ilość punktów" i "nazwę użytkownika", który te punkty ma na swoim koncie
2. Przeprowadził sortowanie nie uporządkowanych "punktów" od najwiekszej ilości do najmniejszej.
3. Wyświetlił wynkiki z dopiskiem np. "Pozycje pierwszą zajmuje $user ($punkty pkt)", "Pozycje drugą zajmuje $user ($punkty pkt)".

Problem też w tym że chciałbym się obyć bez wykorzystania baz sql.

Skrypt, dla mnie stanowi poważny problem, dlatego postanowiłem napisać na tym forum, gdyż obserwując je od dłuższego czasu doszłem do wniosku, iż tylko tu mogę uzyskac pomoc.

Bardzo Proszę o Odpowiedzi
crash
  1. <?php
  2. $msc = array('', 'Pierwszy', 'Drugi', 'Trzeci', 'Czwarty', 'Piąty'); // itd...
  3.  
  4. if($dane = @file('./dane.txt'))
  5. {
  6.     $wynik = array();
  7.     
  8.     foreach($dane as $num => $linia)
  9.     {
  10.         /*
  11.              Będzie problem jeśli nazwa użytkownika będzie
  12.              składać sie z wiecej niż jednego członu. Proponuję
  13.              za wczasu użyć innego separatora, np; pkt|;|user
  14.         */
  15.         $wpis = explode(' ', trim($linia));
  16.         $wynik[$wpis[1]] = $wpis[0];
  17.     }
  18. }
  19.  
  20. arsort($wynik);
  21. reset($wynik);
  22.  
  23. $n = 1;
  24. foreach($wynik as $user => $pkt)
  25. {
  26.     echo $n.'. '.$msc[$n].' jest '.$user.' ('.$pkt.' pkt)<br/>';
  27.     $n++;
  28. }
  29. ?>
dotek
Bardzo ci dziękuję Crashu skrypt działa wyśmienicie.

Dziękuję za pomoc smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.