23. februar 2004 - 09:22
Der er
20 kommentarer og 1 løsning
Uger og mdr udregning
Hej, jeg skal lave et lille system til mig selv, så jeg kan regne mine timer sammen. Fx. hvis jeg fx, skriver: 1/1 - 5 timer 3/1 - 13 timer 11/1 - 5 timer 19/2 - 4 timer 22/2 - 10 timer Så skal den udskrive ca sådan her: Uge 1 = 18 timer Uge 2 = 5 timer Uge 8 = 14 timer Hele jan.: 23 timer Hele fed.: 14 timer Håber i forstår. Jeg skal ikke bruge en kalender, men en ting der kan dele det op i uger og i mdr. Plz hjælp ;)
Annonceindlæg tema
Cloud & AI
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
23. februar 2004 - 12:07
#1
Nu fremgår det ikke, hvor du skriver: 1/1 - 5 timer 3/1 - 13 timer 11/1 - 5 timer 19/2 - 4 timer 22/2 - 10 timer men er det fx en fil (timer.txt), kan du gøre det i den her stil: <?php error_reporting(E_ALL ^ E_NOTICE); $aar = 2004; $ind = file_get_contents('timer.txt'); preg_match_all("/(\d{1,2})\/(\d{1,2}) - (\d*)/", $ind, $match); for($i=0;$i<count($match[1]);$i++) { $ugenr = date('W', mktime(0,0,0,$match[2][$i],$match[1][$i],$aar)); $maanednavn = date('M', mktime(0,0,0,$match[2][$i],$match[1][$i],$aar)); $uge[$ugenr] += $match[3][$i]; $maaned[$maanednavn] += $match[3][$i]; } foreach($uge as $nr => $timer) { echo "Uge: ".$nr." = ".$timer." timer<br />"; } foreach($maaned as $navn => $timer) { echo "Hele ".$navn.".: ".$timer." timer<br />"; } ?>
23. februar 2004 - 12:14
#2
Havde tænk på en MySQL database, da jeg ikke kan finde ud af txt database, (selv mine fejl)
23. februar 2004 - 12:16
#3
opstilling: id - dato - timer
23. februar 2004 - 12:47
#4
I mysql bliver det hele meget lettere, hvis du bruger et felt af typen DATE eller DATETIME til at opbevare dine datoer i. I så fald tror jeg næsten du kan lave udtrækket med uger og måneder direkte i din forespørgsel. Så gør dig selv den tjeneste at bruge fx DATE (format: YYYY-MM-DD).
23. februar 2004 - 12:49
#5
ok, vil jeg så gøre, men hvordan skaljeg hive det ud?.. Er rimlig usikker i det her.
23. februar 2004 - 12:59
#6
Med fx ugerne kan du lave udtrækket sådan: SELECT week(dato, 3) AS uge, sum(timer) AS timer FROM tabel GROUP BY uge
23. februar 2004 - 13:01
#7
ok... damn, hehe så skal min hjerne til at arbejde på sin fridag.. ;D..
23. februar 2004 - 13:03
#8
Månedsvis, klarer du sådan her: SELECT month(dato) AS maaned, sum(timer) AS timer FROM tabel GROUP BY maaned
23. februar 2004 - 13:06
#9
hmm du må hjælpe mig lidt mere, jeg forstår ikke helt hvordan jeg så for den til at udskrive, du må undskylde jeg er lidt dum i det her.
23. februar 2004 - 13:13
#10
Skulle kunne gøres sådan: $month = array(1=>'jan','feb','mar','apr','maj','jun','jul','aug','sep','okt','nov','dec'); $res = mysql_query("SELECT week(dato) AS uge, sum(timer) AS timer FROM tabel GROUP BY uge") or die(mysql_error()); while ($row = mysql_fetch_assoc($res)) { echo "Uge $row[uge]: $row[timer]<br />"; } $res = mysql_query("SELECT month(dato) AS maaned, sum(timer) AS timer FROM tabel GROUP BY maaned") or die(mysql_error()); while ($row = mysql_fetch_assoc($res)) { echo "Hele ".$month[$row['maaned']].": $row[timer]<br />"; }
23. februar 2004 - 13:14
#11
Du skal selvfølgelig lige skifte 'tabel' ud med dit eget tabelnavn.
23. februar 2004 - 13:15
#12
Hvad hedder tabellen i øvrigt?
23. februar 2004 - 13:15
#13
den hedder arbejde retter jeg selv, tester lige ;D
23. februar 2004 - 13:18
#14
Mange tak for hjælpen det virker bare perfekt, hvis du ligger et svar :D
23. februar 2004 - 13:25
#15
Ved ik om du "gider" hjælpe mig med den her eller om jeg skal oprette et nyt spm. Men sad og tænkte på, ville godt have uge til at se sådan her ud: Uge 2: 11/1 - 2 timer 12/1 - 5 timer uge 4: 20/1 - 6 timer Uge 9: 23/3 - 1 timer Ved ikke om det er nemt eller svært?
23. februar 2004 - 13:32
#16
Nej, du behøver ikke lave et nyt spørgsmål. Jeg kigger lige på det.
23. februar 2004 - 14:18
#17
ok, lyder godt ;)
23. februar 2004 - 14:28
#18
Det var faktisk lidt kringlet, men her er hvad jeg kom frem til (så må du selv lege med formateringen): <? require 'db.php'; // Forbindelse til databasen $month = array(1=>'jan','feb','mar','apr','maj','jun','jul','aug','sep','okt','nov','dec'); $res = mysql_query("select week(dato) uge, sum(timer) timer, date_format(dato, '%d/%m') dansk from arbejde group by dansk order by dato") or die(mysql_error()); $antal = mysql_num_rows($res); $out = "<table>"; $i = 0; $temp = 0; while ($i<$antal) { if ($temp != mysql_result($res,$i,'uge')) { $out .= "<tr><td style='text-align: center; font-weight: bold; border: thin solid blue;' colspan='2'>Uge: ".mysql_result($res,$i,'uge')."</td></tr>"; } $out .= "<tr><td style='border: thin solid blue;'>".mysql_result($res,$i,'dansk')."</td><td style='border: thin solid blue;'>".mysql_result($res,$i,'timer')." timer</td></tr>"; $temp = mysql_result($res,$i,'uge'); $i++; } $out .= "</table><table><tr><th colspan='2'>Måneder</th></tr>"; $res = mysql_query("SELECT month(dato) AS maaned, sum(timer) AS timer FROM arbejde GROUP BY maaned") or die(mysql_error()); while ($row = mysql_fetch_assoc($res)) { $out .= "<tr><td style='border: thin solid blue;'>Hele ".ucfirst($month[$row['maaned']]).":</td><td style='border: thin solid blue;'>$row[timer] timer</td></tr>"; } $out .= "</table>"; echo $out; ?>
23. februar 2004 - 14:31
#19
Men du skal være opmærksom på at den ikke tager hensyn til årstallet!
23. februar 2004 - 14:32
#20
ok tak for det, det virker jo bare.. nulstiller i det nye år, så passer fint nok.. Mange tak for hjælpen
23. februar 2004 - 14:36
#21
Velbekommen
Vi tilbyder markedets bedste kurser inden for webudvikling