Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Ranking, problem+sortowanie
dotek
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 20.01.2005

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


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
crash
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 196
Pomógł: 2
Dołączył: 17.01.2004
Skąd: Sosnowiec

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


  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. ?>


Ten post edytował crashu 20.01.2005, 12:15:06


--------------------
Go to the top of the page
+Quote Post
dotek
post
Post #3





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 20.01.2005

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


Bardzo ci dziękuję Crashu skrypt działa wyśmienicie.

Dziękuję za pomoc smile.gif
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 19.08.2025 - 08:58