Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> System wymiany linków
Vengeance
post
Post #1





Grupa: Zarejestrowani
Postów: 657
Pomógł: 2
Dołączył: 15.08.2003
Skąd: Łódź

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


Tworzę na własne potrzeby dość minimialistyczny system wymiany linków.
Inne takie projekty to np. likuj.pl lub linkor.pl

Problem polega na tym, że nie wiem jak losować te 5 adresów do wyświetlenia.

Przyjmijmy, że mamy już użytkownika z kontem, który zarejestrował kilka swoich stron w systemie i ma 1000 punktów. Porozdzielał te punkty na adresy które będzie reklamował pod dany anachor. Jak teraz "wylosować" 5 linków?

Z moich dotychczasowych rozmyśleń, losowanie na pewno powinno uwzględnić:\
+ ilość punktów przydzielonych danemu adresowi
+ ilość wyświetleń adresu

Co jeszcze? Jak to powyliczać, jak pobrać z bazy? Macie pomysły? Ja nie :/
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
hwao
post
Post #2


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




Sprawa jest bardziej skompikowana niz moglo by sie wydawac (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) duzo mozna uwzgledniac, albo poprostu liczyc na farta (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Wszytko zalezy od tego ile bedziesz mial tych linków i jak to sobie wyobrazasz...

Mozesz zrobic cos takiego
(Wyswietlen-MaxWyswietlen)*(Puntky/jakis podzielnik sensowny) no i taka regulka robisz Quary do bazy i "Order by 'to'"
Go to the top of the page
+Quote Post
Vengeance
post
Post #3





Grupa: Zarejestrowani
Postów: 657
Pomógł: 2
Dołączył: 15.08.2003
Skąd: Łódź

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


Wraz ze znajomymi opracowaliśmy dwa sposoby.

Sposób 1
Kod
    * Tworzymy np. 4 przedzialy punktowe:
    *    [1-10]
    *    [10-50]
    *    [50-250]
    *    [250-1000]
    *
    * Losujemy liczbe z zakresu rand(1, 1000)
    * Wybieramy wszystkie rekordy z zakresu wg wylosowanej liczby
    * Juz bez zadnej faworyzacji losujemy jeden rekord
    *
    * Sposob ten mozna rozwinac o faworyzowanie liczby wyswietlen i innych
    * podczas drugiego losowania


Sposób 2:
Kod
    * N - liczba rekordow w bazie
    *
    * Losujemy liczbe z zakresu rand(1, N);
    * Losujemy liczbe z zakresu rand(1, <poprzednio wylosowana liczba)
    * Pobieramy wszystkie rekordy, sortujemy malejaca wg ilosci punktow
    *    z zakresu 1..<druga wylosowana liczba>
    *
    * Zalety: latwosc w implementacji
    * Wady: Przy nieliniowym rozkladzie punktow w bazie wyniki beda niezadawalajace


Sposób 3:
Kod
    * Polaczenie ze soba dwoch ww. sposobow. Najpierw sposobem 1 okreslamy przedzial
    * potem sposobem 2 wybieramy link


Jeśli to możliwe, prosze o ocene tychze sposobow, a takze o wlasne propozycje co do tego jak taki problem rozwiazac.
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: 23.12.2025 - 12:15