Avatar billede madseksperten Nybegynder
27. marts 2015 - 16:21 Der er 3 kommentarer og
1 løsning

loop gennen timer i løbet af en dag

Hejsa

Jeg er i gang med at udregne hvor meget jeg tjener i løbet af en dag. Pointen på sigt er at jeg kan vælge en start_dato til slut_dato, og se hvor meget jeg har tjent i den give periode. Men til at starte med har jeg prøvet at udregne hvor mange timer jeg arbejder, når jeg vælger en start_tid og en slut_tid. Det ville jo være nemt hvis jeg tjente det samme i timen hele tiden, men det gør jeg ikke.

Fra 8.45 - 18.00 -> 146 kr
Fra 18.00 - 22.00 -> 204 kr
Fra 22.00 - 23.00 -> 248 kr
Lørdag og søndag tjener jeg 248 kr i timen uanset tidspunktet. Derfor tænker jeg at jeg skal have noget dato med indover på et tidspunkt. Meningen er at jeg skal kunne indsætte det i en database, men for en start prøver jeg at få mit php til at virke.

Min kode indtil videre ser således ud:

HTML:

<html>

<head>
<title>| Choose Work Time |</title>
</head>

<body>

    <p>Choose Your Work TIme</p>
    <form method='post'>
        <select name="s1" required>
        <option>Choose Start Time</option>
            <option value="8.45">8.45</option>
            <option value="9.00">9.00</option>
            <option value="9.15">9.15</option>
            <option value="9.30">9.30</option>
            <option value="9.45">9.45</option>
            <option value="10.00">10.00</option>
            <option value="10.15">10.15</option>
            <option value="10.30">10.30</option>
            <option value="10.45">10.45</option>
            <option value="11.00">11.00</option>
            <option value="11.15">11.15</option>
            <option value="11.30">11.30</option>
            <option value="11.45">11.45</option>
            <option value="12.00">12.00</option>
            <option value="12.15">12.15</option>
            <option value="12.30">12.30</option>
            <option value="12.45">12.45</option>
            <option value="13.00">13.00</option>
            <option value="13.15">13.15</option>
            <option value="13.30">13.30</option>
            <option value="13.45">13.45</option>
            <option value="14.00">14.00</option>
            <option value="14.15">14.15</option>
            <option value="14.30">14.30</option>
            <option value="14.45">14.45</option>
            <option value="15.00">15.00</option>
            <option value="15.15">15.15</option>
            <option value="15.30">15.30</option>
            <option value="15.45">15.45</option>
            <option value="16.00">16.00</option>
            <option value="16.15">16.15</option>
            <option value="16.30">16.30</option>
            <option value="16.45">16.45</option>
            <option value="17.00">17.00</option>
            <option value="17.15">17.15</option>
            <option value="17.30">17.30</option>
            <option value="17.45">17.45</option>
            <option value="18.00">18.00</option>
            <option value="18.15">18.15</option>
            <option value="18.30">18.30</option>
            <option value="18.45">18.45</option>
            <option value="19.00">19.00</option>
            <option value="19.15">19.15</option>
            <option value="19.30">19.30</option>
            <option value="19.45">19.45</option>
            <option value="20.00">20.00</option>
            <option value="20.15">20.15</option>
            <option value="20.30">20.30</option>
            <option value="20.45">20.45</option>
            <option value="21.00">21.00</option>
            <option value="21.15">21.15</option>
            <option value="21.30">21.30</option>
            <option value="21.45">21.45</option>
            <option value="22.00">22.00</option>
            <option value="22.15">22.15</option>
            <option value="22.30">22.30</option>
            <option value="22.45">22.45</option>
            <option value="23.00">23.00</option>
            <option value="23.15">23.15</option>
            <option value="23.30">23.30</option>
        </select>
        <select name="s2" required>
            <option>Choose End Time</option>
            <option value="8.45">8.45</option>
            <option value="9.00">9.00</option>
            <option value="9.15">9.15</option>
            <option value="9.30">9.30</option>
            <option value="9.45">9.45</option>
            <option value="10.00">10.00</option>
            <option value="10.15">10.15</option>
            <option value="10.30">10.30</option>
            <option value="10.45">10.45</option>
            <option value="11.00">11.00</option>
            <option value="11.15">11.15</option>
            <option value="11.30">11.30</option>
            <option value="11.45">11.45</option>
            <option value="12.00">12.00</option>
            <option value="12.15">12.15</option>
            <option value="12.30">12.30</option>
            <option value="12.45">12.45</option>
            <option value="13.00">13.00</option>
            <option value="13.15">13.15</option>
            <option value="13.30">13.30</option>
            <option value="13.45">13.45</option>
            <option value="14.00">14.00</option>
            <option value="14.15">14.15</option>
            <option value="14.30">14.30</option>
            <option value="14.45">14.45</option>
            <option value="15.00">15.00</option>
            <option value="15.15">15.15</option>
            <option value="15.30">15.30</option>
            <option value="15.45">15.45</option>
            <option value="16.00">16.00</option>
            <option value="16.15">16.15</option>
            <option value="16.30">16.30</option>
            <option value="16.45">16.45</option>
            <option value="17.00">17.00</option>
            <option value="17.15">17.15</option>
            <option value="17.30">17.30</option>
            <option value="17.45">17.45</option>
            <option value="18.00">18.00</option>
            <option value="18.15">18.15</option>
            <option value="18.30">18.30</option>
            <option value="18.45">18.45</option>
            <option value="19.00">19.00</option>
            <option value="19.15">19.15</option>
            <option value="19.30">19.30</option>
            <option value="19.45">19.45</option>
            <option value="20.00">20.00</option>
            <option value="20.15">20.15</option>
            <option value="20.30">20.30</option>
            <option value="20.45">20.45</option>
            <option value="21.00">21.00</option>
            <option value="21.15">21.15</option>
            <option value="21.30">21.30</option>
            <option value="21.45">21.45</option>
            <option value="22.00">22.00</option>
            <option value="22.15">22.15</option>
            <option value="22.30">22.30</option>
            <option value="22.45">22.45</option>
            <option value="23.00">23.00</option>
            <option value="23.15">23.15</option>
            <option value="23.30">23.30</option>
        </select>
        <input type="submit" name="submit" Value="Submit">
    </form>   
