Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> system reklam
jarmiar
post
Post #1





Grupa: Zarejestrowani
Postów: 616
Pomógł: 12
Dołączył: 16.07.2006
Skąd: : getCity ( );

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


potrzebuje zrobic system reklam, w ktorym beda losowane reklamy z danego miejsca

system musi losowac czesciej reklamy te, ktore maja wiecej odslon jeszcze do wykorzystania, czyli jakby wieksze ratio ( current_views / total_views)

macie jakieś pomysły jak wydajnie to zrobić? chciałbym to zrobić za pomocą jednego zapytania do bazy
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
absflg
post
Post #2





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 14.11.2011

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


Może tak:
  1. SET @id = 0, @number = FLOOR(RAND()*(SELECT SUM(odslon) FROM reklamy))+1;
  2.  
  3. SELECT IF (@id=0,
  4. IF(@number-odslon<=0,
  5. @id := id,
  6. @number := @number-odslon
  7. ),
  8. 1
  9. ) FROM reklamy;
  10.  
  11. SELECT @id;

(Zakłada, że masz tabele `reklamy` z polami `id` i `odslon` zawierającym liczbę pozostałych odsłon.)
Dla przykładu: Gdy reklama 1 ma 10 odsłon, reklama 2 ma 3 odsłony, a reklama 3 ma 100 odsłon, to szansa jest jak 10:3:100.

Na koniec dostajesz id wylosowanej reklamy (zmień sobie to ostatnie zapytanie na takie z WHERE id = @id).
Go to the top of the page
+Quote Post

Posty w temacie


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: 10.10.2025 - 06:00