multiple SUM

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Front-end developer wanted! (Angular, React, Vue.j

Functie Under the guidance of 3 account managers, one of whom will be your point of contact within your expertise, you will start working for various clients. He or she will help you find a suitable and challenging assignment. Naturally, they will take your situation, experience and (technical) ambitions into account. The assignments last one to two years on average. This allows you to really commit to a project and make an impact as a consultant. Besides the assignment, you will regularly meet your colleagues from the IT department to share knowledge or discuss new trends, for example. Master classes

Bekijk vacature »

Lasrobot Programmeur

Over de functie Off-line programma’s maken die het beste resultaat bij de lasrobot mogelijk maken De programma’s met behulp van teach verder optimaliseren Proactief meedenken over oplossingen en over de juiste invulling van lasmallen Het lasrobotproces zoveel mogelijk optimaliseren Over het bedrijf Onze opdrachtgever is gespecialiseerd in de engineering, productie en assemblage van samengestelde plaatwerkproducten en monodelen uit metaal. Onze klant werkt samen met het team aan de mooiste producten van de toekomst. Binnen dit bedrijf staat een sterk team van specialisten op het gebied van industrial design, mechanical engineering, in-house prototyping en all-round projectmanagement. Met daarbij uiteenlopende kennis in

Bekijk vacature »

Lead developer

Functie Als lead developer wordt jij verantwoordelijk voor een van onze development teams. Samen met de Software Architect bewaak jij de kwaliteit en uitvoering van onze complexe vraagstukken. Daarnaast ben jij verantwoordelijk voor het inschatten, designen en ontwikkelen van middelgrote tot grote veranderingen in de software. Ook coördineer jij het proces rondom complexe technische vraagstukken. Verder bestaat jouw takenpakket uit het volgende: – Het aansturen van jouw development team; – Het begeleiden van Junior Software Engineers; – Het maken van technische analyses m.b.t. nieuwe aanvragen en het tijdsbestek inschatten voor de uitvoering hiervan; – Het uitvoeren van de ontwikkeling van

Bekijk vacature »

Senior developer (PHP en VB.NET)

Functie De development afdeling bestaat uit 2 teams. Het productteam (10 developers) is verantwoordelijk voor verschillende applicaties met als doel om zoveel mogelijk te automatiseren en uit te werken tot standaard software. Met diverse Solutions Architecten en ervaren developers denken ze voortdurend mee met hun klanten en bouwen ze de basis van het uiteindelijke maatwerk dat wordt geleverd. Hiernaast hebben ze een maatwerk/projectteam. Dit team bestaat momenteel uit 8 developers (junior tot senior) en is verantwoordelijk voor het maatwerk in hun klantprojecten. Momenteel zijn ze op zoek naar een senior developer die aan de slag gaat in het productteam. Hierin

Bekijk vacature »

Laravel PHP developer in een jong team

Bedrijfsomschrijving Als je op zoek bent naar een werkplek waar plezier en uitdaging hand in hand gaan, dan is dit bedrijf de juiste keuze voor jou. Hier kun je werken aan uitdagende projecten en krijg je als developer veel verantwoordelijkheid. Het bedrijf waardeert kwaliteit boven kwantiteit en richt zich op het ontwikkelen van hoogwaardige applicaties en websites waar klanten enthousiast over zijn. Dit bedrijf is vooruitstrevend en streeft naar het leveren van de best mogelijke resultaten voor hun klanten. Als medior PHP ontwikkelaar met 3 jaar ervaring ben jij de persoon die we zoeken. Je krijgt hier de kans om

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 »

Java Developer

Java/Kotlin Developer Ben jij een ervaren Java/Kotlin developer met een passie voor het automatiseren van bedrijfsprocessen? Wil je graag deelnemen aan uitdagende projecten bij aansprekende klanten? En ben je op zoek naar een professioneel, ambitieus en dynamisch bedrijf om je carrière verder te ontwikkelen? Kom dan ons team bij Ritense in Amsterdam versterken! Zo ziet de functie eruit: Als Java/Kotlin developer bij Ritense ben je verantwoordelijk voor de ontwikkeling en implementatie van applicaties die bedrijfsprocessen automatiseren, zodat onze klanten slimmer, efficiënter en klantgerichter kunnen werken. Als developer ben je in de lead en zorg je voor de correcte oplevering van

Bekijk vacature »

Applicatiebeheerder/ Ontwikkelaar

Dit ga je doen - Verantwoordelijkheid dragen voor het complexe applicatielandschap; - Schakelen met eindgebruikers en leveranciers; - Verdeling in werkzaamheden tussen dagelijks beheer ontwikkelen; - Het analyseren van de behoeften van gebruikers en het vertalen hiervan naar functionele specificaties voor de applicaties; - Actief bijdragen aan het leveren van passende oplossingen voor het applicatielandschap. Hier ga je werken Deze organisatie, gevestigd in de regio van Amsterdam is een van de meest toonaangevende mediaorganisaties in Nederland. Door de organisatiecultuur krijg jij veel ruimte om initiatief te nemen en zelfstandig aan het werk te gaan. Samen met het IT team zorg

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 »

Applicatie Ontwikkelaar

Bedrijfsomschrijving DUO verzorgt als uitvoeringsorganisatie, zijnde onderdeel van het Ministerie van Onderwijs, Cultuur en Wetenschap de uitvoering van complexe wet- en regelgeving en heeft een uitgebreid dienstenpakket. DUO financiert en informeert onderwijsdeelnemers en onderwijsinstellingen. Voor verdere informatie zie www.duo.nl Functieomschrijving Wie zoeken we? Jij bent een enthousiaste, flexibele OPS’er die het leuk vindt om het bestaande examenlandschap te vernieuwen. Je bent leergierig en hebt interesse in cloud- en containertechnieken zoals OpenShift, Docker en Helm. Je gaat een uitdaging niet uit de weg en wil je nieuw opgedane kennis graag delen met de collega’s binnen en buiten het team. Doordat de

Bekijk vacature »

Back-end Developer

Functieomschrijving Heb jij kort geleden jouw HBO ICT diploma in ontvangst mogen nemen? Of ben je toe aan een nieuwe stap? Voor een softwarebedrijf in regio Oosterhout zijn wij op zoek naar een back-end developer met kennis of ervaring met C# en SQL. Je draagt bij aan de implementatie van aanpassingen, verbeteringen en aanvullingen in de C# based applicaties; Je test de software en ontwikkelt deze door; Je brengt de aanpassingssuggesties van klanten in kaart, om ze vervolgens te analyseren en daarna te concluderen of de aanpassing een verbetering is; Je houdt je bezig met het ontwikkelen van nieuwe functionaliteiten;

Bekijk vacature »

PHP Developer

Dit ga je doen Je werkt nauw samen met het websitebureau aan de ontwikkeling en optimalisering van het internationale platform; Je ziet nieuwe webshops op en voert optimalisaties door; Je bouwt aan technische, functioneel en commercial resultaat; Je vindt het leuk om zelfstandig binnen een internationale organisatie te werken, maar krijgt ook energie om samen met collega's te werken. Hier ga je werken Voor een bedrijf in de regio Rotterdam zijn wij opzoek naar een PHP Developer. Je wordt onderdeel van het communicatieteam en gaat je bezighouden met het optimaliseren van de website van dit internationale bedrijf. Je schakelt veel

Bekijk vacature »

Mendix Developer

Functie Wat ga je doen als Mendix Developer? We leven in een wereld die snel ontwikkelt en veranderd, ook nemen bedrijfsbelangen toe en blijken risico’s moeilijker in te schatten, daarom wij op zoek naar Junior, Medior en Senior Developers die bedrijven kunnen helpen met hun screeningproces en zorgen dat deze efficiënt en 100 procent AVG compliant is. Het concept achter Mendix is duidelijk. De klant heeft een vraag/probleem. Dit kunnen we door middel van slimme software oplossen. In plaats van te werken met de nieuwste technieken en tools, wordt er gekozen voor het implementeren en maken van software dat op

Bekijk vacature »

C# .NET Developer

Dit ga je doen Ontwikkelen van de Back-end in .NET6 / C# en WebAPI (Focus);) Ontwikkelen van de Front-End in Nodje.js en Angular (secundair); Ontwikkelen in Blazor; Opstellen van een technisch ontwerp; Testen, documenteren en implementeren van de nieuwe applicatie; Verzorgen van de nazorg, na de implementatie. Hier ga je werken Binnen deze organisatie werken duizenden mensen binnen allerlei verschillende disciplines. Tevens hebben zij veel specialiteiten in huis, waaronder ook .Net Developers. Ter uitbreiding van een nieuw team en ter ondersteuning van het project zijn ze opzoek naar een nieuwe collega voor het team. Als C#.NET Developer zal jij je

Bekijk vacature »

Node.js developer

Functie Onder begeleiding van 3 accountmanagers waarvan er 1 binnen jouw expertise je aanspreekpunt zal zijn ga je aan de slag bij diverse opdrachtgevers. Hij of zij helpt je bij het vinden van een passende en uitdagende opdracht. Hierin houden ze uiteraard rekening met jouw situatie, ervaring en (technische) ambities. De opdrachten duren gemiddeld één tot 2 jaar. Hierdoor kun je je ook echt vastbijten in een project en als consultant impact maken. Naast de opdracht ben je regelmatig met je collega’s van de IT-afdeling om bijvoorbeeld onderlinge kennis te delen, of nieuwe trends te bespreken. Ook worden er regelmatig

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

25/11/2024 00:32:07
 
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.