Avatar billede fbb Nybegynder
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 ;)
Avatar billede detox Nybegynder
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 />";
}
?>
Avatar billede fbb Nybegynder
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)
Avatar billede fbb Nybegynder
23. februar 2004 - 12:16 #3
opstilling:
id - dato - timer
Avatar billede detox Nybegynder
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).
Avatar billede fbb Nybegynder
23. februar 2004 - 12:49 #5
ok, vil jeg så gøre, men hvordan skaljeg hive det ud?..

Er rimlig usikker i det her.
Avatar billede detox Nybegynder
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
Avatar billede fbb Nybegynder
23. februar 2004 - 13:01 #7
ok... damn, hehe så skal min hjerne til at arbejde på sin fridag.. ;D..
Avatar billede detox Nybegynder
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
Avatar billede fbb Nybegynder
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.
Avatar billede detox Nybegynder
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 />";
}
Avatar billede detox Nybegynder
23. februar 2004 - 13:14 #11
Du skal selvfølgelig lige skifte 'tabel' ud med dit eget tabelnavn.
Avatar billede detox Nybegynder
23. februar 2004 - 13:15 #12
Hvad hedder tabellen i øvrigt?
Avatar billede fbb Nybegynder
23. februar 2004 - 13:15 #13
den hedder arbejde retter jeg selv, tester lige ;D
Avatar billede fbb Nybegynder
23. februar 2004 - 13:18 #14
Mange tak for hjælpen det virker bare perfekt, hvis du ligger et svar :D
Avatar billede fbb Nybegynder
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?
Avatar billede detox Nybegynder
23. februar 2004 - 13:32 #16
Nej, du behøver ikke lave et nyt spørgsmål. Jeg kigger lige på det.
Avatar billede fbb Nybegynder
23. februar 2004 - 14:18 #17
ok, lyder godt ;)
Avatar billede detox Nybegynder
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;
?>
Avatar billede detox Nybegynder
23. februar 2004 - 14:31 #19
Men du skal være opmærksom på at den ikke tager hensyn til årstallet!
Avatar billede fbb Nybegynder
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
Avatar billede detox Nybegynder
23. februar 2004 - 14:36 #21
Velbekommen
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

IT-JOB

Politiets Efterretningstjeneste

Forretningsanalytiker til PET's IT-afdeling

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Analytiker til Security Operations Center ved Cyberdivisionen

Capgemini Danmark A/S

Client Partner

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Applikationsarkitekt til stor applikationstransformation i Forsvaret