multiple SUM

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

PHP Laravel Ontwikkelaar

Functie omschrijving Weet jij alles over Laravel en krijg je energie van het developen van software hiermee? Laat het weten want wij zoeken een PHP/Laravel developer in regio 's-Hertogenbosch voor klein bedrijf welke softwareoplossingen maakt voor hun klanten. Jouw taken hierbij: Softwareapplicaties ontwikkelen en verder optimaliseren in veel diverse projecten op basis van Agile/Scrum. Documentatie schrijven over applicaties. Uitleg geven over software en applicaties Klantcontact hebben over bestaande applicaties. Techstack: PHP, Laravel, HTML, CSS, Javascript. Bedrijfsprofiel Deze organisatie zit in de regio van 's-Hertogenbosch en is een klein bedrijf. Er werken circa 15 medewerkers, verdeeld in meerdere teams, zoals back-end

Bekijk vacature »

PHP ontwikkelaar

Functie Met een complex en uitgebreid e-commerce platform, een eigen PIM-systeem en eigen scan applicatie – krijg jij dagelijks te zien hoe jouw werk gebruikt wordt door miljoenen gebruikers. En we staan qua development pas in de startblokken, aangezien er nog meerdere projecten op de plank liggen te wachten! Ons huidige development team bestaat uit 8 programmeurs. Er wordt dagelijks gereflecteerd op geschreven code, Scrum taken en kennisdelen onderling is een must. Onze voertaal binnen ons team is Engels, dit omdat wij twee internationale collega’s hebben. Ons huidige “IT Landschap” bestaat voornamelijk uit allerlei losse onderdelen die individueel, maar ook

Bekijk vacature »

Back end developer PHP

Functie Met een complex en uitgebreid e-commerce platform, een eigen PIM-systeem en eigen scan applicatie – krijg jij dagelijks te zien hoe jouw werk gebruikt wordt door miljoenen gebruikers. En we staan qua development pas in de startblokken, aangezien er nog meerdere projecten op de plank liggen te wachten! Ons huidige development team bestaat uit 8 programmeurs. Er wordt dagelijks gereflecteerd op geschreven code, Scrum taken en kennisdelen onderling is een must. Onze voertaal binnen ons team is Engels, dit omdat wij twee internationale collega’s hebben. Ons huidige “IT Landschap” bestaat voornamelijk uit allerlei losse onderdelen die individueel, maar ook

Bekijk vacature »

Junior Software Developer C# Verhuursector Verhuur

Samengevat: Wij ontwikkelen en leveren softwaresystemen voor de logistieke sector en de verhuursector. Ben jij geschikt als Junior Software Developer? Heb je ervaring met Delphi? Vaste baan: C# Software Developer Logistiek HBO €2.500 - €3.900 Deze werkgever is een software ontwikkelaar, gericht op software voor de logistieke sector. Deze werkgever heeft eigen producten ontwikkelen en leveren ook maatwerk. Ons bedrijf kent een boeiende en inspirerende werkomgeving met een open cultuur en mogelijkheden voor je verdere ontwikkeling. Bij bij hun werk je aan onze eigen bedrijfsapplicaties. Je ontwikkelt met ons de meest nieuwe software. Wij blinken uit als het gaat om

Bekijk vacature »

Senior C# Software Ontwikkelaar te Zaandam

Bedrijfsomschrijving Deze werkgever heeft als missie om haar klanten op ICT-gebied volledig te ontzorgen. Ze zijn een ICT bedrijf met een verscheidenheid aan ICT oplossingen waaronder Cloud oplossingen en een groot deel van het werk is gericht op software realisatie. Voor de Enterprise-klanten voert het relatief kleine ontwikkelteam waar jij deel uit van kan gaan maken binnen deze organisatie te Zaandam de grootste opdrachten uit. Niet alleen websites en complexe webapplicaties maar ook mobile apps, web services en complete systeemintegraties! Je moet dan denken aan Dynamics, Sharepoint en Salesforce. Je komt hier terecht in een relatief kleine organisatie met ontzettend

Bekijk vacature »

Front End Ontwikkelaar (React)

