Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Losowanie według klucza
Black-Berry
post
Post #1





Grupa: Zarejestrowani
Postów: 663
Pomógł: 6
Dołączył: 3.06.2007
Skąd: Kraków

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


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
Go to the top of the page
+Quote Post
phpion
post
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cache?
Go to the top of the page
+Quote Post
flashdev
post
Post #3





Grupa: Zarejestrowani
Postów: 812
Pomógł: 117
Dołączył: 2.12.2008

Ostrzeżenie: (10%)
X----


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.
Go to the top of the page
+Quote Post
maly_swd
post
Post #4





Grupa: Zarejestrowani
Postów: 744
Pomógł: 118
Dołączył: 14.02.2009
Skąd: poziome

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


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;)
Go to the top of the page
+Quote Post
flashdev
post
Post #5





Grupa: Zarejestrowani
Postów: 812
Pomógł: 117
Dołączył: 2.12.2008

Ostrzeżenie: (10%)
X----


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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował flashdev 7.06.2009, 01:09:36
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: 27.09.2025 - 16:55