Avatar billede shemsiu Nybegynder
19. december 2012 - 01:59 Der er 19 kommentarer

Pointsystem

Jeg har forsøgt mig frem og tilbage med et pointsystem og kan ikke finde frem til løsningen.

Jeg har et brugersystem. Når man logger ind bliver disse dataer gemt i databasen:
sidstset = time() for hvornår man er logget på
sidstaktiv = time() for hvornår man sidst har opdateret siden - f5.

Den ligning jeg ikke kan finde ud af at opstille er: Hvordan skal man lave sådan, at man modtager 1 point pr. time man har været online? Altså hver gang jeg opdaterer siden skal jeg gerne kunne se, at jeg har fået 0.00001 point eller lign.

Point i databasen er sat op i double, så det kan indeholde decimaler.

Det er vigtigt, at hvis brugeren logger ud efter 30 minutter jamen så har vedkommende modtaget 0,5 point. Har brugeren logget af efter 15 minutter jamen så skal vedkommende have 0,25 point.

Jeg håber der er nogen der kan hjælpe.

- - - - - - - - - - - - - - - - - - - - - -

Jeg har selv prøvet mig lidt frem, men virker dog ikke:

$sidstaktiv = $showUserPoint['sidstaktiv'];
$tid = time();
$udregning = (($tid-$sidstaktiv)/3600);
$pointupdate = $udregning;

også en mysql_query hvor jeg sætter point = point + $pointupdate
Avatar billede tobrukDk Novice
19. december 2012 - 02:48 #1
Jeg har prøve at kigge på kode,

http://webmasterpals.com/showthread.php?t=1505


du kan sikkert få en ide her fra :)


håber det hjælpe dig videre! :D
Avatar billede shemsiu Nybegynder
19. december 2012 - 13:02 #2
Hey tobrukDk

Jeg har fint styr på, at de kan få tildelt en point pr. aktivitet de foretager sig på siden.
Men jeg leder mere efter, at de først skal have 1 point når de har været aktiv i en time.
Avatar billede tobrukDk Novice
19. december 2012 - 13:09 #3
er det ikke bare noget if og elseif og else?. så du på en måde bedre kan styr det

så du spørger første i "if" hvis tiden er mere endnu 60 minutter så skal jeg updater og lige et point ind til ham.
Avatar billede olebole Juniormester
19. december 2012 - 13:11 #4
<ole>

Hvad skal der ske, hvis jeg placerer min finger på F5 og holder den dér i 5 minutter? Skal det - udover at trække bunker af unødig trafik - give 20.000 pointtildelinger, eller?  =)

/mvh
</bole>
Avatar billede shemsiu Nybegynder
19. december 2012 - 13:13 #5
Nej ikke helt alligevel.
Grunden til det er, at hvis en bruger logger på kl. 17:59 og logger af kl. 18:01 så har han modtaget 1 point.
Til modsætning af dem der har været online i 60 minutter for at få det enkelte point.

Det skal gå hånd i hånd med den online tid man har og de point man får.
Så har man fx. været online på siden i 30 minutter jamen så skal man have 0,5 point for det. 15 minutter = 0,25 point for det.
Det skal så lægges OVENI de tidligere point.
Avatar billede shemsiu Nybegynder
19. december 2012 - 13:16 #6
olebole, nej det skal det ikke. Hvis du holder f5 nede i 5 minutter, så skal det give en unødig trafik + 5/60 point = 0,0833333333 point sammenlagt på de 5 minutter.
Avatar billede olebole Juniormester
19. december 2012 - 13:19 #7
- og hvis jeg går ind på siden kl.18 om aftenen - og jeg så refresher siden kl.08 om morgenen - har jeg så været online i 14 timer? Er projektet mon helt gennemtænkt, eller mangler du ikke noget planlægning, inden du kan skrive applikationen?
Avatar billede shemsiu Nybegynder
19. december 2012 - 13:19 #8
Det er selve ligningen jeg har problemer med at stille op.
Hvordan man skal trække time() fra og til, og til sidst at dividere det med 3600 sekunder (1 time) for at det skal give 1, som så bliver lagt oveni de tidligere point man havde.

For det skal gerne være muligt, at kunne få ekstra point samt blive trukket i point.
Avatar billede shemsiu Nybegynder
19. december 2012 - 13:20 #9
Nej, olebole.
Det er gennemtænkt.

Du bliver smidt af siden efter 15 minutters inaktivitet (hvis du ikke opdaterer siden).-
Avatar billede olebole Juniormester
19. december 2012 - 13:22 #10
Jamen, så er det vel bare at gemme et timestamp for hvergang en bruger tilgår en side. Det timestamp trækker du fra time() og dividerer tallet med 3600
Avatar billede shemsiu Nybegynder
19. december 2012 - 13:28 #11
sidstaktiv = hvornår brugeren sidst har opdateret siden

$tid er sat til time()

$sidstaktiv = $showUsers['sidstaktiv'];
$pointgl = $sidstaktiv - $tid;
$pointopdateret = $pointgl / 3600;

mysql_query("UPDATE `brugere` SET `point` = 'point + $pointopdateret WHERE `id` = '".$showUsers['id']."'");



Det er hvad jeg har indtil videre, og det virker ikke helt optimalt.
Avatar billede tobrukDk Novice
19. december 2012 - 13:34 #12
Jeg synes altså også det lyder som lidt mærkeligt det her som olebole også siger "og hvis jeg går ind på siden kl.18 om aftenen - og jeg så refresher siden kl.08 om morgenen - har jeg så været online i 14 timer? Er projektet mon helt gennemtænkt, eller mangler du ikke noget planlægning, inden du kan skrive applikationen?"

så kan jeg bare få min computer til at klik ET stede hele tiden så få jeg utroligt hente let tjene point til min bruger hvis det er.


jeg synes personligt at du skal overvej nogle omkring det her.
Avatar billede olebole Juniormester
19. december 2012 - 13:34 #13
Jamen, mon så ikke det ville være en idé at fortælle, hvad du anser som 'optimalt', og hvad du ikke anser for 'optimalt'?  =)

Hvad sker der - og hvad sker der ikke - og hvad havde du forventet/øsnekt skulle ske?
Avatar billede shemsiu Nybegynder
19. december 2012 - 13:42 #14
Ja det er naturligvis rigtigt, beklager.

Det der sker er, at hvis jeg giver mig selv point gennem databasen, så bliver det igen optimeret efter ens online timer.
Det vil sige, at hvis jeg har 20 timer sammenlagt i brugerlogin, så smider den mine point på 20.
Jeg kan hverken trække fra eller til med hensyn til point fordi den går efter onlinetid.
Avatar billede shemsiu Nybegynder
19. december 2012 - 13:49 #15
TubrukDk, du bliver smidt af efter 15 minutter inaktivitet. Folk må gerne sidde og klikke som de vil, hvis de har lyst til det :)
Det skal stadig kun give dem en point i timen.
Avatar billede olebole Juniormester
19. december 2012 - 13:56 #16
Er det ikke fordi, du ikke opdaterer $showUsers['sidstaktiv'];? Det felt skal jo opdaters, efter hvergang du tildeler point i forhold til onlinetid
Avatar billede shemsiu Nybegynder
19. december 2012 - 14:11 #17
Disse felter opdaterer jeg hver gang en bruger klikker på en side:
mysql_query("UPDATE `brugere` SET `sidstset` = '".$tid."', `sidstaktiv` = '0', `onlinetid` = '".$onlineTime2."', `point` = point + $point WHERE `id` = '".$showUsers['id']."'");
Avatar billede shemsiu Nybegynder
19. december 2012 - 14:14 #18
Tror jeg har fundet fejlen.
Avatar billede tobrukDk Novice
20. december 2012 - 15:32 #19
Så give os fejl ?, så er der måske andre bruger som ved det til næste gang de kigger eller ligne.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester