[PHP]Banner systeem: moeilijke query's

Pagina: 1
Acties:

  • FireFoz
  • Registratie: Juni 2001
  • Laatst online: 31-08 23:38
ik ben bezig met een banner systeem. Ik dacht aan de volgende opties:

- random banners, op volgorde van de prioriteit van de sponsors, daarna op click-ratio van de banner (impressions/clicks)

- alle impression + clicks tellen
- banners mogen maar 1 keer voorkopen. Als er eenmaal op geklikt is, wordt die sponsor niet opnieuw weer gegeven. (dmv sessies)

en nog wat meer kleinere opties..
die 2e is niet zo moeilijk. Maar die eerste :D

Het probleem is dus, dat je eerst de sponsor met de hoogste prioriteit selecteerd. Daarna selecteer je een banner die bij die sponsor hoort, met de hoogste click ratio. Gaat allemaal goed.

Nou run je dat script dus nog een keer. Probleem is dan dus, dat je dan PRECIES hetzelfde krijgt.

Ik heb al een aantal uren geprobeerd om hier op iets te vinden, heb het tot nu toch niet gevonden, maar misschien is het er niet eens.. :?
Weet iemand of dit uberhaupt mogelijk is, evt een tip?

En, gaat dit niet te veel server load kosten? Anders is het vrij nutteloos natuurlijk :+

Misschien moet ik me limiteren tot random banners en sessies + tracking :'(

Leef lekker in het nu, er is niks anders


  • vinnux
  • Registratie: Maart 2001
  • Niet online
Dus je wilt de volgende banner krijgen.

Waarom plaats je dan in je sessie niet een array met banners die je voor je neus kan krijgen. Telkens wanneer je een nieuwe banner wilt pak je de volgende.

Ok het betekent dat je niet in alle gevallen de beste banner hebt, maar je zou de lijst om de x minuten kunnen veranderen.

Of je houd een array bij met banner die je gehad hebt ?

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

phpAds ... misschien valt daar e.e.a. van te 'leren' ;)

  • djc
  • Registratie: December 2001
  • Laatst online: 08-09-2025

djc

Gebruik je al srand()? :D

Rustacean


  • FireFoz
  • Registratie: Juni 2001
  • Laatst online: 31-08 23:38
Op dinsdag 19 maart 2002 20:25 schreef TheRookie het volgende:
phpAds ... misschien valt daar e.e.a. van te 'leren' ;)
damn, dat ziet er bestwel complex uit! Zo complex dat ik er nog niet veel van begrijp :P
De bedoeling van mijn systeem is om het wat makkelijker te maken..
Op dinsdag 19 maart 2002 20:27 schreef Manuzhai het volgende:
Gebruik je al srand()? :D
|:(

Leef lekker in het nu, er is niks anders


  • GraasGast
  • Registratie: Oktober 2000
  • Laatst online: 03-09 17:11

GraasGast

Analogue Heaven

Random op volgorde? Dat vind ik knap :+

  • drGoeroe
  • Registratie: Januari 2002
  • Laatst online: 04-09-2021
code:
1
2
3
4
SELECT * FROM tabel 
    ORDER BY rand(),
     proriteit DESC,
        impressions/clicks DESC LIMIT 1

Zoiets? Lekker simpel maar misschien werkt t ook nog :o

Verwijderd

Als je postgresql gebruikt kan je volgens mij random al zelf in de query zetten. Ik dacht iets van SELECT RANDOM.. (ik weet de syntax niet precies zie de manual ervoor).

Verder zou je de banners die gezien zijn kunnen opslaan in een tijdelijke tabel en dan met een subselect iets doen als: WHERE bannerid NOT IN (SELECT bannerid FROM gezien WHERE userid = ... OR ip = ...).

  • FireFoz
  • Registratie: Juni 2001
  • Laatst online: 31-08 23:38
vergeten te vermelden:

ik heb die banners en sponsors allebij in een apparte tabel.

Misschien zou ik de prioriteit van de sponsors meteen al bij de banner in moeten doen...dat scheelt zowieso een sub-select = serverload

En dan met een array...
hmmmm :)

Leef lekker in het nu, er is niks anders


Verwijderd

ik heb zoiets opgelost door de prioriteit om te zetten in een percentage van het totaal en dan in een array met 100 waarden daar dus x aantal keer het id van die banner in te zetten en daar een random op los te laten... :)

Verwijderd

Op dinsdag 19 maart 2002 23:42 schreef zellufs het volgende:
ik heb zoiets opgelost door de prioriteit om te zetten in een percentage van het totaal en dan in een array met 100 waarden daar dus x aantal keer het id van die banner in te zetten en daar een random op los te laten... :)
Heb je dus uit een select 100 rows komen en daar dan een random over heen waardoor je dus per banner aanvraag 100x rows vind? Volgens mij heb je dan ook meerdere query's nodig: 1 om de id's op te halen en 1 de gekozen banner. Mij lijkt dit niet echt een mooie oplossing.

Topicstarter: welke database gebruik jij eigenlijk? Volgens mij ondersteunt MySQL niet eens subselects.

  • FireFoz
  • Registratie: Juni 2001
  • Laatst online: 31-08 23:38
Ik heb het nu opgelost door de click_value in de tabel van de banner te zetten, en met een LIMIT $nr,1 te selecteren. Na elke selectie $nr++;

Ik nu echter met een ander probleem..

ik track de impressies en de clicks. Bij elke impressie wordt er een nieuwe row in de tabel gestopt met het ip, time, welke banner, welke sponsor en nog wat meer info. Ook bij elke klik.

Hoe kan uit deze tabel nou een select maken waar ik de UNIEKE impressies of clicks van de laatste 24 uur uit haal? Die select between is niet het probleem, maar hoe kan je nou een select maken waarbij je een waarde die 2 keer voorkomt maar 1 keer telt?

Leef lekker in het nu, er is niks anders


  • corani
  • Registratie: December 2000
  • Laatst online: 05-10-2017

corani

__,,,_(^_^)_,,,__

Een random functie met prioriteit kun je maken door een 'range' toe te kennen aan elke ad.

voorbeeld:
code:
1
2
3
4
ad1: range 0-50
ad2: range 50-60
ad3: range 60-80
ad4: range 80-100

Dan kun je een random getal genereren tussen 0 en MaxWaarde. Daarmee doe je een select
code:
1
SELECT FROM ADS WHERE rangeMin < waarde AND rangeMax > waarde

Het grootste probleem op deze manier is om de range aansluitend te houden. Daar weet ik zo even geen oplossing voor. Of je moet alle ranges opnieuw instellen na elke delete.

Laat me nou toch eens met rust man!
Iedereen die in telekinese gelooft, steek a.u.b. mijn hand op

Pagina: 1