Rekenen met weken

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Dennis WhoCares

Dennis WhoCares

15/07/2013 09:32:15
Quote Anchor link
Ik ben bezig met een opzet om urenlijsten in te vullen en te versturen naar de desbetreffende werkgever.
(Hiervoor heb ik hulp nodig bij het instellen van m'n domein en VPS, zie andere topic van mij)

Nou voeg ik mijn weken toe in het database als weeknr en jaarnummer
met alle gegevens. De datums laat ik genereren in het overzicht tijdens het bekijken, afdrukken, downloaden en versturen van de urenlijst.

Maandag_start, _eind, _opmerking
Dinsdag_start, _eind, _opmerking
...........
Zondag_start, _eind, _opmerking
Nou zou ik graag deze lijsten willen sorteren, of iig een overzicht per periode genereren.
Een periode van de gehele maand.

Hoe kan ik dit het beste doen, het eind van bijv. maand 7 kan in dezelfde week vallen als het begin van 8.
Ik zou graag willen proberen om het als volgt eruit te laten zien:

Periode | Uren gewerkt | Overuren | Afgerond |
---------+----------------+----------+----------+
januari | 120 | 40 | V |
---------+----------------+----------+----------+
februari | 120 | 32 | V |
---------+----------------+----------+----------+
......
---------+----------------+----------+----------+
juli | 80 | 5 | X |
---------+----------------+----------+----------+


Voor mijn iedee moet ik eerst kijken wat de allereerste weeknummer is dat in de database staat.
+->Kijken in welke periode de eerste dag van deze week valt.
+->Tot welke dag van de week deze periode valt en begindag van volgende periode tijdelijkopslaan indien deze in huidige week valt
+--> Voor elke dag van huidige periode de totalen weergeven, voor volgende periode tijdelijk opslaan.

Ik krijg de juiste manier maar niet op papier gezet en ik zit hier al een aantal dagen over te tobben.
(uiteindelijk moet de gebruiker kunnen aangeven in wat voor periodes de desbetreffende werkgever doet uitbetalen, zodat de gebruiker dit kan instellen op zijn account)

Toevoeging op 15/07/2013 09:49:12:

De grootste heuvel is dat een week het begin en een eind van een maand kan bevatten, zoals dat 31 juli en 1 augustus van dit jaar in week 31 vallen.
Gewijzigd op 15/07/2013 09:58:32 door Dennis WhoCares
 
PHP hulp

PHP hulp

05/01/2025 00:35:59
 
Erwin H

Erwin H

15/07/2013 09:57:59
Quote Anchor link
Je begint gewoon al compleet verkeerd. Het feit dat je het in weken wil tonen of versturen, wil niet zeggen dat je het ook per week moet opslaan. Bedenk eens hoe het zou gaan werken als je het gewoon per dag opslaat...
 
Dennis WhoCares

Dennis WhoCares

15/07/2013 10:00:38
Quote Anchor link
Daar heb ik dus ook aan zitten te denken om het gewoon per dag op te slaan.
+Urenlijsten
-wk_userid
-wk_datum
-wk_start
-wk_eind
-wk_opmerking

Maar ik vul wel complete weken in bij het toevoegen van mijn urenlijsten.
En ik zal dan voor elke dag (record van huidige user) apart gaan kijken in welke week het valt om het te weergeven in de 'week urenlijst' (buiten de periode overzicht)
Worden mijn 'view,download,print en send by mail "urenlijst" pagina's dan niet traag?
Gewijzigd op 15/07/2013 10:03:03 door Dennis WhoCares
 
Erwin H

Erwin H

15/07/2013 10:03:05
Quote Anchor link
Nou en? Wat maakt het nu hoe je het invult of gebruikt? De weekinfo (nummer, begin, eind, jaar) is allemaal direct af te leiden uit de datum. Alleen datum opslaan is dus genoeg. De rest is overbodige database vulling.
 
Dennis WhoCares

Dennis WhoCares

15/07/2013 10:05:03
Quote Anchor link
Erwin H op 15/07/2013 10:03:05:
Nou en? Wat maakt het nu hoe je het invult of gebruikt? De weekinfo (nummer, begin, eind, jaar) is allemaal direct af te leiden uit de datum. Alleen datum opslaan is dus genoeg. De rest is overbodige database vulling.


Je hebt absoluut gelijk. Bedankt voor de feedback, ik ga hiermee aan de slag.
Mijn database aanpassen, en dan eerst mijn praktijk examen voor rijbewijs ff halen.
Dan ga ik ermee door :)

