Jeg vil gerne have at man får 1 point hver time, istedet for hvert minut.
=============================================== <?php $brugernavn = $_SESSION[brugernavn]; $pointsats = '1'; //Antal point der gives for hvert online-minut
$dbquery = mysql_query("select * from brugere where brugernavn = '$brugernavn'"); $dbarray1 = mysql_fetch_array($dbquery);
Det ser skam helt fint ud, og selvfølgelig ligger din anden opgave som nummer 1! :) Men tænkte på, kan jeg mon sætte den i toppen af min index fil, sådan at den opdaterer ved hver time, istedet for hver gang man logger ud? :))
Du ville vel godt kunne lave noget udregning, men så bør du måske nøjes med at tjekke indlogningstiden (som du kunne gemme i en session) og tjekke den løbende. Så overbelaster du ikke databasen med unødige kald.
Og mit svar kunne igen misforståes! :o)
"Men er dette ikke ok?" <- Jeg mente om min kode var ok! :o)
Brugeren kommer til login-formular. Brugerens brugernavn og kodeord tjekkes mod databasen. Er brugernavn og kodeord korrekt, så sætter du en session. $_SESSION['logged_in'] = true; //eller hvad du nu kalder den. Samtidig sætter du så også: $_SESSION['login_tid'] = time(); Så tjekker du bare hele tiden LOGIN_TID mod TIME() og ser om der er gået mere end en time.
så har jeg så lavet: if($point > 0){ $sql = mysql_query("SELECT * FROM community WHERE brugernavn='$_SESSION[brugernavn]'") or die("Fejl: " . mysql_error()); while($point = mysql_fetch_assoc($sql)){ $total = $point[monter] + $point; mysql_query("UPDATE community SET monter='$total' WHERE brugernavn='$_SESSION[brugernavn]'") or die("Fejl: " . mysql_error()); } }
Hvis du har $sammenlign = time() - $tid; Efter en time skulle det gerne give 1 point. Efter timer, får man så 2 point. Altså 3 point i alt. Det burde jo kun være et point pr time. 2 timer = 2 point.
Men nu vil jeg lige være helt sikker. Hvor skal jeg putte de forskellige dele ind?
Kunne forestille mig at dette skulle i toppen af siden: $diff = time() - $_SESSION['login_time']; if(($diff - ($_SESSION['login_point']*60)) > 60) { $_SESSION['login_point']+= floor(($diff - ($_SESSION['login_point']*60))/60); }
Og dette skulle i login delen: if(isset($_GET['reset'])) { $_SESSION['login_time'] = time(); $_SESSION['login_point'] = 0; }
Kunne måske forestille mig at if(isset($_GET['reset'])) { $_SESSION['login_time'] = time(); $_SESSION['login_point'] = 0; } skal laves om til $_SESSION['login_time'] = time(); $_SESSION['login_point'] = 0;
$diff = time() - $_SESSION['login_time']; if(($diff - ($_SESSION['login_point']*60)) > 60) { $_SESSION['login_point']+= floor(($diff - ($_SESSION['login_point']*60))/60); mysql_query("UPDATE community SET monter='$_SESSION[login_point]' WHERE brugernavn='$_SESSION[brugernavn]'") or die("Fejl: " . mysql_error()); }
Sådan ser den så ud :o)
- Hvordan får jeg det til at give 1 point hver time? :o)
Skal denne ændres $_SESSION['login_point']+= floor(($diff - ($_SESSION['login_point']*60))/60); til $_SESSION['login_point']+= floor(($diff - ($_SESSION['login_point']*60)));
Men nu kom jeg lige til at tænke på, hvad når brugeren logger ud? Tiden skulle jo helst *stoppe* der, og så forsætte hvor den kom til når man logger ind igen..
Der er ingen events der trigges når en bruger logger af. Hvis brugeren klikker på LOG AF, så kan du lave noget kode der gemmer overskydende minutter/sekunder. Hvis brugeren bare lukker sin browser på X, så kan du intet gøre.
Nu kan det godt være mig der er dum :P, men forstår ikke helt hvad du mener.
Det er helt forståeligt hvis du ikke rigtig har lyst til at hjælpe mere med dette spørgsmål, men vil sætte stor pris på hvis du lige kunne hjælpe mig med det sidste her! :D
Hvis ikke, så skal du have mange mange mange tak for hjælpen, og send endelig svar! :)
Det er ikke fordi jeg ikke vil hjælpe! Men det jeg mener er, du skal jo have fundet de sekunder, som endnu ikke er givet i point. Det kan du måske også lave med:
$resten_af_sekunder_som_skal_gemmes = $diff - ($_SESSION['login_point'] * 3600); Og så kan jeg godt lide at folk selv prøver og tænker lidt selv. :o)
(hehehe) Så nu vil jeg lieg have det HELT på det rene :P
I TOPPEN SÆTTER JEG: $diff = time() - $_SESSION['login_time']; if(($diff - ($_SESSION['login_point']*3600)) > 3600) { $_SESSION['login_point']+= floor(($diff - ($_SESSION['login_point']*3600))/3600); mysql_query("UPDATE community SET monter='$_SESSION[login_point]' WHERE brugernavn='$_SESSION[brugernavn]'") or die("Fejl: " . mysql_error()); }
I LOGIN SÆTTER JEG: $diff = time() - $_SESSION['login_time'] + $POINT_FRA_DATABASEN; $POINT_FRA_DATABASEN; Er så de point man allerede har (ect. 11 point)
I LOGUD SÆTTER JEG: $timeBack = $diff - ($_SESSION['login_point'] * 3600); update sql blabla set timeBack=$timeback where bruger blabla
Jeg ved ikke om det stemmer, det er dig som kan teste om det rent faktisk virker! :o)
$POINT_FRA_DATABASEN er en stave fejl. Det skulle være SEKUNDER, TIMEBACK
Synes godt om
Ny brugerNybegynder
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.