Avatar billede vivaa.dk Nybegynder
21. august 2007 - 20:02 Der er 20 kommentarer og
1 løsning

indsættelse af tidsperiode

Halløj derude

Jeg har PT et system hvor man kan indtaste timer minutter og sekunder på noget man har lavet på en bestemt tid.

Jeg har indtil nu haft det til at virke ved at lave en mktime($hours, $minuts, $seconds, 0, 0, 0); og så sat det ind.

Og når jeg har skulle kalde den anden vej har jeg skrevet.
$timeSum = mktime($t,$m,$s,0,0,0);

Men problemet er nu at jeg gerne skulle kunne udskrive en totaltid i år, måneder, døgn, timer, minutter og sekunder og det kan jeg ikke rigtigt få til at køre.

Man skal kunne se hvor lang tid man har brugt på at udføre noget arbejde og så nytter det ikke rigtigt at måneder har forskellige antal dage som mktime() jo gør det til.

Samtidig vil jeg også godt have muligheden for at se total antal timer fx. som 230 timer istedet for x antal døgn og x antal timer.

Hvordan vil man bedst muligt indsætte en sådan en tidsperiode?

Jeg har overvejet lidt om det bedste ville være at lave en omregner, der regner timer, minutter og sekunder om til sekunder når man indtaster sine tider og så regne den anden vej når man skal kalde ud. Jeg synes dog det virker lidt som en hovsa løsning, jeg ved ikke hvad man normalt gør i sådan et tilfælde?

I så fald sekunder er den bedste løsning, kan nogen så opstille omregningen fra timer, minutter og sekunder? Synes ikke rigtig jeg kan få noget til at virke :S

Jeg håber i forstår meningen i dette.. Det var lidt svært at forklare :)
Avatar billede vivaa.dk Nybegynder
21. august 2007 - 20:04 #1
det skal nok lige siges at dataene gemmes i en MySQL databse
Avatar billede mcardle Nybegynder
21. august 2007 - 20:05 #2
$totaltid = date("d-m-Y H:i:s", $timeSum);

//mcardle
Avatar billede mcardle Nybegynder
21. august 2007 - 20:09 #3
For at se antal timer.:

<?php

$en_time = 60 * 60;
$antal_timer = $timeSum / $en_time;
echo round($antal_timer);

?>

//mcardle
Avatar billede vivaa.dk Nybegynder
21. august 2007 - 20:15 #4
Ok.. indsætter mktime egentlig i sekunder?
Avatar billede vivaa.dk Nybegynder
21. august 2007 - 21:47 #5
Hmm den passer ikke.

Ved en af mine brugere skriver den pludselig 30 døgn og jeg ved han kun har ca. 18 timer :S
Avatar billede vivaa.dk Nybegynder
21. august 2007 - 21:48 #6
har følgene kode:

$get_timeSum = mysql_query("SELECT tid FROM tider WHERE userid = '$userid' AND tid != 0");
$m = 0;
while($time = mysql_fetch_array($get_timeSum)) {
    $d += date('d', $time['tid']);
    $t += date('H', $time['tid']);
    $m += date('i', $time['tid']);
    $s += date('s', $time['tid']);
}
$timeSum = mktime($t,$m,$s,0,0,0);
if(date("d", $timesum) > 0)
    $daySum = date("j", $timeSum)." Døgn<br />";
$timeSum = date("H:i:s", $timeSum);
Avatar billede vivaa.dk Nybegynder
21. august 2007 - 21:51 #7
Hvis jeg sætter
$timeSum = mktime($t,$m,$s, $d,0,0), får man pludselig 1 dag og 0 timer, hvilket ihvertfald heller ikke passer :S
Avatar billede mcardle Nybegynder
21. august 2007 - 22:09 #8
Prøv evt. den her kode.:

<?php

$getTimeSum = mysql_query("SELECT tid FROM tider WHERE userid = '$userid' AND tid != '0'");
$time = mysql_fetch_array($get_timeSum);

$en_time = 60 * 60;
$antal_timer = $time["tid"] / $en_time;

echo round($antal_timer);

?>
Avatar billede mcardle Nybegynder
21. august 2007 - 22:09 #9
Du henter jo kun een ud db'en.

//mcardle
Avatar billede vivaa.dk Nybegynder
21. august 2007 - 22:13 #10
nej

Jeg henter jo alle personens tidsregistreringer ud
Avatar billede mcardle Nybegynder
21. august 2007 - 22:30 #11
Prøv denne her:

<?php

$get_timeSum = mysql_query("SELECT tid FROM tider WHERE userid = '$userid' AND tid != 0");
while($time = mysql_fetch_array($get_timeSum)) {
    $d[] = date('d', $time['tid']);
    $t[] = date('H', $time['tid']);
    $m[] = date('i', $time['tid']);
    $s[] = date('s', $time['tid']);
}

$days = array_sum($d);
$hours = array_sum($t);
$minutes = array_sum($m);
$seconds = array_sum($s);

$timeSum = mktime($hours,$minutes,$seconds,0,0,0,-1);

if(date("d", $timeSum) > 0){
    $daySum = date("j", $timeSum)." Døgn<br />";
    $timeSum = date("H:i:s", $timeSum);
}

?>

//mcardle
Avatar billede mcardle Nybegynder
21. august 2007 - 22:31 #12
Mener nemlig jeg før har oplevet problemer med $værdi += $array["værdi"].

//mcardle
Avatar billede vivaa.dk Nybegynder
21. august 2007 - 22:40 #13
hmm det giver samme resultat..

30 døgn hos en person der ikke engang har 1 døgn
Avatar billede vivaa.dk Nybegynder
21. august 2007 - 22:41 #14
Har prøvet at udskrive tiderne og fået:

6 timer
745 min
307 sekunder

og det får den med mktime til at være 30 døgn og 0 timer og 0 min og 0 sek
Avatar billede vivaa.dk Nybegynder
21. august 2007 - 22:42 #15
har så forsøgt at lave ud udregning af disse tider manuelt, hvilket jeg så heller ikke kunne få til at virke :S
Avatar billede vivaa.dk Nybegynder
21. august 2007 - 22:57 #16
745 / 60 = 12,41 <- dvs 12 timer og 0,41

0,41 * 60 = 24,6 <- dvs 24 min og 0,6

0,6 * 60 = 36 sek

altså 12 timer 24 min og 36 sek

307 / 60 = 5,12 <-- 5 min og 0,11
0,11 * 60 = 7,2 sekunder

Dvs samlet set er der altså  18 timer, 29 min og 33 sek

Hvordan får jeg lavet den udregning i PHP?

Har lidt bøvl med at få modulus til at virke som jeg vil..
Avatar billede mcardle Nybegynder
21. august 2007 - 22:58 #17
Så skulle det virke.:

<?php

$get_timeSum = mysql_query("SELECT tid FROM tider WHERE userid = '$userid' AND tid != 0");
while($time = mysql_fetch_array($get_timeSum)) {
    $totalTime[] = $time["tid"];
}

$days = date("d",array_sum($totalTime));
$hours = date("H",array_sum($totalTime));
$minutes = date("i",array_sum($totalTime));
$seconds = date("s",array_sum($totalTime));

$daySum = date("j", $totalTime) . " Døgn <br />";
$timeSum = date("H:i:s", $totalTime);

?>

//mcardle
Avatar billede mcardle Nybegynder
21. august 2007 - 23:02 #18
$daySum = date("j", $totalTime) . " Døgn <br />";
$timeSum = date("H:i:s", $totalTime);

Skal være:

$daySum = date("j", array_sum($totalTime)) . " Døgn <br />";
$timeSum = date("H:i:s", array_sum($totalTime));
Avatar billede vivaa.dk Nybegynder
23. august 2007 - 19:06 #19
også med denne metode giver det 1 døgn 0 timer, 0 minutter og 0 sekunder..
Jeg tror vi skal arbejde i at udføre regnestykket fra før.

Jeg kan godt regnestykket, men jeg kan ikke finde ud af at stille det op i PHP :S
Avatar billede vivaa.dk Nybegynder
23. august 2007 - 19:14 #20
ahr havde lavet en fejl..

Men nu står der 4 døgn og 10 timer.. Hvilket under ingen omstændigheder passer.
Der er max 23-25 timer :S
Avatar billede vivaa.dk Nybegynder
16. marts 2008 - 18:42 #21
lukker bare her, den kom ikke til at virke rigtigt..
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