Avatar billede snorres Nybegynder
02. juli 2004 - 15:00 Der er 18 kommentarer og
1 løsning

omregne til tid

Jeg har et tal i min database der bliver opdateret med 5 hver gang der går 5 min inde i et "spil" jeg har lavet.. (starter på 0)

så når man har spillet i 20 min står der 20 i feltet i databasen og når man har spillet i 2 timer står der 120

Nu vil jeg godt have sådan at der på siden står hvor lang tid han har spillet i formatet 04:40 Tue
Altså TIMER:MIN DAG

hver gang der er gået en uge skal den nulstilles :)

Håber jeg har forklaret mig godt nok, og at nogen kan se hvad jeg mener :) og måske fikse det :D
Avatar billede jaw Nybegynder
02. juli 2004 - 15:19 #1
Du kan jo bruge noget alm. regning hvis du vil:

$tal = 245;  //fra db f.eks.

$udregning = $tal / 60;

//timer
$timer = round($udregning);

//minutter
$minutter = ($udregning - $timer) * 60;


echo "Du har været online i " . $timer . " timer og " . $minutter . " minutter";

Det med at slette er jo så bare når tallet i db'en bliver større end 10800 hvilket svarer til antallet af minutter på 1 uge...
Avatar billede jaw Nybegynder
02. juli 2004 - 15:21 #2
Det med "TUE" som du skriver er det den dag som brugeren var online først, eller den dag han kigger på siden eller hvilken dag er det?
Avatar billede jaw Nybegynder
02. juli 2004 - 16:05 #3
Kom lige til at se noget. For det første, skal funktionen round() udskiftes med floor() ellers risikerer vi den runder op, og derved måske får - (minus) antal minutter. Derudover, vil denne her også returnere antallet af dage hvis du vil have det med:

$tal = 245;  //fra db f.eks.

$udregning = $tal / 60;

//dage
if($udregning > 24) {
    $dage = $udregning / 24;
    $dage = floor($dage);
  $udregning = $udregning - ($dage * 24);
}

if(!$dage) {
    $dage = 0;
}

//timer
$timer = floor($udregning);

//minutter
$minutter = ($udregning - $timer) * 60;
if ($minutter < 10 ){
  $minutter = "0" . $minutter;
}

echo "Du har været online i " . $dage . " dage " . $timer . " timer og " . $minutter . " minutter<br>";
Avatar billede snorres Nybegynder
02. juli 2004 - 16:22 #4
hmm ja ups fik det vidst ikke forklaret godt nok så :)
Tue er den dag det er ingame :)
Hver gang man laver noget i spillet tager det mellem 5 min og 1 time, og så går
$TidInGame 1 op for hvert minut det tager :)
så hvis der er gået 7840 min
så regner den frem fra 00:00 mon med 5 min af gangen
altså 7840/60 (130) og af det tager man så /24 altså er det på dag 5, det vil sige  ca 10:00 fredag :)

