multiple SUM

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Typescript Developer / Cloud platform

Dit ga je doen (Door)Ontwikkelen van het cloud platform; (Door)Ontwikkelen van microservices; Bouwen van nieuwe functionaliteiten; Verbeteringen aandragen voor het cloud platform; Sparren met de business. Hier ga je werken Onze opdrachtgever, gevestigd in regio Eindhoven, levert een compleet dienstenpakket op het gebied van IT. Zij pakken verschillende (complexe) vraagstukken van grote organisaties op. De sfeer intern is gezellig en informeel. Men houdt van hard werken maar gezelligheid door middel van een borrel of gezamenlijke lunch komt er veel voor. Als Typescript ontwikkelaar word je onderdeel van het team gericht op de (door)ontwikkeling van hun eigen cloud platform welke wordt

Bekijk vacature »

C# developer

Functie omschrijving We are looking for a dutch native speaker Ik ben op zoek naar een back-end developer, die met name kennis & ervaring heeft van de programmeertaal C#. Jij gaat aan de slag bij een topspeler in de logistieke sector, die zich behalve met logistiek, ook bezig houdt met softwareontwikkeling. Welke taken komen hierbij kijken? Je gaat desktop- en webapplicaties onderhouden en optimaliseren, waarin je werkt met o.a. C#, ASP.NET, SQL Server en T-SQL. Je hebt regelmatig klantcontact om de wensen in kaart te brengen en te evalueren over de huidige draaiende applicaties. Je implementeert nieuwe functionaliteiten toe aan

Bekijk vacature »

Front-end (Angular) developer - remote werken

Functie Als Front-end (Angular) developer ga je aan de slag met het uitbouwen van hun webapplicatie, als één van de front-end experts ga je samen met collega’s in een devops team werken aan een nieuw front-end voor hun calculatie oplossing. Binnen de calculatiesoftware kunnen meerdere professionals tegelijk samenwerken, 3D calculaties uitvoeren en ook inzien met de benodigde specifieke details. Deze software wordt veel ingezet om projectbeschrijvingen en kosten in kaart te brengen, en tijdens de uitvoering te bewaken. Maar hiernaast liggen er in de toekomst veel meer plannen op het gebied van front-end in de andere applicaties. Genoeg te doen

Bekijk vacature »

Medior C# Developer

Samen met het development team zorg je ervoor dat alle systemen achter de schermen vlekkeloos werken. Wat doe je als Medior C# Developer bij Coolblue? Als C# developer doe je regelmatig mee aan brainstormsessies over user experience, data en task flow met de UX Designer, Product Owner en Data Scientist in je team. Daarnaast schrijf je op zichzelf staande, consistente en testbare code die goed onderhoudbaar en toekomstbestendig is. Ook C# Developer worden bij Coolblue? Lees hieronder of het bij je past. Dit vind je leuk om te doen Werken met verschillende soorten data-opslag, zoals Oracle of AWS. Problemen oplossen

Bekijk vacature »

.NET developer

Wat ga je doen als Full stack .NET developer Microsoft 365? Je stelt je op als sparringpartner voor het team en PO over toekomstige functionaliteiten, architectuur en mogelijke nieuwe producten. Je bent mede-verantwoordelijk voor het vertalen en omzetten van een user story in een passend technisch design. Je implementeert functionaliteiten op basis van een technisch design en user story. Je bent mede-verantwoordelijk voor het beheer van Azure DevOps, waaronder het beheer van GIT, Build Pipelines, Release Pipelines en geautomatiseerde testen. Hier herken jij jezelf in Hbo werk- en denkniveau of hoger aangevuld met relevante certificeringen en/of cursussen; Minimaal 3 jaar

Bekijk vacature »

Backend Developer Integraties API HBO REST

Samengevat: Deze werkgever is een IT-consultancy. Wil jij werken als Backend Developer Integraties? Heb jij kennis van gangbare berichtformaten? Vaste baan: Backend Developer Integraties API HBO €3.100 - €4.400 Zij bieden innovatieve oplossingen die bedrijven efficiënter en wendbaarder maken, waardoor onze klanten zich net zo snel kunnen ontwikkelen als de business van hen vraagt. Bij bij hun werk je aan onze eigen bedrijfsapplicaties. Je ontwikkelt met ons de meest nieuwe software. Wij blinken uit als het gaat om de inzet van technologie. Deze werkgever staat open voor elke nieuwe trend. Onze systemen zijn groot en ingewikkeld. Hou jij van diepgang

Bekijk vacature »

C++ Ontwikkelaar

Functieomschrijving Ben jij toe aan een nieuwe uitdaging en werk je graag en goed in C++ en C#? Dan zijn we op zoek naar jou! Dit bedrijf is dé specialist op het gebied van automatiseringssoftware voor een specifieke branche en ze zijn per direct op zoek naar versterking in hun development team. Wat jij gaat doen binnen jouw rol als C++ ontwikkelaar; Je vertaalt de wensen van gebruikers naar een functioneel ontwerp. Je houdt je bezig met het ontwerpen, programmeren en testen van product aanpassingen. Je gaat nieuwe product releases implementeren in de projectteams. Je gaat de effecten van nieuwe

Bekijk vacature »

Junior PHP (Laravel) Developer