In het kort Als front end developer ga je aan de slag met maatwerkprojecten voor onze klanten. Denk bijvoorbeeld aan het toevoegen van een machine aan een database of het corrigeren van formulieren voor ingestuurde orders. Voorbeeld van zo’n project is Smart Link. De projecten waar je op ingezet kunt worden liggen binnen het technische domein waar jij als front end developer een grote rol speelt om samen met je back end collega’s de juiste oplossingen te leveren. please note that this particular role requires fluent Dutch language skills. Dit vind je leuk om te doen Het omzetten van designs

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Senior Java Developer

Als Senior Java Developer bij Sogeti ben je onderdeel van onze toonaangevende community die bestaat uit ruim 100 gepassioneerde Java professionals. In teamverband lever je mooie prestaties. Daarmee draag je aan bij de meerwaarde die wij leveren aan onze top-opdrachtgevers. Geen werkdag is hetzelfde! Je bent voortdurend bezig met het oplossen van allerlei complexe vraagstukken binnen bedrijfs kritische systemen voor onze klanten in regio Noordoost zoals DUO, ING, CJIB en Tendernet. Natuurlijk krijg jij de mogelijkheid je verder te certificeren in dit vakgebied. We organiseren regelmatig technische Meetups en doen veel aan kennisdeling. Sogetisten hebben plezier in hun werk en

Bekijk vacature »

Oracle APEX developer

Wat je gaat doen: Als Oracle APEX ontwikkelaar bij DPA werk je samen met collega’s aan de meest interessante opdrachten. Je zult je ervaring met SQL, PL/SQL, JavaScript, HTML en CSS inzetten om wensen van opdrachtgevers te vertalen naar technische oplossingen. Je werk is heel afwisselend, omdat DPA zich niet beperkt tot een specifieke branche. Zo ben je de ene keer bezig binnen de zorgsector, de andere keer is dit bij de overheid. Wat we vragen: Klinkt goed? Voor deze functie breng je het volgende mee: Je hebt een hbo- of universitaire opleiding afgerond Je hebt 2 tot 5 jaar

Bekijk vacature »

Back-End Web Developer

Als Back-End Web Developer bij Coolblue zorg je ervoor dat onze webshops elke dag een beetje beter zijn. Wat doe je als Back-End Web Developer bij Coolblue? Als Back-End Web Developer werk je met andere development teams samen om onze webshop zo optimaal mogelijk te laten werken en onze klanten blij te maken. Als backend developer weet je de weg in PHP, kan je in Typescript een microservice op zetten of ben je bereid om dit te leren. Ook Web Backend Developer worden bij Coolblue? Lees hieronder of het bij je past. Dit vind je leuk om te doen PHP

Bekijk vacature »

C# Developer

Dit ga je doen De requirements in kaart brengen van de klant; Implementeren van functionele en technische specificaties bij opdrachtgevers; Oplossen van bugs; Meewerken aan maatwerksoftware voor nieuwe opdrachtgevers; Het testen en uitleveren van nieuwe functionaliteiten naar de acceptatie en productieomgeving De database ontwikkelen en onderhouden; Hier ga je werken Onze klant is gevestigd in het westen van Nederland en is gespecialiseerd in het ontwikkelen van software voor de levensmiddelen industrie. De software die het team maakt optimaliseert voornamelijk de administratieve processen, maakt deze meetbaar en zorgt ervoor dat de data zo goed mogelijk gebruikt kan worden. Binnen een van

Bekijk vacature »

PHP Developer - medior functie

Functieomschrijving Ben jij innovatief en wil jij je kennis graag delen met jouw nieuwe collega's? Lees dan snel verder! Voor een leuke opdrachtgever in de omgeving van Roosendaal zoeken wij een Symfony developer. Of je nou junior, medior of senior bent, je krijgt hier alle vrijheid en verantwoordelijkheid om jouw eigen loopbaan te ontwikkelen. Je gaat je hier bezig houden met en inspelen op de actualiteiten van jouw vakgebied. Techstack: Symfony, PHP, mySQL. Kennis van Svelte is helemaal mooi meegenomen. Bedrijfsprofiel Al sinds '99 is dit webbureau actief. De kernwaarden binnen het bedrijf zijn integer, dienstbaar en deskundig. Je komt

Bekijk vacature »

Back-end PHP Developer

Dit ga je doen Her- en uitbouwen van het inhouse softwareplatform dmv PHP; Onderhouden van bovengenoemd platform in PHP; Sparren met het team; Meedenken over nieuwe functionaliteiten, security etc; Jouw input leveren aan het proces door op de hoogte te blijven van nieuwe ontwikkelingen etc. Hier ga je werken Onze klant, gevestigd in de omgeving van Alkmaar, levert wereldwijd oplossingen op het gebied van IT. Dag in dag uit werken zij met veel passie aan hun product waarmee ze streven naar verbeteringen binnen zorg. Voor onze klant zijn we op zoek naar een medior PHP Developer. Je komt te werken

Bekijk vacature »

C# developer

Functie Als ervaren Software Engineer wordt jij verantwoordelijk voor het bedenken en ontwikkelen van technische (maatwerk) oplossingen voor onze klanten en dit samen met de klant af te stemmen. Jij wordt o.a. verantwoordelijk voor de doorontwikkeling het software pakket welke voor ons enorm belangrijk is. Dit pakket zorgt er namelijk voor dat wij complete productielijnen kunnen aansturen en monitoren. Daarnaast heb jij actief contact met onze hoofdvestiging om het software achter een van onze systemen te verbeteren en te herschrijven. Momenteel zijn onze C# applicaties geschreven met o.a. Winforms. Echter hebben wij de actieve ambitie om dit te gaan herschrijven

Bekijk vacature »

Software Developer

Dit ga je doen Je bent verantwoordelijk voor de warehouse applicatie die een integratie heeft met de PLC laag; Je ontwikkelt in C#/.Net; Je bent verantwoordelijk voor het ontwikkelen van interfaces en het visualiseren van componenten; Je denkt mee over het design voor business oplossingen; Je bent verantwoordelijk voor het testen van de gebouwde oplossing. Hier ga je werken Voor een internationale organisatie in de transport zijn wij momenteel op zoek naar een Software Developer. Ze zijn wereldwijd de grootste speler en lopen voorop met het automatiseren van alle processen van de warehouses. Op dit moment wordt er nog gebruik

Bekijk vacature »

Pagina: 1 2 volgende »

Yannick Bogaert

Yannick Bogaert

26/12/2013 08:07:29
Quote Anchor link
Hallo allemaal,

ik ben aan het proberen mijn verschillende MySQL query's
te combineren.

Nu de query zelf is geen probleem, maar hoe steek ik de resultaten
in een $variable in PHP?

De query
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$sql
= "SELECT SUM( tijd ) AS tijd, SUM( night ) AS night, SUM( sat ) AS sat, SUM( sun ) AS sun, SUM( lunch ) AS lunch FROM roster2013 WHERE naam = '$foo' AND maand ='$maand'";
$sql2 = mysql_query($sql) or die(mysql_error());
?>


voorheen maakte ik voor elke SUM een aparte query waar ik dan de waarde in een variable stak
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$query
= "SELECT SUM(tijd)FROM roster2013 WHERE naam = '$foo' AND maand ='$maand'";
$tijd = mysql_query($query) or die(mysql_error());
$tijd2 = mysql_fetch_assoc($tijd);
$tijd3 = $tijd2['SUM(tijd)'];
?>


en dit dan x aantal keer.

Nu moet dit echter toch veel makkelijker kunnen dacht ik, maar de oplossing ontbreekt
me...

thanks alvast,

Yannick
 
PHP hulp

PHP hulp

12/05/2024 18:57:28
 
Ivo P

Ivo P

26/12/2013 11:14:26
Quote Anchor link
Nu zal dat in $tijd2['night'] etc zitten

Er is trouwens niets mis met het gebruik van namen van variabelen die wat meerzeggemd zijn:

$resultset = mysql_query...
$row = mysql_fetch_assoc($resultset);
$totaalnight = $row["night"];


In je query is het verstandig om
a) af en toe eens op enter te drukken voor de leesbaarheid, zodat het geen query van 1 meter breed wordt;
b) een andere naam te kiezen voor een alias dan denaam van een kolom, om te voorkomen dat jij of je database niet meer weet of Night nu de naam van de kolom of de sommatie is

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
SELECT
   SUM(night) as totaalnachten,
   SUM(sun) as totaalsuns
FROM TABEL
 
Yannick Bogaert

Yannick Bogaert

26/12/2013 12:03:57
Quote Anchor link
@ Ivo P: thanks voor de tips heb het inderdaad een beetje "opgekuist"

Nu wil ik echter nog een stapje verder gaan.

Het vorige stukje code ging erover om per maand een ovezichtje
te krijgen van gewerkte uren met opslitsing op weekdag/zaterdag/zondag enz...

Ik heb ook een volledig overzicht op 1 pagina wat op dit moment in
ongeveer 96 query's zit...

Wat ik doe is per persoon 12 query's draaien:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
query1 = "SELECT SUM(tijd+night+sun)FROM roster2014 WHERE naam = 'MVH' AND start BETWEEN '2014-01-01 00:00' AND '2014-01-31 23:59'";
$mvh11 = mysql_query($query1) or die(mysql_error());
$mvh12 = mysql_fetch_assoc($mvh11);
$mvh13 = $mvh12['SUM(tijd+night+sun)'];
?>


dit dus x 12 voor elke maand en nog eens x 10 voor elke persoon...

Hoe zou ik dit kunnen vereenvoudigen?
Uiteindelijk krijg je via echo's een overzicht te zien
in tabelvorm per persoon / per maand.

thanks alvast,

Yannick

Toevoeging op 26/12/2013 12:04:12:

@ Ivo P: thanks voor de tips heb het inderdaad een beetje "opgekuist"

Nu wil ik echter nog een stapje verder gaan.

Het vorige stukje code ging erover om per maand een ovezichtje
te krijgen van gewerkte uren met opslitsing op weekdag/zaterdag/zondag enz...

Ik heb ook een volledig overzicht op 1 pagina wat op dit moment in
ongeveer 96 query's zit...

Wat ik doe is per persoon 12 query's draaien:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
query1 = "SELECT SUM(tijd+night+sun)FROM roster2014 WHERE naam = 'MVH' AND start BETWEEN '2014-01-01 00:00' AND '2014-01-31 23:59'";
$mvh11 = mysql_query($query1) or die(mysql_error());
$mvh12 = mysql_fetch_assoc($mvh11);
$mvh13 = $mvh12['SUM(tijd+night+sun)'];
?>


dit dus x 12 voor elke maand en nog eens x 10 voor elke persoon...

Hoe zou ik dit kunnen vereenvoudigen?
Uiteindelijk krijg je via echo's een overzicht te zien
in tabelvorm per persoon / per maand.

thanks alvast,

Yannick
Ps deze query's zijn nog niet opgekuist...
 
Ivo P

Ivo P

26/12/2013 12:09:23
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT SUM(tijd + night + sun) totaaltijd,
       naam,
       YEAR(start) jaar,
       MONTH(start) maand
FROM roster2014
WHERE YEAR(start) = 2014
GROUP BY naam,
         jaar,
         maand
ORDER BY
    naam ASC,
    jaar ASC,
    maand ASC


Toevoeging op 26/12/2013 12:11:47:

ps: roster2014 doet vermoeden dat jij elk jaar een nieuwe tabel maakt? Niet handig, want er komt een dag dat jij een keer "de afgelopen 18 maanden" of "de laatste 5 jaar" nodig hebt.

Overigens:
als start datum+tijd bevat, dan hoef je waarschijnlijk niet op te geven dat het "night" is, aangezien dat volgt uit "23:00", net als "sun" wat ook uit de datum volgt (los van feestdagen)
 
Yannick Bogaert

Yannick Bogaert

26/12/2013 12:44:38
Quote Anchor link
@Ivo P:

thanks dit werkt prima, hoe zit het dan verder met de PHP dan?
Nu moet hij echter de juiste rij selecteren met de juiste maand,
hoe krijg ik dan in een variabele bv de sum van persoon x voor maand y?

Inderdaad ik gebruik elk jaar nieuwe tabel, naarmate ik meer kennis vergaar
oa dankzij dit forum kan ik inderdaad gaan naar 1 tabel.
In de vorige werkte ik met text in de dbase, nu gebruik ik de datetime...

Wat de night betreft dit moet er als extra wel nog bij want alles wat nachturen
wordt nog eens apart opgeslagen omdat die dubbel tellen... Idem met sun (zondaguren)

