Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Ranking użytkowników
devbazy
post
Post #1





Grupa: Zarejestrowani
Postów: 93
Pomógł: 4
Dołączył: 10.08.2009

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


Witam,

przejdę od razu do meritum. Otóż planuję napisać skrypt (jak w tytule wątku) i zastanawiam się nad pewną kwestią. Załóżmy, że algorytm obliczałby ilość zdobytych plusów za komentarze, posty napisane przez użytkownika oraz jego aktywność (podobne działanie jak na portalu wykop.pl) i według tego ustalałby jego pozycję w rankingu (nie mam zamiaru robić tego dynamicznie, czyli po każdej aktywności odpalać odpowiedni skrypt - wręcz przeciwnie, posłużę się CRON'em, bo myślę, że to najlepsza rozwiązanie, chociaż jestem otwarty na wszelkie sugestie). Na samym początku, po rejestracji na witrynie użytkownik miałby status - poza rankingiem (o ile na stronie byłoby zarejestrowanych więcej niż 300 użytkowników, dajmy na to, że limit to właśnie te 300 miejsc), a dopiero z czasem (w miarę jego aktywności) mógłby zdobyć jakąś sensowną pozycję. Będę wdzięczny za jakiekolwiek propozycje, począwszy od wstępnego projektu struktury tabel, aż po sugestie dot. rozwiązania tego dość irytującego problemu.

Z góry dziękuje za wszelaką pomoc.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
devbazy
post
Post #2





Grupa: Zarejestrowani
Postów: 93
Pomógł: 4
Dołączył: 10.08.2009

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


Mówisz, że można to wszystko zrobić za pomocą 4 zapytań bez stosowania jakiejkolwiek pętli? Nie wiem czy do końca zrozumiałem o co chodzi, byłbym wdzięczny za ukazanie tego na jakimś prostym przykładzie. W moim przypadku wyglądałoby to tak (zdaje sobie sprawę, że można to zrobić prościej i lepiej, dlatego też postanowiłem tutaj napisać):

  1. $query = mysql_query("SELECT user_id FROM some_table ORDER BY comment_points DESC, post_points DESC LIMIT 300"); //zakładając, że jest więcej userów w bazie
  2.  
  3. $i = 1;
  4. while($row = mysql_fetch_array($query))
  5. {
  6. mysql_query("UPDATE users_table SET rank_pos='".$i."' WHERE id='".$row['user_id']."' ");
  7. $i++;
  8. }
  9.  


^ zobrazowałem to, o czym wcześniej mówiłem.

Łącznie by wyszło 600 zapytań. Może dla niektórych to nie wiele biorąc pod uwagę fakt, że byłoby to wykonywane CRON'em raz na jakiś czas. Ale po co niepotrzebnie obciążać bazę, skoro jest zapewne skuteczniejszy sposób?
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: 16.10.2025 - 21:25