Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: System wymiany linków
Forum PHP.pl > Forum > PHP
Vengeance
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 :/
hwao
Sprawa jest bardziej skompikowana niz moglo by sie wydawac smile.gif duzo mozna uwzgledniac, albo poprostu liczyc na farta 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'"
Vengeance
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.
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.