tjumsen Skrevet 14. januar 2014 Del Skrevet 14. januar 2014 jeg holder på med og lage meg timeliste . og jeg trenger litt hjelp til og regne sammen fra DB . jeg har denne koden . men det kommer ikke ut slik jeg hadde håpet på den kommer ut slik 15.75 , men skulle hatt den slik at den har hele timer som 16.15 isteden for 15.75 noen som kan hjelpe ? <?php include_once('db.php'); $result = mysql_query('SELECT difference FROM tid'); if (mysql_num_rows($result) > 0) { print '<ul>'; $sum = array(); // initialize while ($myrow = mysql_fetch_array($result)) { $sum[] = $myrow['difference']; // sum $salestotal= $myrow['difference']; } $sum = array_sum($sum); print "</ul>$sum\n"; } else { print "<h1>No results</h1>\n"; } ?> Lenke til kommentar
uGn Skrevet 14. januar 2014 Del Skrevet 14. januar 2014 (endret) Regner med at datatypen du nå bruker er int? Prøv: http://dev.mysql.com/doc/refman/5.0/en/time.html isteden Edit: 15.75 er jo ikke 16.15 men 15.45. Du kan også regne om minuttene via php-kode istedenfor å løse det i mysql. Timene vil jo alltid stemme, bare minuttene som må gjøres om (både på input og output) Endret 14. januar 2014 av uGn Lenke til kommentar
tjumsen Skrevet 14. januar 2014 Forfatter Del Skrevet 14. januar 2014 ok ,, kan du hjelpe meg med det ? Lenke til kommentar
tjumsen Skrevet 14. januar 2014 Forfatter Del Skrevet 14. januar 2014 Regner med at datatypen du nå bruker er int? Prøv: http://dev.mysql.com/doc/refman/5.0/en/time.html isteden Edit: 15.75 er jo ikke 16.15 men 15.45. Du kan også regne om minuttene via php-kode istedenfor å løse det i mysql. Timene vil jo alltid stemme, bare minuttene som må gjøres om (både på input og output) 5.15 + 5.15 + 5.45 = 16.15 Lenke til kommentar
Crowly Skrevet 14. januar 2014 Del Skrevet 14. januar 2014 (endret) I databasen lagrer du tidspunktene i ett datetime felt, så bruker du STR_TO_DATE() når du setter inn data INSERT INTO tid (jobb_start, jobb_slutt) VALUES( STR_TO_DATE('14.01.2014 08:00','%d.%m.%Y %H:%i'), STR_TO_DATE('14.01.2014 16:00','%d.%m.%Y %H:%i') )For å formatere dato og tid ut bruker du DATE_FORMAT() SELECT DATE_FORMAT(jobb_start,'%H:%i %d.%m.%Y') jstart, DATE_FORMAT(jobb_slutt,'%H:%i %d.%m.%Y') jstopp FROM tidFor å regne ut differansen mellom to tidspunkt bruk TIMESTAMPDIFF() SELECT TIMESTAMPDIFF(MINUTE,jobb_start,jobb_slutt) arbeidsminutter FROM tidAlternativt ta en titt på Datetime $start = new datetime('14.01.2014 08:00'); $slutt = new datetime('14.01.2014 16:00'); $diff = $slutt->diff($start); echo 'Jobb tid: '.$diff->h.' timer og '.$diff->i.' minutter'; Endret 14. januar 2014 av Crowly Lenke til kommentar
tjumsen Skrevet 14. januar 2014 Forfatter Del Skrevet 14. januar 2014 dette har jeg fått til . jeg trenger hjelp til og regne alle timene sammen etter på slik at det blir i timer og minuter . jeg har fått laget til den legge inn i database slik . men har problem med og kunne regne de sammen fra databasen . Lenke til kommentar
uGn Skrevet 14. januar 2014 Del Skrevet 14. januar 2014 'select * from tid' og past resultatet her. Lenke til kommentar
tjumsen Skrevet 14. januar 2014 Forfatter Del Skrevet 14. januar 2014 etter scripte jeg har lagt til her kommer dette 5.15 5.15 5.45 5.45 21.2 Lenke til kommentar
tjumsen Skrevet 14. januar 2014 Forfatter Del Skrevet 14. januar 2014 (endret) start_time end_time difference dag mnd 1500 2015 5.15 14 Januar 1500 2015 5.15 15 Januar 1500 2045 5.45 16 Januar 1500 2045 5.45 17 Januar dette er DB min Endret 14. januar 2014 av tjumsen Lenke til kommentar
Crowly Skrevet 15. januar 2014 Del Skrevet 15. januar 2014 (endret) mysql_* funksjonene er gamle, du bør ta i bruk mysqli_* eller ta en titt på PDO. http://www.youtube.com/phpacademy har mange gode videoer om slikt. Bør kunne gjøre noe slik <?php date_default_timezone_set('Europe/Oslo'); $db = mysqli_connect("localhost","brukernavn","passord","database"); if ($db){ $sql="SELECT DATE_FORMAT(start_time,'%d.%m.%Y %H:%i') st, DATE_FORMAT(end_time,'%d.%m.%Y %H:%i') et FROM tid ORDER BY start_time"; if (false !== ($result = mysqli_query($db, $sql))){ $total_tid = 0; while ($row = mysqli_fetch_assoc($result)){ // beregn differanse i antall sekunder, og legg til i total_tid $total_tid += strtotime($row['et']) - strtotime($row['st']); } mysqli_free_result($result); $timer = floor($total_tid / 3600); // trekk fra antall timer $total_tid -= $timer * 3600; $minutter = $total_tid / 60; echo 'Total arbeids tid er '.$timer.' timer og '.$minutter.' minutter'; } else echo 'Feil med database oppslag'; mysqli_close($db); } else echo 'Feil med tilkobling til databasen'; ?> Alternativt la basen gjør det meste av beregningen <?php $db = mysqli_connect("localhost","brukernavn","passord","database"); if ($db){ $sql="SELECT SUM(TIMESTAMPDIFF(MINUTE,start_time,end_time)) minutter FROM tid"; if (false !== ($result = mysqli_query($db, $sql))){ $row = mysqli_fetch_assoc($result); mysqli_free_result($result); $timer = floor($row['minutter'] / 60); $row['minutter'] -= $timer*60; echo 'Total arbeids tid er '.$timer.' timer og '.$row['minutter'].' minutter'; } else echo 'Feil med database oppslag'; mysqli_close($db); } else echo 'Feil med tilkobling til databasen'; ?> Alternativ 2: Gjør alt i basen SELECT FLOOR( xminutter /60 ) timer, (xminutter % FLOOR( xminutter /60 )) minutter FROM ( SELECT SUM( TIMESTAMPDIFF(MINUTE , start_time, end_time) ) xminutter FROM tid ) xtid Endret 15. januar 2014 av Crowly Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå