multiple SUM

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

C++ Ontwikkelaar

Functieomschrijving Ben jij als software ontwikkelaar toe aan een nieuwe uitdaging? Dan zoeken wij jou! Voor het maken van de procesbesturingssoftware gebruiken onze projectteams een in C++ en C# geschreven tool. Dit is een gedistribueerd object framework wat alle kernfuncties biedt voor een procesautomatisering. Verder zullen jouw werkzaamheden o.a. bestaan uit: Ontwerpen, programmeren en testen van product aanpassingen; Analyseren van vragen en wensen van gebruikers en deze vertalen naar een functioneel ontwerp; Inzichtelijk maken van voortgang omtrent softwarewerkzaamheden, o.a. door middel van SCRUM; Continu toetsen van het effect van nieuwe releases op andere tools en processen; Implementeren van nieuwe product

Bekijk vacature »

Als Lead PHP developer bijdragen aan het onderwijs

Functie Als Lead PHP developer zet je samen met het team en de andere lead developers de technische lijnen uit als het gaat om het ontwikkelen van de applicaties en bepaal je samen met de PO waar elke sprint aan gewerkt zal worden. Je kunt op basis van een user story een goede aanpak formuleren en een planning opstellen, en andere hierin meenemen. Wanneer je team code schrijft verwacht je degelijke oplossingen, bij voorkeur gebruik makend van Domain Driven Design. Je ziet toegevoegde waarde in het beoordelen van het werk van collega’s om zo samen te streven naar hoge kwaliteit

Bekijk vacature »

Cymer Patch Server Developer

Vacature details Vakgebied: Software/IT Opleiding: Senior Werklocatie: Veldhoven Vacature ID: 12919 Introductie This new patch server will be built on Python and Django ReST and GraphQL services with a React frontend, it will consist of several microservices and run on a Kubernetes cluster. It will be supported by several middleware applications such as ElasticSearch, Redis, RabbitMQ, Oracle and Artifactory. Functieomschrijving The Patch Admin team always aim to deliver software at a high quality, we avoid sacrifices here to maintain our velocity. Practically this means that we practice test driven development and perform end-to-end automated testing on our software. This means

Bekijk vacature »

Software Ontwikkelaar PHP

Functie omschrijving Software Ontwikkelaar PHP gezocht! Wij zijn op zoek naar een ervaren PHP Software Ontwikkelaar om het team van onze opdrachtgever te versterken! De ideale kandidaat zal fungeren als verlengstuk van klanten en complexe technische vraagstukken met enthousiasme benaderen. Naast het werken met de nieuwste technologieën, ben je in staat om aan meerdere projecten tegelijkertijd te werken. Als je deze uitdaging aangaat, werk je nauw samen met front-end developers en draag je bij aan het realiseren van grote veranderingen bij klanten. Het bedrijf zoekt iemand die zichzelf graag uitdaagt en altijd streeft naar het leveren van de beste resultaten.

Bekijk vacature »

Traineeship Java Developer

Functie Wat ga je doen als Java Developer? Jij start via ons bij deze opdrachtgever als Trainee Java ontwikkelaar, tijdens het traineeship ga je in 1 jaar van de basis naar professioneel Java ontwikkelaar. Je start samen met een groep trainees, volgt de aangeboden cursussen en gaat aan de slag bij één van onze opdrachtgevers. Na een aantal maanden volgt de volgende opdracht. Door de groei in jouw rol kom je op steeds complexere opdrachten terecht. Veel afwisseling dus. Collega’s met ervaring helpen je bij deze groei en samen met jouw coach ga je een persoonlijke leerplan opzetten om jou

Bekijk vacature »

Magento developer

Functie E-commerce is een ‘’snelle’’ wereld. Om hierin continu voorop te blijven omarmen ze in een vroeg stadium nieuwe technieken. Een webshop is nooit af en kan altijd beter, sneller en efficiënter. Tegelijkertijd hebben ze vanaf hun oprichting altijd vastgehouden aan kwaliteit boven snelheid, en dit loont. Als back-end developer fungeer je als het verlengstuk van hun klanten. Technisch complexe zaken pak je met liefde op, en hierin werk je samen met o.a. front-end developers en designers. Klanten verwacht hierin kwaliteit van het hoogste niveau en een proactieve, meedenkende rol bij het maken van zowel technische als strategische keuzes. Ga

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 »