Nogmaals bedankt, ik begin er hoop in te krijgen :p
 
Erwin H

Erwin H

15/07/2013 10:10:05
Quote Anchor link
Dat rijbewijs ga je meer lol van hebben :-)

Ik heb zelf enige tijd geleden ook iets soortgelijks gemaakt (om mijn eigen uren in de week bij te houden), en dat werkt met alleen datum opslaan. De rest komt allemaal uit die datum, ook de week en maand overzichten. Uiteindelijk vrij eenvoudig, dus jou zal het ook wel lukken.
 
Dennis WhoCares

Dennis WhoCares

15/07/2013 10:24:56
Quote Anchor link
Jazeker, alleen krijg nu net te horen dat m'n instructeur de koppeling verrot getrapt heeft.
Dus kan mn laatste rijles op mn buik schrijven en zal straks examen moeten doen, zonder ff op te kunnen warmen en met een nieuwe koppeling moet gaan afrijden.... (ach t zit me ook nooit mee xD)

Jawel het zal wel lukken, zit nou alleen het met invullen van de urenlijst. Want deze zijn wel per week.
En lijkt me niet heel handig om elke dag apart in te vullen.
 
Erwin H

Erwin H

15/07/2013 10:38:06
Quote Anchor link
Dan zal je die input moeten omrekenen naar dagen. Hoe krijg je het precies binnen?
 
Dennis WhoCares

Dennis WhoCares

15/07/2013 10:56:39
Quote Anchor link
Neej tis een personeels portaal zegmaar
gebruikers die ingelogd zijn kunnen hun urenlijsten enz invullen en wanneer deze volledig ingevuld zijn worden ze op zondag om 18:00 gemailed naar desbetreffende werkgever

Ik vulde voorheen gewoon een compleet formulier in:
Jaar:
Week:
Maandag, start(tijd):
eind(tijd):
dinsdag, start(tijd):
eind(tijd):
...
zondag, start(tijd):
eind(tijd)

Toevoeging op 15/07/2013 10:57:46:

Maar ik zal om het makkelijker te maken nog een veld week bijzetten, dat met het ophalen van incomplete urenlijsten dat ik die gewoon op weeknr kan opzoeken.
datums berekenen per week is makkelijk :)
 
Jeroen VD

Jeroen VD

15/07/2013 11:00:34
Quote Anchor link
onnodige databasevulling! gewoon 1 tabel met niets anders dan datum, starttijd en eindtijd, en een id. voor de rest kun je daar alles uithalen: bekijk deze tutorial eens: http://phphulp.jorendewit.nl/view/1/

dixi
 
Erwin H

Erwin H

15/07/2013 16:01:15
Quote Anchor link
Dennis WhoCares op 15/07/2013 10:56:39:
Maar ik zal om het makkelijker te maken nog een veld week bijzetten, dat met het ophalen van incomplete urenlijsten dat ik die gewoon op weeknr kan opzoeken.
datums berekenen per week is makkelijk :)

Even googelen bracht me de volgende code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$week_start
= new DateTime();
$week_start->setISODate( $year, $week_no );
echo $week_start->format( 'd-M-Y' );
?>

Oftewel, als je het jaar en het weeknummer hebt dan echo je hiermee de start van de week (ik neem aan dus de maandag). Als je dus zo'n compleet ingevuld formulier krijgt met alleen het weeknummer is het op deze manier een fluitje van een cent om alle datums erbij te krijgen.

Disclaimer: te lui om nu te testen, werkt het dus niet dan ga ik nog even dieper graven.
 
Dennis WhoCares

Dennis WhoCares

15/07/2013 18:02:58
Quote Anchor link
@erwin, toevallig had ik precies hetzelfde gevonden :)
Het gaat goed komen.hoop ik

Zit nu mijn falen te bedenken (ben gezakt.voor mn praktijkexamen :-( )
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

15/07/2013 19:02:19
Quote Anchor link
Jeroen VD op 15/07/2013 11:00:34:
onnodige databasevulling! gewoon 1 tabel met niets anders dan datum, starttijd en eindtijd, en een id. voor de rest kun je daar alles uithalen: bekijk deze tutorial eens: http://phphulp.jorendewit.nl/view/1/

dixi

Waarom zou dat onnodig zijn, want:
a) 70% van die datetime functies werken alleen in MySQL
b) als je een functie binnen een where gebruikt wordt geen gebruikt meer gemaakt van de index en dat kan bij grote tabellen de query aanzienlijk vertragen.
 