Functie omschrijving Wij zijn op zoek naar een PHP Laravel Developer! Sta je aan het begin van je carrière en ben je op zoek naar een leuke baan? Lees dan verder! Voor een softwarebedrijf in omgeving van Schiphol zijn wij op zoek naar een ervaren PHP (Laravel) Developer. Je gaat je bezighouden met het ontwikkelen van innovatieve bedrijfsapplicaties. Samen met het team, bestaande uit designers en developers, maak je mooie oplossingen voor bedrijven in diverse branches. Je zorgt dat de opgeleverde websites perfect werken en de klant meer dan tevreden is. Je kunt rekenen op een afwisselende baan met leuke

Bekijk vacature »

C# .NET Software Ontwikkelaar

Functie omschrijving Gezocht: Software Developer C# .NET voor een dynamische organisatie! Ben je onlangs afgestudeerd of ben je toe aan de volgende stap in je professionele carrière? Lees dan verder! We zijn momenteel op zoek naar een Software Developer die klaar is voor een nieuwe uitdaging en die onze eindklant in de regio Arnhem kan versterken. In deze functie werk je aan verschillende projecten en bezoek je vaak klanten. Je kunt een rol verwachten met veel uitdaging, diversiteit en verantwoordelijkheid. Bedrijfsprofiel Binnen welke organisatie ga je aan de slag? Je gaat werken bij een organisatie die zich specialiseert in het

Bekijk vacature »

Low-code developer

Functie omschrijving Heb jij altijd al een training willen volgen in het buitenland? Voor een leuke opdrachtgever in omgeving Alphen ad Rijn zijn wij op zoek naar kandidaten die aan de slag willen als Low Code Developer! Beschik jij over HBO/WO nivo, bij voorkeur Informatica, maar een ander technische opleiding zoals bijv. wiskunde, natuurkunde is ook goed. Heb jij aantoonbare affiniteit met IT en ben jij gedreven, enthousiast, communicatief vaardig en klantgericht? Lees dan snel verder! Je wordt getraind tot een volwaardig Low Code Developer, het traject ziet er als volgt uit: Start 1e week januari, opleiding van 3 weken

Bekijk vacature »

Integratie expert - Java Developer

Dit ga je doen Nieuw koppelingen ontwerpen, ontwikkelen en implementeren; Je schakelt met de klanten om hen zo goed mogelijk van dienst te zijn. Strategisch kijken naar nieuwe mogelijkheden op bestaande of nieuwe koppelingen zo effectief mogelijk te realiseren; Je bestaande toolset afwegen tegen nieuwe mogelijkheden om integratiedoelen steeds effectiever en/of effcienter te bewerkstelligen; Bestaande software koppelingen beheren, dit zijn koppelingen met zowel interne als externe systemen; Overleg met zowel directe collega's als met stakeholders om nieuwe integratieplannen concreet te maken; Je kunt de junioren meenemen op sleeptouw. Hier ga je werken Onze klant is op zoek naar een ervaren

Bekijk vacature »

Senior PHP developer

Functie Jouw werkzaamheden zullen grotendeels bestaan uit het in teamverband ontwerpen, vernieuwen en door ontwikkelen van het systeem. Het is echt back-end werk (bijvoorbeeld het doorontwikkelen van een API) en dit moet je dan ook liggen. Ze zijn niet persee gebonden aan talen of tools maar gebruiken graag de technieken die het beste aansluiten op de gegeven oplossing. Voor nieuwe (versies van) componenten maken ze veelal gebruik van Go(lang). Bij aanpassingen aan bestaande onderdelen gebeurt dit in PHP en C++. Het team is heel divers, er hangt een relaxte sfeer en ze organiseren regelmatig leuke music nights, game nights e.d.

Bekijk vacature »

Lead javascript developer Node.js React

Functie Als fullstack JavaScript developer vind jij het uitdagend om op basis van concrete klantvragen nieuwe functionaliteiten te ontwikkelen. Bij voorkeur worden deze functionaliteiten op een bepaalde manier geprogrammeerd, zodat ze door meerdere klanten te gebruiken zijn. Je hebt dus vaak te maken met abstracte vraagstukken. Om dit te kunnen realiseren sta je nauw in contact met de product owner en/of klant. Je bent niet alleen onderdeel van het development team, maar hebt ook vaak contact met de product-owner en/of klanten om daardoor inzichten te verzamelen die leiden tot productverbeteringen. • Inzichten verzamelen bij de klant en/of product owner •

Bekijk vacature »

Als Front-end developer bijdragen aan het onderwij

Functie Als front-end developer om je terecht in een team van goede en ervaren developers, en ga je werken aan de software die door miljoenen mensen gebruikt wordt. Je bent in staat om designs effectief te vertalen naar werkende feautures en hebt oog voor een goede UX van het product. Je staat voor clean code en goede documentatie. Je ziet toegevoegde waarde in het beoordelen van het werk van collega’s om zo samen te streven naar hoge kwaliteit software en code. Je dagelijkse werk bestaat uit het werken aan componenten in de Storybook. Het verbeteren en refactoren van de huidige

Bekijk vacature »

Senior Javascript developer

Functie Het platform is gebouwd in een moderne JavaScript stack, die gebruikt maakt van:  React.js  Redux  TypeScript  Node.js  Google Cloud functions (node.js)  Semantic UI Alle code wordt getest en beoordeeld door collega developers. De continuous integration pipeline maakt het mogelijk om elke dag waarde te leveren aan hun klanten. Het ontwikkelproces is pragmatisch en gebaseerd op Scrum. Wat je zult doen: Ten eerste kun je nadrukkelijk jouw eigen stempel drukken op de technologie, het product en de cultuur van het bedrijf. Je bent bezig met het uitwerken van de architectuur van nieuwe functionaliteiten op

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

28/04/2024 00:57:09
 
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.