SQL database developer

Functie omschrijving Voor een software bedrijf in omgeving Breda zijn wij op zoek naar een SQL database ontwikkelaar. Dit bedrijf bouwt applicaties om processen in distributiecentra te optimaliseren. Ter uitbreiding van het huidige team developers zijn wij op zoek naar een SQL database ontwikkelaar. De klanten van dit groeiende bedrijf zitten door heel Europa en jouw werkzaamheden zullen er als volgt uitzien: Het samenstellen van de software op basis van de input vanuit de klant (T-SQL & C#.NET). Het bezoeken van klanten om de processen en mogelijkheden in kaart te brengen. Het ontwerpen van databases met T-SQL als programmeer laag.

Bekijk vacature »

Fullstack JavaScript developer (ReactJS, NodeJS, T

Functie Het team bestaat momenteel uit ruim 15 collega’s, waarvan ruim de helft in het ontwikkelteam werkzaam is. Er zijn gave plannen om het platform ook te gaan toepassen op bijv. vliegvelden, maar ook internationale groei zit in het verschiet en daarom zijn ze op zoek naar versterking. Als Fullstack JavaScript developer werk je nauw samen met 9 fullstack (Python en .NET) developers. Binnen het team ga jij je toespitsen op het creeren van de optimale toegankelijkheid en user experience. Om dit voor elkaar te krijgen zul je ontwerpen, programmeren, testen en implementeren. Het hele proces dus! Maar ook bijvoorbeeld

Bekijk vacature »

Low Code Ontwikkelaar

In het kort Als Low Code Developer werk je aan projecten bij en voor onze klanten, waarbij je voor het ontwikkelen van de oplossingen een technisch low-code platform gebruikt. Samen met het team streef je naar de beste oplossing en bepalen jullie de juiste aanpak. Je rol is divers en je bent van begin tot eind betrokken bij de ontwikkeling zowel de back-end en de front-end van de applicatie. Naast de ontwikkeling en oplevering, breng je ook advies uit aan de klant waarom bepaalde keuzes worden gemaakt. Je bent dan ook communicatief sterk en kunt je keuzes goed (inhoudelijk) onderbouwen.

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 »

C# Developer

Functie omschrijving Voor een softwarebedrijf in de omgeving van Veghel zijn we op zoek naar een C# developer. Word jij blij van ontwikkelen in C# en .NET? Lees dan snel verder! Jouw werkzaamheden zullen er als volgt uit gaan zien: Door middel van ASP.NET, MVC Framework en C# ga je webshops, websites en webapplicaties ontwikkelen. Je zorgt voor de optimalisatie van bestaande software en de automatisering van bedrijfsprocessen. Op basis van de wensen van de klant ga je samen met je collega's ga je op zoek naar de juiste oplossingen en je gaat dit uitwerken tot een mooi eindproduct. Bedrijfsprofiel

Bekijk vacature »

Consultant Low Code Developer

Functie omschrijving Heb jij verstand van datamodellering, NO CODE Platformen en kun jij het aan om projecten te leiden? Ben jij toe aan een nieuwe uitdaging en ben jij HBO afgestudeerd in de richting van IT? Voor een mooie opdrachtgever in omgeving Delft zijn wij op zoek naar een No Code developer die zich bezig gaat houden met het optimaliseren van bedrijfsprocessen bij klanten. Onderdelen functie Je gaat geen code kloppen maar bedenken hoe applicaties eruit moet komen te zien. Je gaat werken met een non code platform, je kunt denken aan Mendix of Betty Blocks. Je bent verantwoordelijk voor

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 »

Python (Django) developer - Remote in The Netherla

Functie Together with your team, consisting of a senior, 2 mediors and one junior developer, you will work on their software in an Agile-based approach. You have an eye for quality, risk, and customer interest. Communication with your colleagues and, where necessary, with customers, plays an important role in achieving a successful result. As a person, you are smart, get things done, and are result-oriented. There is a lot of independence within the development team, apart from the stand-up (10:00 am) and occasional pair-programming sessions. Techniques they use include Python, Django, MySQL, Mercurial, Ubuntu Linux, Nginx. In terms of front-end

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 13:17:56
 
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.