Opzet tijdsverantwoording systeem

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ventilatiesysteem Productontwikkelaar HBO WO Verwa

Samengevat: Zij bieden flexibele ventilatiematerialen, geluidsdempers, rookgasafvoer producten en industrieslangen. Ben jij een technisch productontwikkelaar? Heb jij ervaring met het ontwikkelen van nieuwe producten? Vaste baan: Technisch Productontwikkelaar HBO WO €3.000 - €4.000 Zij bieden een variëteit aan flexibele ventilatiematerialen, geluiddempers, rookgasafvoer producten, industrieslangen en ventilatieslangen voor de scheepsbouw. Met slimme en innovatieve materialen zorgen wij voor een gezonde en frisse leefomgeving. Deze werkgever is een organisatie die volop in ontwikkeling is met hardwerkende collega's. Dit geeft goede ontwikkelingsmogelijkheden. De branche van dit bedrijf is Techniek en Engineering. Functie: Voor de vacature als Technisch Productontwikkelaar Ede Gld HBO WO ga

Bekijk vacature »

John van der Linden

John van der Linden

06/07/2010 10:52:18
Quote Anchor link
Hoi,


Ik ben bezig met het maken van een tijdsverantwoording systeem.
Nu had ik alleen time velden in mijn database, maar ben er achter gekomen dat dat niet handig is, en dat het datetime velden moeten zijn ivm berekeningen.

Nu heb ik alleen problemen met het invoeren van de juiste datum tijd notatie.
(mogelijk past deze vraag beter in het php forum, maar weet het niet zeker)

Het idee is dat een gebruiker de tijd in en uit moet invoeren :

Maandag 5 jun - tijd in : 10:00 tijd uit : 16:00
Dinsdag 6 jun - tijd in : 10:00 tijd uit : 16:00

Ik krijg het wel voor elkaar op de datum en tijden appart in de database te voeren.

Maar nu heb ik van de tijdsvelden een timedate veld gemaakt, hoe krijg ik hier de juiste waarde in ???? Maw....nu moet er 20100705 10:00:00 ingevoerd worden...hoe krijg ik dit voor elkaar...

En doe ik het zo wel goed ?
Gewijzigd op 06/07/2010 10:53:04 door John van der Linden
 
PHP hulp

PHP hulp

05/05/2024 18:58:06
 
Justin S

Justin S

06/07/2010 11:10:27
Quote Anchor link
Datetime-velden hanteren de volgende syntax:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
YYYY-MM-DD HH:MM:SS


dus bijvoorbeeld:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2010-07-07 11:05:30


Je moet dus zorgen dat dit op een eenzelfde wijze in de database wordt gezet:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
function formatDate($sDate)
        {
            return date('Y-m-d H:i:s', strtotime($sDate));
        }

// Deze code returned de string in de juiste waarde zodat je deze in de database in kan voeren.


Echter als je met de tijd wil rekenen kan je hier het beste een timestamp van maken met de functie strtotime() en dan als je bijvoorbeeld het aantal uur en minuten wil weten, kan je de inkloktijd van de uitkloktijd aftrekken en dan de uitkomst daarvan weer omzetten naar tijd dmv. bovengenoemde functie echter moet je dan gewoon de return value aanpassen naar bijvoorbeeld:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
function formatECDate($sTimestamp)
        {
            return date('H:i', strtotime($sTimestamp));
        }


Edit: Zie post Blanche
Gewijzigd op 06/07/2010 13:02:43 door Justin S
 
Joren de Wit

Joren de Wit

06/07/2010 11:30:25
Quote Anchor link
Gebruik voor beide tijdstippen (zowel in- als uitklokken) altijd de volledige DATETIME velden. Zo voorkom je ten eerste al problemen als een dienst in twee verschillende dagen valt.

Zoals Justin al zegt kun je met PHP gewoon zorgen dat het tijdstip in het formaat 'yyyy-mm-dd hh:mm:ss' komt te staan waarna je het makkelijk in kunt voeren in de database. Alle berekeningen doe je vervolgens met behulp van de database, zie ook deze handleiding: http://phptuts.nl/view/1/
 
Justin S

Justin S

06/07/2010 12:03:05
Quote Anchor link
@Blanche: Ik vind het persoonlijk altijd fijner het met PHP te rekenen, maar dat is meer omdat ik altijd meerdere soorten weergaven heb in mijn tijdsysteem. Of kan je in de query ook meerdere variabele setten voor bijvoorbeeld totaal gewerkte uren, langst gewerkte uren, laatst gewerkte uren etc. in één query? Of moet je voor alle een aparte query uitvoeren?

