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. |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 93 Pomógł: 4 Dołączył: 10.08.2009 Ostrzeżenie: (0%)
|
@tehaha: oczywiście, będę brał pod uwagę jedynie aktywność z określonego przedziału czasu - ostatni miesiąc wydaje się być sensownym okresem.
Już wyjaśniam jak zamierzam to zrobić i nad czym się zastanawiam (chociaż temat powstał również w tym celu, by podłapać najbardziej optymalne rozwiązanie (IMG:style_emoticons/default/smile.gif) ). Po tym jak algorytm wykona wszystkie potrzebne obliczenia i posortuje wyniki od największego - będzie ustalana pozycja. Użytkownik z najwyższym wynikiem będzie miał pierwszą pozycję w rankingu, kolejny - drugą itd. Oczywiście, skrypt będzie obliczał pozycję wyłącznie 300 najlepszych użytkowników (o ile jest więcej użytkowników i jeżeli jest ustalony taki limit). Załóżmy, że tą pozycję będę zapisywał w polu rank_pos (int) - tabela users. Jedyne rozwiązanie jakie nasuwa mi się obecnie na myśl (ciężko się człowiekowi myśli, gdy z roboty przychodzi wkurw**** - wiem, słaba wymówka), to skonstruowanie odpowiedniego zapytania, a następnie wyciągnięcie 300 wyników pętlą - podczas działania skryptu - po każdym wyniku skrypt wykonywałby kolejne zapytanie (UPDATE) - ustalenie pozycji w polu rank_pos według tego co zostało wyświetlone wcześniej. Łącznie skrypt będzie musiał wykonać 600 zapytań do bazy i zastanawiam się czy nie da się zrobić tego prościej, bardziej optymalnie. Mam nadzieję, że nie opisałem tego zbyt chaotycznie. |
|
|
|
solid23 [PHP] Ranking użytkowników 21.02.2011, 18:30:50
tehaha ale masz jakiś konkretny problem? skoro już dokład... 21.02.2011, 18:36:50
PiotrekM normalna tabela z użytkownikami
zapytaniem zlicza... 21.02.2011, 18:45:17
tehaha 1. słaba wymówka co myślisz, że my nie pracujemy?
... 21.02.2011, 20:02:16
solid23 1) Wcale nie twierdzę, że są tu sami bezrobotni
2... 21.02.2011, 21:00:49
tehaha co do punktu 3 to chodziło mi "po co robić 30... 21.02.2011, 21:16:50
solid23 Mówisz, że można to wszystko zrobić za pomocą 4 za... 21.02.2011, 21:35:20
tehaha dokładnie Ci nie napiszę bo nie wiem jakie masz ta... 21.02.2011, 22:25:00 ![]() ![]() |
|
Aktualny czas: 26.12.2025 - 12:09 |