</body>
</html>

<?php

if (isset($_POST['submit'])) {

    echo "Started time : " . $_POST['s1'] . "<br/>";
    echo "End time : " . $_POST['s2'] . "<br/>" ;

    $start_time = $_POST['s1'];
    $end_time = $_POST['s2'];

    $early_time_salary = 146;
    $middle_time_salary = 204;
    $late_time_salary = 244;

    $hours_worked = $end_time - $start_time;
    $middle_time_hours = $end_time - 5;
   
    echo "Total hours worked :  ".$hours_worked."<br>";

jeg prøvede at lave nogle if/else statements, men det virker ikke rigtigt:

  if($hours_worked <= 18.00) {
        echo $hours_worked." timer er arbejdet før kl 18.00"."<br><br>";
    }
        else {
            echo "fungerer ikke";
        }
    if($middle_time_hours >= 18.00 && <= 22.00) {
        echo $middle_time_hours." er der arbejdet mellem 18 og 22";
    }     else {
            echo "fungerer ikke";
    }

jeg har startet på en foreach loop, men ved ikke helt hvad jeg skulle gøre med den. Jeg fandt det på nettet, som jeg evt kunne bruge?:

$begin = new DateTime( 'YYYY-MM-DD h:I' );
$end = new DateTime( 'YYYY-MM-DD h:I' );


$interval = new DateInterval('P1I');
$daterange = new DatePeriod($begin, $interval ,$end);

foreach($daterange as $date){
    // noget kode
}

Har i en ide til hvordan jeg kan gøre det?


Mvh mads
28. marts 2015 - 11:08 #1
Der er nogen der altid skal gøre sig kloge og svare på noget andet end det der spørges om.....

Jeg prøver at forstå noget nærmere hvad du vil for at kunne foreslå hvordan det kunne gøres.  Har jeg forstået dig rigtigt, at du vil kunne forespørge en database hvad du har tjent på forskellige dage eller måske tidsrum? 

I så tilfælde, hvad jeg nok ville have gjort var at gemme de rå grunddata i databasen, for hver arbejdsdag dato, starttid, og sluttid.  I stedet for en drabelig input med over 100 options (som ikke engang indeholder dato) ville jeg nok lave en input med tre felter, dato, starttid, og sluttid, udfyldt med tal.  Efter check for format og tilladte værdier indsættes værdierne i databasen.

Når jeg så vil finde indkomsten for en given dag forespørger jeg databasen for de rå data for den dag og så i php ved hjælp af dato og tidsfunktioner fastslår ugedagen og, hvor det er relevant, tidsintervallerne og så ganger med satserne.

Men det kan være det er mig der er tosset.
Avatar billede madseksperten Nybegynder
28. marts 2015 - 14:45 #2
Hej Christian. Mange tak for dit svar. Det er korrekt forstået at det er det jeg vil. Jeg tænkte først at få min php til at virke, og så derefter databasen. Men efter det du har skrevet kan jeg se der er mange ting jeg ikke har taget hensyn til.

Sådan som det skulle fungere er som følgende:

1: Man tilføjer en arbejdsdag til sin database, fx(tirsdag d.01.12-2015 fra kl 15.45 - 23.00)
2: man har en side hvor man kan se hvad man har tjent den pågældende dag, ved at tage det ud fra mysql databasen

På sigt vil jeg også gerne have et kalendersystem så jeg eks kan se hvad har jeg tjent fra 01.01-2015 - 01.04-2015.

Men som start skal jeg have lavet så jeg tilføjer en 'dag', 'dato', 'arbejdsstart', 'arbejdslut'.

Det der er svært er at det ikke er samme timeløn iløbet af en dag synes jeg.

Håber du kan hjælpe mig på vej:)

Mvh Mads.
28. marts 2015 - 20:58 #3
Jeg vil være udenfor rækkevidde fra i morgen tidlig og et stykke tid, og jeg når ikke at gøre mere ved dette spørgsmål.  Lad os håbe på input fra anden side.  Ellers må vi kikke på det engang i fremtiden.
Avatar billede madseksperten Nybegynder
30. marts 2015 - 11:52 #4
Jeg er startet lidt forfra, så jeg lukker spørgsmålet. Fandt ud af det skulle gøres på en anden måde :-/
mvh Mads
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

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