Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Losowanie według klucza
Forum PHP.pl > Forum > Bazy danych > MySQL
Black-Berry
Witam po dłuższej przerwie,
mam klienta który chce abym przygotował dla niego blok artykułów "zobacz także". Codzi o to aby w bloczku było 5 linków do losowych artykułów jednak nie chce on aby losowały się one przy każdym odświeżeniu strony. To dość zrozumiałe. Osoba zainteresowana mogłaby wrócić po kilku dniach i nie znaleźć już linku do interesującej go strony.

Jak takie coś wykonać?

Pozdrawiam:
Black-Berry
phpion
Cache?
flashdev
Możnaby zrobic w taki sposob:

Kod
$ilosc; // ilosc wszystkich artykulow
$aktualny_artykul; // zawiera numer aktualnego artykulu

// numery kolejnych artykulow
$id_0 = ( $aktualny_artykul + {liczba} ) % $ilosc;
....
$id_4 = ( $aktualny_artykul + {liczba} ) % $ilosc;
// gdzie liczba to jakas dowolnie wybranan liczba z przedzialu od 0 do $ilosc


Rozwiazanie takie ma tylko jedna wade:
Jeśli beda dodawane nowe artykuly za kazdym razem te 5 pseudolosowych beda sie zmieniac na inne.
maly_swd
Mozna zrobic tak:
przy dodawaniu artykulu do bazy, zapamietujemy jego ID
pozniej losujemy 5 ID innych artykulow i zapisujemy je do bazy z losowymi artykulami: ID_artykulu=IDARTYKULU_DODANEGO , ID_arty_LOSOWE

I wtedy mamy wylosowane artykuly w bazie i nigdy one sie nie zmienia;)
flashdev
Cytat(maly_swd @ 6.06.2009, 09:34:48 ) *
Mozna zrobic tak:
przy dodawaniu artykulu do bazy, zapamietujemy jego ID
pozniej losujemy 5 ID innych artykulow i zapisujemy je do bazy z losowymi artykulami: ID_artykulu=IDARTYKULU_DODANEGO , ID_arty_LOSOWE

I wtedy mamy wylosowane artykuly w bazie i nigdy one sie nie zmienia;)


Tylko do takiego rozwiązania miałbym jedną małą uwagę:
Trzebaby napisać specialną funkcję (nieliniową) losującą artykuły.
Chodzi o to, żeby prawdopodobieństwo wylosowania najwcześniej dodanych artykułów spadało według odpowiedniej funkcji tak aby każdy z artykułów był promowany średnio w pięciu innych artykułach.
Jeżeli użyjemy zwykłego prawdopodobieństwa 1/ilosc_artykulów, wtedy niestety najnowsze artykuły będą promowane najrzadziej, a te najstarsze znacznie częściej.
Nie wiem czy jasno wytłumaczyłem. Mam nadzieję, że autor tematu rozumie smile.gif
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.