thanks voor de hulp!

Yannick
 
Frank Nietbelangrijk

Frank Nietbelangrijk

26/12/2013 13:05:05
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
echo '<pre>';

// pak rij voor rij
while($row = mysql_fetch_assoc($result))
{

    // dump de inhoud van de associatieve array $row compleet op het scherm
    print_r($row);
}


echo '</pre>';
?>
Gewijzigd op 26/12/2013 13:05:25 door Frank Nietbelangrijk
 
Yannick Bogaert

Yannick Bogaert

26/12/2013 13:16:20
Quote Anchor link
@Frank Nietbelangrijk: thanks, probleem is echter dat er op de waarden uit de tabel
nog een berekening moet gebeuren:

bv:
$totaal/persoonX/maandY - het aantal te presteren uren in maandY = overuren
in code op het ogenblik geeft dit het volgende:

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
<?php
$mvhOT1
= ($mvh13 - $jan) + $prevmvh;
$mvhOT2 = ($mvh23 - $feb) + $mvhOT1 ;
$mvhOT3 = ($mvh33 - $mar) + $mvhOT2 ;
$mvhOT4 = ($mvh43 - $apr) + $mvhOT3 ;
$mvhOT5 = ($mvh53 - $may) + $mvhOT4 ;
$mvhOT6 = ($mvh63 - $jun) + $mvhOT5 ;
$mvhOT7 = ($mvh73 - $jul) + $mvhOT6 ;
$mvhOT8 = ($mvh83 - $aug) + $mvhOT7 ;
$mvhOT9 = ($mvh93 - $sep) + $mvhOT8 ;
$mvhOT10 = ($mvh103 - $oct) + $mvhOT9 ;
$mvhOT11 = ($mvh113 - $nov) + $mvhOT10 ;
$mvhOT12 = ($mvh123 - $dec) + $mvhOT11 ;
?>


voor de eerste regel:
$mvhOT1 = overuren van persoon MVH voor maand 1
$mvh11 = de sum uit de tabel
$jan = het aantal te werken uren in january
$prevmvh = het aantal over te dragen uren van 2013

dit wordt dan doorgetrokken naar februari, maart, enz...
en dit lukt natuurlijk niet met een print_r...

Of ben ik mis?

thanks,
Yannick
 
Frank Nietbelangrijk

Frank Nietbelangrijk

26/12/2013 13:23:19
Quote Anchor link
nee maar als je het resultaat van die print_r eens op het forum plaatst (of een knipsel ervan) dan krijgen wij misschien wat beter inzicht om jouw te helpen.

Overigens, moet je je niet eens gaan verdiepen in array's?
Gewijzigd op 26/12/2013 13:23:44 door Frank Nietbelangrijk
 
Ivo P

Ivo P

26/12/2013 13:23:33
Quote Anchor link
print_r geeft een dump van de beschikbare informatie.
Daar moet je dan zelf je verhaal mee bouwen.

Je zult nu steeds iets terugkrijgen met

"een naam", "een jaartal", "een maand" en "aantaluren".

Ik denk dat je om te beginnen moet gaan loslaten dat je voor elke persoon een serie eigen variabelen gaat maken. Dat is misschien werkbaar met 2 of 3 werknemers, maar je verzandt (zeker met die onleesbare afkortingen) al snel in een hele brij code die niet meer aanpasbaar is als je over 18 maanden een nieuwe medewerker moet opnemen.

Gebruik dan liever array's.

(ik snap sowieso de betekenis al sniet van "$mvh73", alleen dan dat mogelijk de 7e maand van het 3e jaar na 2010 is van medewerker mvh?)

Gebruik begrijpelijke namen (ook handig voor je opvolger over 3 jaar die niet meer weet wie "mvh" was, omdat die 2 jaar eerder al ontslag nam)

$overuren[$medewerkernr][ $maandnummer ][ $jaartal ] = $row['aantaluren'];

werkt waarschijnlijk net zo handig, en hoeft niet aangepast te worden als er 4 medewerkers bijkomen.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

26/12/2013 13:26:22
Quote Anchor link
lol, twee dezelfde antwoorden als daar geen duidelijke boodschap in zit..
kijk eens op http://www.youtube.com/watch?v=N4IrZ8YPrM0
of: http://www.phptuts.nl/view/39/6/
Gewijzigd op 26/12/2013 13:28:20 door Frank Nietbelangrijk
 
Yannick Bogaert

Yannick Bogaert

26/12/2013 13:36:55
Quote Anchor link
@ Ivo P:
Inderdaad dat is mijn bedoeling, het is alleen niet zo makkelijk als ik dacht
voor mezelf...

Ik begrijp wat je bedoelt met de onbegrijpbare afkortingen, deze zijn echter
een heel stuk duidelijk moest ik hier de hele pagina code even kopieren maar die is met al die
query een kleine 4000 regels...

Heb al een eerste stap gezet naar arrays maar moet me er duidelijk meer in verdiepen!
Thanks Frank Nietbelangrijk voor de youtube video!
 
Frank Nietbelangrijk

Frank Nietbelangrijk

26/12/2013 13:39:43
Quote Anchor link
4000 regels? dat stinkt naar chaos :P
 
Ivo P

Ivo P

26/12/2013 13:48:25
Quote Anchor link
tja, als je per medewerker al 12 regels gebruikt, voor wat mi. gewoon voor elke medewerker in 1 regel (+1 voor een while-lus), dan loopt het als snel op natuurlijk...

Ik denk dat je even afstand moet nemen van je php code, en eerst eens moet kijken hoe je een query (liefst inderdaat één query) maakt die alle data oplepelt uit je database. Zodat je daarna eigenlijk alleen nog een lus nodig hebt om eea weer te geven.

Ik vraag me ook af of je berekening door het hele jaar niet neerkomt op "dezelfde query, maar dan niet per maand, maar per jaar" (ik neem aan dat $jan, $feb etc het aantal nominale uren per maand bevat).


Namen van variabelen met nummers: eigenlijk altijd een aanduiding dat je iets doet om array's te vermijden. (er zijn trouwens op http://php.net/array een hele berg functies te vinden die rechtstreeks met array's kunnen werken)

En $mvh is ook een verkeerde weg: je maakt je code nu afhankelijk van de naam van de medewerkers.
Als over 2 jaar MvH vertrekt en zijn vervanger heet NdK, dan kun je ofwel de hele code door worstelen, ofwel jouw vervanger bedenkt dat hij de gegevens van NdK gewoon in $mvh gaat opslaan.
Dan ben je je link met de naam kwijt "maar het werkt wel" en 3 wijzigingen verder kan niemand nog wijs uit de code.
 
Yannick Bogaert

Yannick Bogaert

26/12/2013 14:08:20
Quote Anchor link
@ Ivo P:

inderdaad vandaar mijn wens naar vereenvoudiging :-D
Het was ooit makkelijker om te begrijpen met aparte query's maar moet daar inderdaad
van af stappen.

Naar berekening toe heb je een punt of het nu per maand is of per jaar uiteindelijk
kom je in december aan een eindresultaat, nu moet ik echter het wel per maand doen
omdat op basis van de overuren per maand we iemand de volgende maand dagje minder of meer
laten werken zodat we op het einde van het jaar zo dicht mogelijk bij 0 zitten.

Wat de medewerkers betreft snap ik het ook, daar zit ik echter dat er mensen bv maar
4 dagen/week andere 3 dagen dus ik geef het aantal uren aan met een array:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
if ($maand == '1' && in_array($foo,array('MVH', 'YBO', 'FCL', 'MST', 'ISL','BLE','SSL','JOM')))
$tbp = '167.20';
elseif ($maand == '1' && in_array($foo,array('IAD',BOE,AVM))) $tbp = '133.76';
?>


Hoe werk ik hier dan rond?

thanks,

Yannick
 
Ivo P

Ivo P

26/12/2013 14:58:14
Quote Anchor link
die uren sla je sbest ook op in een tabel van je database

tabel medewerkers:
id
naam

tabel tewerkenuren:
medewerker_id
jaar
maand
uren

Maar hoe dan ook: de query is eigenlijk ook gelijk per maand of jaar:
stel het is vandaag 1 juli 2014
dan heeft de persoon gewerkt: het sum(dag + nacht + zondag) over de periode (1 jan/ 30 juni)
en hij had moeten werken? dat staat in de tabel TewerkenUren. Waarbij jaar = 2014 en maand < 7 (is vandaag juli)