er i med?
(lidt mere kompliceret end i først har antaget kan jeg se hehe)
Avatar billede jaw Nybegynder
02. juli 2004 - 16:26 #5
Hmm, måske forstår jeg, måske ikke... Men du skriver jo selv regnestykket, så kan du vel bare tilpasse det ?
Avatar billede snorres Nybegynder
02. juli 2004 - 16:52 #6
nej, har ingen anelse om hvordan jeg skal gøre...
jeg ku sefølig skrive
if ($TidInGame == 5) {$tid == "00:05 Mon";}
elseif ($TidInGame == 10 ($tid == "00:10 Mon";}
helt op til
elseif ($TidInGame == 10800 ($tid == "24:00 Sun";}
men det er jo en hel del elseif's, så tænkte det må kunne gøres bedre ;D

håber jeg gjorde det klart nu :D:D
Avatar billede snorres Nybegynder
02. juli 2004 - 16:53 #7
sefølig kun 1 = efter $tid...
Avatar billede jaw Nybegynder
02. juli 2004 - 17:19 #8
Hmm, ok... Men så tror jeg det her kan være en kandidat:

<?PHP
$tidingame = 2878;

$dag = "mon";

$udregning = $tidingame / 60;

//dage
if($udregning > 24) {
    $dage = $udregning / 24;
    $dage = floor($dage);
    $udregning = $udregning - ($dage * 24);
}
if(!$dage || $dage == 0) {
    $ugedag = "MON";
} elseif($dage <= 1) {
    $ugedag = "TUE";
} elseif($dage <= 2) {
    $ugedag = "WED";
} elseif($dage <= 3) {
    $ugedag = "THU";
} elseif($dage <= 4) {
    $ugedag = "FRI";
} elseif($dage <= 5) {
    $ugedag = "SAT";
} elseif($dage <= 6) {
    $ugedag = "SUN";
} else {
    echo "DER ER GÅET MERE END 1 UGE OG NU SKAL DER SLETTES!!!";
    exit;
}

//timer
$timer = floor($udregning);
if($timer < 1) {
    $timer = "00";
} elseif ($timer < 10) {
    $timer = "0" . $timer;
}

//minutter
$minutter = ($udregning - $timer) * 60;
if($minutter < 1) {
    $minutter = "00";
} elseif($minutter < 10) {
    $minutter = "0" . $minutter;
}

echo $timer . ":" . $minutter . " " . $ugedag;
?>
Avatar billede jaw Nybegynder
02. juli 2004 - 17:22 #9
$dag = "mon"; <-- den linie er overflødig, den røg ind i farten :)
Avatar billede snorres Nybegynder
02. juli 2004 - 19:38 #10
ok, syntes os den så lidt overflødig ud :D
For fedt, det virker :D
tusind tak :D
Avatar billede snorres Nybegynder
02. juli 2004 - 19:41 #11
Foresten, kan du så importere sådan at hver gang der er gået en dag så kører:
$sql2 = "UPDATE LoveHinaUSERS SET Days = $Days+1 WHERE ID = '$ID'";
og hver gang der er gået en uge så kører:
$sql = "UPDATE LoveHinaUSERS SET TimeInGame = 0 WHERE ID = '$ID'";
Avatar billede jaw Nybegynder
03. juli 2004 - 00:59 #12
Det kan man ikke med PHP. Du skal have noget (en bruger) der kører scriptet for at du kan update.

Alternativt skal du ud i et cron-job (scheduled task) der kører det for f.eks. hvert døgn, men det kræver så du har en computer af en art stående tændt på det tidspunkt hver dag...
Avatar billede jaw Nybegynder
03. juli 2004 - 01:00 #13
Og tak for point btw. :)
Avatar billede snorres Nybegynder
03. juli 2004 - 13:15 #14
nej nej, mener at når der ifølge scriptet er gået et døgn, f.eks. hver gang den rammer 2400 så skal den kører $sql2 = "UPDATE LoveHinaUSERS SET Days = $Days+1 WHERE ID = '$ID'";
og hver gang der rammer 2400 sat så kører den
$sql = "UPDATE LoveHinaUSERS SET TimeInGame = 0 WHERE ID = '$ID'";
er du med?
Avatar billede jaw Nybegynder
03. juli 2004 - 13:33 #15
if($tidingame > 2400) {
  //kør det du vil
}

...men så den kan jo godt risikere at komme op på 5000 f.eks. før den bliver resat.
Avatar billede snorres Nybegynder
03. juli 2004 - 17:53 #16
hmm hva så hvis scriptet bliver loaded 2 gange imens kl. er 2400 :S

og hvordan bruger jeg reset funktionen så`?
Avatar billede snorres Nybegynder
03. juli 2004 - 17:54 #17
måske jeg bare skulle slette den der hedder
$days i databasen og så bruge det der script til at regne det ud fra det store tal`? og så bare ikke nulstille det??
Avatar billede jaw Nybegynder
03. juli 2004 - 17:56 #18
Du kan vel:

if($tidingame > 2400) {
  $sql = "UPDATE LoveHinaUSERS SET TimeInGame = '0' WHERE ID = '$ID'";
  mysql_query($sql);
}

?
Avatar billede snorres Nybegynder
07. juli 2004 - 23:16 #19
naaah for så nå det jo ikke blive ret meget mere end mandag ;)

Men har fundet en løsning, thx man ;)
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