Jeroen VD

Jeroen VD

16/07/2013 13:06:11
Quote Anchor link
Quote:
Waarom zou dat onnodig zijn, want:
a) 70% van die datetime functies werken alleen in MySQL
b) als je een functie binnen een where gebruikt wordt geen gebruikt meer gemaakt van de index en dat kan bij grote tabellen de query aanzienlijk vertragen.

a) juist daarom, je krijgt schone data uit de database, je hoeft met php niet meer te klooien om het allemaal netjes te krijgen, dat doet sql als je het een beetje netjes in de query zet. bij het erin stoppen van de data moet je dan alleen wel alles in het juiste format zetten, dat is waar.
b) ik moet toegeven dat ik dat niet begrijp haha, maar dat is ook niet nodig als je met een id werkt, je vraagt gewoon alle data op die je wilt hebben (eventueel met tijdfunctie om de juiste format te bereiken) en in de WHERE staat alleen het id
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

17/07/2013 10:48:27
Quote Anchor link
Jij reageerde, op Dennis zijn opmerking dat ie een kolom met weeknr's in de tabel ging zetten, met de opmerking dat het onnodig databasevulling zou zijn.

Als je een applicatie bouwt die met meerdere databasesystemen moet kunnen werken, dan heb je het probleem dat per systeem de functies om het weeknr. uit de datum te extraheren verschillend zijn. Dat kan al een goede reden zijn om daarvoor gewoon een extra kolom te maken.

Dan trek je de voorbarige conclusie dat je altijd op alleen op id's kan of wilt filteren, wat ook niet is.
Het is vrij gebruikelijk om kolommen waarop je vaak filtert te indexeren, alleen heeft die index geen zin als je filtert op een bewerking op die kolom e.g:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
WHERE YEARWEEK(datum) = 40

En heb je al weer een goede reden voor die extra kolom.
 
Jeroen VD

Jeroen VD

17/07/2013 11:07:19
Quote Anchor link
oke, je hebt gelijk. excusé moi
 
Dennis WhoCares

Dennis WhoCares

17/07/2013 20:54:19
Quote Anchor link
Wat een discussie joh :P
Toch geweldig om eens de meningen van anderen te horen met onderbouwing
 
Donny Wie weet

Donny Wie weet

18/07/2013 02:13:17
Quote Anchor link
Maakt PHP5 het niet mogelijk om makkelijk te rekenen met weken?
 
Erwin H

Erwin H

18/07/2013 09:39:03
Quote Anchor link
Op zich heeft Ger wel een punt (twee), maar de vraag is wel in hoeverre het van toepassing is. Als je namelijk alleen een overzicht van een bepaalde week wilt maken, dan heb je heel dat weeknummer niet nodig in je query. Dat kan je ook eenvoudig doen door alle records met een datum tussen de maandag en de vrijdag te selecteren. Op die manier heb je dus en de date functies in MySQL niet nodig en je gebruikt gewoon de volledige datum waardoor de indexen gewoon nog werken.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

18/07/2013 19:38:38
Quote Anchor link
Erwin, op elk argument is wel een tegenargument te vinden.
Database technisch gezien is er helemaal niks mis met een kolom voor weeknr, want men kan wel stellen dat het weeknr af te leiden is uit de datum, maar dat geldt ook voor bv de stand van de maan.

In hoeverre iets van toepassing is afhankelijk van de toepassing.
 
Erwin H

Erwin H

18/07/2013 21:28:40
Quote Anchor link
Nou ja, ik denk dat we er van de andere kant naar kijken. Als je naast de datum ook het weeknummer opslaat dan heb je in feite dubbele informatie. Mocht je de datum dus eens moeten aanpassen, dan moet je ook het weeknummer aanpassen anders krijg je inconsistenties in je database.

Ik kijk er dus naar dat je dat wil vermijden tenzij het echt heel duidelijke voordelen heeft (die er dus wel degelijk zijn in bepaalde gevallen). Jij kijkt er zo te zien vanaf de andere kant naar, dat het beter is om het weeknummer wel op te slaan omdat je dan die mysql functies niet hoeft te gebruiken en nog wel de indexen ter berschikking hebt.

Het een beter dan het ander, nee, zoals altijd. Maar wel goed om beide standpunten te weten en te begrijpen, mag iedereen weer zijn eigen keuze maken.


Ger van Steenderen op 18/07/2013 19:38:38:
In hoeverre iets van toepassing is afhankelijk van de toepassing.

LOL
 

Pagina: 1 2 volgende »



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.