In principe kun je ook sommeren over het hele jaar 2014, aangezien het vrij zeker is dat er nog niets gewerkt is in oktober als het vandaag juli is...
 
Yannick Bogaert

Yannick Bogaert

27/12/2013 07:15:03
Quote Anchor link
@Ivo P:
naar aanleiding van je suggestie voor 2 extra tabellen te maken
heb ik dit ook gedaan.

Ik merk echter dat ik er nog niet veel meer te weten van gekomen ben
betreffende array's, en zie nog niet echt hoe ik dit kan toepassen
op mijn probleem. Tips zijn altijd welkom...

Naar de MySQL toe inderdaad uiteindelijk kan ik SUM maken voor persoon X
op jaarbasis en die dan per maand af toetsen aan de gewerkte uren...

Dus eigenlijk SUM(dag,zon,nacht) die dan via een loop nakijkt naar
de te presteren werkuren uit de tabel voor persoon X die maand?

Heb even screenshot genomen van 2013 om het iets visueler voor te stellen
wat ik nu eenvoudiger wil bereiken.

Afbeelding

thanks again!

UPDATE:
zit al een beetje verder met de SUM query:
SELECT maand, SUM( tijd + night + sun - lunch )
FROM `roster2014`
WHERE naam = 'X'
GROUP BY MONTH(start)

Dit is direct slechts 1 query ipv 12 of kan het nog verder gaan?
Gewijzigd op 27/12/2013 09:10:08 door Yannick Bogaert
 
Ivo P

Ivo P

27/12/2013 09:54:45
Quote Anchor link
Ik zou om te beginnen even sorteren op de maand, aangezien je anders je rijen in een rare volgorde zou kunnen terug krijgen. Ook als dat nu een logische volgorde lijkt: je database zou na een delete-actie of een opschooactie oid best ineens de resultaten in een andere volgorde kunnen uitspugen.

Daarnaast is het niet nodig om per werknemer een query uit te voeren. Die voeg je dus gewoon toe in het SELECT stukje (en de group by natuurlijk). Daarnaast sorteer je op die naam, anders wordt het vast een zooitje

Ik zou ook het jaartal toevoegen. Je zegt nu wel dat je per jaar een tabelmaakt, maar genummerde tabelnamen is zo mogelijk nog onwerkbaarder dan genummerde kolommen.
En op basis van de datum in start weet je toch al welk jaar het om gaat. Als je alleen het jaar 2013 wilt: toevoegen in WHERE

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
SELECT MONTH(start) maand,
       YEAR(start) jaar,
       naam,
       SUM( tijd + night + sun - lunch )
FROM `roster2014`
WHERE YEAR(start) = 2013
GROUP BY MONTH(start), YEAR(start), naam
ORDER BY naam ASC,
         jaar ASC,
         maand ASC


Toevoeging op 27/12/2013 10:00:05:

En nu combineren met de tabel met te werken uren

Je moet de uren hebben die overeenkomen met de de medewerker en de juiste periode (jaar + maand)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
SELECT MONTH(r.start) maand,
       YEAR(r.start) jaar,
       r.naam,
       SUM( r.tijd + r.night + r.sun - r.lunch ),
       tw.uren
FROM `roster2014` r
JOIN tewerkenuren tw ON tw.naam = r.naam AND tw.jaar = YEAR(r.start) AND tw.maand = MONTH(r.start)
WHERE YEAR(start) = 2013
GROUP BY maand, jaar, naam
ORDER BY r.naam ASC,
         jaar ASC,
         maand ASC
 
Frank Nietbelangrijk

Frank Nietbelangrijk

27/12/2013 10:27:55
Quote Anchor link
Yannick Bogaert op 27/12/2013 07:15:03:
Ik merk echter dat ik er nog niet veel meer te weten van gekomen ben
betreffende array's, en zie nog niet echt hoe ik dit kan toepassen
op mijn probleem. Tips zijn altijd welkom...