Wat ik doe is gewoon de data ophalen, en dan vervolgens rekenen met de verschillende variabelen in php zelf o.b.v. timestamps, maar ik weet niet of dit de correcte manier is volgens jou Blanche?

@John: Als uit Blanche's uitleg blijkt dat dit beter via een query kan is het beter die optie toe te passen dan mijn gegeven voorbeeld hoe je met de tijd kan rekenen.
 
Joren de Wit

Joren de Wit

06/07/2010 12:11:26
Quote Anchor link
Al die verschillende waarden kun je juist heel goed met de database bepalen! PHP is veel minder geschikt om te rekenen met data en tijden. De database daarentegen beschikt over een breed scala datum- en tijdfuncties (zie die handleiding).

Of alles in 1 query te stoppen is en of dat wel wenselijk is, is iets anders. Maar dan nog kun je beter een tweede of derde query uitvoeren dan dat je in PHP gaat lopen knoeien met timestamps :-)
 
John van der Linden

John van der Linden

06/07/2010 14:17:18
Quote Anchor link
oke, duidelijke verhaal...
Maar hoe krijg ik het precies voor elkaar op de datum en de tijd aan elkaar vast te plakken ? De huidige datum en tijd uitlezen lukt wel..

maar bv:
uitgelezen datum = 20100706 in bv $datum
ingevoerde tijd van gebruiker is 15:00, komt uit een FORM
<input type="text" name="A1" size="5">

hoe combineer ik deze twee gegevens ?? en waar ?
(waarschijnlijk in de insert.php die mijn form aanroept ??)
 
Justin S

Justin S

06/07/2010 14:43:28
Quote Anchor link
Je moet 20100706 niet invoeren, daar moeten koppeltekens tussen staan, dus 2010-07-06.
Deze kan je gewoon combineren met de geposte tijd:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php

$datum
= '2010-07-06';
$tijd = '15:00:00'; // of: $_POST['A1']

echo $datum.' '.$tijd;

//uitvoer: 2010-07-06 15:00:00

?>


Voer dit maar eens in en test het eens.
Ik raad je wel aan duidelijkere namen te gebruiken voor je form velden en geen A1..
Beter is gewoon: name="starttijd"
Gewijzigd op 06/07/2010 14:44:45 door Justin S
 
John van der Linden

John van der Linden

06/07/2010 14:53:37
Quote Anchor link
ja, logisch natuurlijk weer :-)

Ga het even proberen, en bedankt maar weer !
 
Pieter van Linschoten

Pieter van Linschoten

06/07/2010 15:07:34
Quote Anchor link
Heb hier al vaker last van gehad:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<?
function date_swap($datum_string,$convert_method='swap'){
    switch($convert_method){
        case
'swap':
            return implode('-',array_reverse(explode('-',reset(explode(' ',$datum_string)))));
            break;
        case
'date_to_text':
            $maanden = maanden();
            $swap = array_reverse(explode('-',reset(explode(' ',$datum_string))));
            $swap[0] = (int)$swap[0];
            $swap[1] = $maanden[(int)$swap[1]];
            return implode(' ',$swap);
            break;
        case
'date_and_time':
            $string = explode(' ',$datum_string);
            return implode('-',array_reverse(explode('-',$string[0]))).' '.$string[1];
            break;
        case
'date_h:m':
            $string = explode(' ',$datum_string);
            $string[1] = explode(':',$string[1]);
            $string[1] = $string[1][0].':'.$string[1][1];
            if(!empty($string[0]) && !empty($string[1])){
                return implode('-',array_reverse(explode('-',$string[0]))).' om '.$string[1];
            }
else{
                return 'Geen datum';    
            }

            break;
        default:

            return implode('-',array_reverse(explode('-',reset(explode(' ',$datum_string)))));
            break;
    }
}

function
maanden(){
    return array(1 => 'januari',
                   2 => 'februari',
                   3 => 'maart',
                   4 => 'april',
                   5 => 'mei',
                   6 => 'juni',
                   7 => 'juli',
                   8 => 'augustus',
                   9 => 'september',
                   10 => 'oktober',
                   11 => 'november',
                   12 => 'december');    
}


?>
 
Joren de Wit

Joren de Wit

06/07/2010 18:14:05
Quote Anchor link
@Pieter: ik vraag me af of de TS veel aan dit scriptje heeft. Zodra de datum in het formaat yyyy-mm-dd hh:mm:ss staat, kan hij het gewoon invoeren in de database. Ook het opmaken kan vervolgens eenvoudig tijdens het uitlezen in de query met behulp van DATE_FORMAT()...
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.