dit is wat je had:
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
<?php
$mvhOT1
= ($mvh13 - $jan) + $prevmvh;
$mvhOT2 = ($mvh23 - $feb) + $mvhOT1 ;
$mvhOT3 = ($mvh33 - $mar) + $mvhOT2 ;
$mvhOT4 = ($mvh43 - $apr) + $mvhOT3 ;
$mvhOT5 = ($mvh53 - $may) + $mvhOT4 ;
$mvhOT6 = ($mvh63 - $jun) + $mvhOT5 ;
$mvhOT7 = ($mvh73 - $jul) + $mvhOT6 ;
$mvhOT8 = ($mvh83 - $aug) + $mvhOT7 ;
$mvhOT9 = ($mvh93 - $sep) + $mvhOT8 ;
$mvhOT10 = ($mvh103 - $oct) + $mvhOT9 ;
$mvhOT11 = ($mvh113 - $nov) + $mvhOT10 ;
$mvhOT12 = ($mvh123 - $dec) + $mvhOT11 ;
?>


klein opzetje zoals dit ook had gekund:

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
<?php
// even wat voorbeeld data in teWerkenUren
$teWerkenUren = array(36,36,36,36,36,36,36,36,36,36,36,36);

// even wat voorbeeld data in mvh
$mvh = array(101,102,103,104,105,106,107,108,109,110,111,112);

// lege array voor mvhOT
$mvhOT = array();

// voorbeeld waarde voor $prevmvh
$prevmvh = 113;


// de eerste is afwijkend ivm $prevmvh. die doen we dus buiten de lus om.
$mvhOT[] = ($mvh[0] - $teWerkenUren[0]) + $prevmvh;

// een lus die elf keer doorlopen wordt ( $i = 1 tm 11 )
for($i = 1 ; $i < 12 ; $i++)
{

    // de andere 11 zijn nu telkens het zelfde.
    $mvhOT[] = ($mvh[$i] - $teWerkenUren[$i]) + $mvhOT[$i-1];
}


// laat de array op het scherm zien
foreach($mvhOT as $k => $m)
    echo 'mvhOT' . $k . ': ' . $m . '<br>';
    
?>
Gewijzigd op 27/12/2013 10:33:41 door Frank Nietbelangrijk
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

27/12/2013 12:00:35
Quote Anchor link
Je gaat toch niet in PHP met arrays lopen klungelen, als het gewoon in de database afgewerkt kan worden.

En dan ga je ook niet voor iedere werknemer in een aparte tabel opslaan hoeveel uren die moet maken voor iedere maand, want dat is per maand een constante gebaseerd op een volledige werkweek.
Het aantal uren die door een werknemer per week gemaakt moeten worden staan toch al ergens opgeslagen in de database en dan kan je dat in de query uitrekenen:
tbh_uren_maand * (uren_per_week_werknemer / uren_volledige_werkweek)
 
Frank Nietbelangrijk

Frank Nietbelangrijk

27/12/2013 12:15:07
Quote Anchor link
Hee Ger,

Ik noem dat persoonlijke voorkeur. En als je met mysql werkt dan werk je met arrays in PHP. Maar je hebt gelijk je kunt het rekenwerk ook in de query laten uitvoeren.
 
Yannick Bogaert

Yannick Bogaert

27/12/2013 12:17:01
Quote Anchor link
@ Ivo P:

heb nu een query die alles doet:
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
<?
SELECT MONTH(r.start) maand,
       YEAR(r.start) jaar,
       r.naam,
       SUM( r.tijd + r.night + r.sun - r.lunch ),
       SUM((tw.uren) - ( r.tijd + r.night + r.sun - r.lunch )) AS recup,
       tw.uren
FROM `roster2014` r
JOIN tewerkenuren tw ON tw.naam = r.naam AND tw.jaar = YEAR(r.start) AND tw.maand = MONTH(r.start)
WHERE YEAR(start) = 2013
GROUP BY maand, jaar, naam
ORDER BY r.naam ASC,
         jaar ASC,
         maand ASC

?>


zover zijn we dus en de berekening klopt.
Volgende stap is dit natuurlijk allemaal ordentelijk in een tabel proberen gieten.

@Franknietbelangrijk: dat had ik al inderdaad bekeken om zo te doen maar dan is het
idee van Ivo P beetje verloren nu ik alles mooi in tabellen heb gestopt.
 

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.