multiple SUM

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

PHP Developer

Functieomschrijving Wij zijn op zoek naar een PHP Developer met Laravel ervaring! Voor een groeiende werkgever in regio Breda zijn wij op zoek naar een medior PHP developer met Laravel ervaring. Je gaat aan de slag met het ontwikkelen van maatwerk software voor klanten in een specifieke markt. Als PHP developer ben je samen met een gemotiveerd team van 6 collega’s verantwoordelijk voor de ontwikkeling, beheer en het innoveren van informatiesystemen voor klanten in een specifieke branche. Als software developer ondersteun je complexe uitdagingen van klanten. Je brengt hun wensen in kaart en vertaalt deze door naar maatwerk software. Om

Bekijk vacature »

Front-End React Developer

As a Front-End React Developer you improve the user-experience of our web applications for your colleagues in Coolblue. How do I become a Front-End React Developer at Coolblue? As a Front-End React Developer you are responsible for developing user interface components and implementing them using React.js concepts and workflows. You work with the UX Designer and get energy from coming up with creative solutions and present these within the team. During the day you gather and welcome feedback on your technical and soft skills. Would you like to become a Front-End React Developer at Coolblue? Read below if the job

Bekijk vacature »

Fullstack Webdeveloper .NET Azure Big Data SaaS

Bedrijfsomschrijving Deze klant van ons is recentelijk onderdeel geworden van een grote moederorganisatie, ze zijn dé partij als het gaat om software maken voor ambitieuze ondernemers, ze maken maatwerk software. Vanuit het fantastisch vormgegeven hightech gebouw te Rotterdam centrum werken ze met zo'n 40 medewerkers aan hoogwaardige software gericht op financiële data, betaalinformatie, maar ook backoffice software. De software wordt webbased, desktop en mobile aangeboden en er worden zeer moderne ontwikkeltechnieken toegepast. Je moet dan denken aan patroonherkenning, Big Data, Machine Learning en OCR. Als Developer, ongeacht je niveau, ga je hier te maken krijgen met de allerleukste kant van

Bekijk vacature »

Software Ontwikkelaar

Functie omschrijving Voor een echt familiebedrijf in de omgeving van 's-Hertogenbosch ben ik op zoek naar een Software Developer. Jij gaat in de functie van Software Developer werken met C# en .NET framework Jij gaat maatwerk software ontwikkelen en softwareoplossingen creëren. Daarnaast optimaliseer je de bestaande software. Oplossingen waar de klant echt iets aan heeft, jij krijgt er energie van op dit te realiseren. Je gaat werken in een Microsoft omgeving(ASP.NET) en gebruikt daarnaast C# en MVC. Samen met het huidige IT team binnen deze organisatie verwerk je de wensen van de klant tot een (eind)product. Bedrijfsprofiel Deze organisatie is

Bekijk vacature »

Medior/senior Front-end 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 »

.Net ontwikkelaars voor de zorgsector

Bedrijfsomschrijving Voor onze klant in de omgeving van Zwolle zijn wij op zoek naar een ervaren .Net ontwikkelaar, bij voorkeur met ervaring binnen de belangrijkste sector van Nederland, namelijk: de zorgsector. Deze internationale organisatie ontwikkelt software voor de zorgsector. Er werken zo'n 25 medewerkers hard aan een oplossing die gebruikt wordt door heel Nederland. Er heerst een informele sfeer waarbij er altijd ruimte is voor een grapje. Je collega's zijn stuk voor stuk sterke ontwikkelaars vanuit verschillende achtergronden en met verschillende leeftijden. Je komt hier terecht in een organisatie die zich hard inzet om de zorgsector te verbeteren. De mogelijkheden

Bekijk vacature »

Front-end developer (Vue.js) gezocht!

Functie Als Front-end developer is het jouw doel om efficiënte en effectieve frontend code te ontwerpen, ontwikkelen en onderhouden die goed aansluit bij de functionele behoefte vanuit de klant. Je zorgt voor optimale SEO-resultaten, sitespeed en frontend security. You build it, you run it, you own it! Je maakt deel uit van een DevOps Scrum team en werkt samen met back-end developers, test-engineers, interaction designers en een projectmanager. Er zijn verschillende groepen Scrum teams. Een roadmap team is jouw ‘’thuisbasis’’, daar wordt gewerkt aan doorontwikkeling van bestaande omgevingen voor een aantal klanten. Hiernaast zijn er projectteams waar nieuwe omgevingen worden

Bekijk vacature »

Junior Software developer

Functie Als junior .NET ontwikkelaar start jij in een compact team met drie ervaren .NET ontwikkelaars. Wij werken op projectbasis en begeleiden zelf het hele traject van A tot Z. Wij bieden jou dan ook een brede functie aan met veel technische uitdaging! Ons traject ziet er als volgt uit: 1) Wij analyseren de behoefte van onze klant 2) Wij werken de behoefte uit en vertalen dit naar technische werkzaamheden en maken een uren/kosten schatting; 3) Wij gaan aan de slag met het ontwikkelen van het product met directe feedback van de klant, zodat datgene gerealiseerd wordt, wat gewenst is;

Bekijk vacature »

Medior/Senior Software Developers gezocht in de Ra

Functie Op dit moment staan er posities open voor de volgende functies: Front-end, Back-End & Fullstack software developer. Als Front-End software developer werk je met JavaScript en de bijbehorende technologieën zoals TypeScript, Angular, React, Vue en Svelte. Als Back-End software developer ben je bezig in NodeJS en doe je dit met behulp van AWS, NoSQL, REST en GraphQL. Je krijgt leuke en uitdagende opdrachten met een gemiddelde duur van anderhalf jaar. Hier werk je in een team met andere IT’ers aan het ontwikkelen en verbeteren van software. Je wordt begeleid door een accountmanager die fungeert als jouw aanspreekpunt. Het team

Bekijk vacature »

Software Programmeur

Functie omschrijving Ben jij op zoek naar een organisatie waar je samen met een team werkt aan iets moois en waar je naast hard werken ook hard kunt lachen? Dan ben je hier aan het juiste adres! Voor een informeel IT-bedrijf in omgeving Wassenaar zijn wij op zoek naar versterking. Ben jij op zoek naar een nieuwe uitdaging als Software Programmeur lees dan snel verder! Werkzaamheden Programmeur Je bent bezig met het ontwikkelen van software en webapplicaties. Je kunt technische klussen uitvoeren op locatie. Je onderhoudt contact met de projectleider om er zeker van te zijn dat een project goed

Bekijk vacature »

Senior Front-End Developer

Als Senior Front-End Developer bij Coolblue verbeter je de gebruiksvriendelijkheid van onze webshop voor miljoenen klanten. Wat doe je als Senior Front-End Developer bij Coolblue? Als Senior Front-end Developer werk je aan de gebruiksvriendelijkheid van onze webshop voor miljoenen klanten. Je vindt het leuk om samen te werken met de UX designer om stories op te pakken. Daarnaast ben je trots op je werk en verwelkomt alle feedback. Ook Senior Front-end Developer worden bij Coolblue? Lees hieronder of het bij je past. Dit vind je leuk om te doen Verbeteren van de gebruiksvriendelijkheid van onze webshop voor miljoenen klanten. Nadenken

Bekijk vacature »

.NET developer

Functie Als .NET developer wordt jij onderdeel van ons ICT team. In dit multidisciplinaire team ben jij samen met onze senior .NET ontwikkelaar en medior .NET ontwikkelaar verantwoordelijk voor ons ERP systeem. In dit systeem (Navision) ga jij leren ontwikkelen. Wij bieden jou dan ook een gedegen opleiding aan, samen met de ondersteuning van onze Senior .NET developer. Daarnaast ga jij aan de slag met ons portaal geschreven in Sharepoint. Verder ben jij verantwoordelijk voor EDI verkeer en het ontwikkelen binnen het ERP systeem en andere toepassingen en rapportages. Van jou wordt verwacht dat jij het proces goed leert kennen

Bekijk vacature »

PHP Web Developer

Functie omschrijving Voor een klein softwarebedrijf in de omgeving Roosendaal, zijn wij op zoek naar een PHP web developer met een aantal jaar werkervaring. Wil jij graag werken aan in-house software projecten voor diverse klanten? Voel jij je prettige in een klein team developers, waar jouw inbreng enorm gewaardeerd wordt? Lees dan snel verder! Jouw werkzaamheden zien er als volgt uit: Je wordt verantwoordelijk voor de ontwikkeling van diverse applicaties. Dit kan de ene keer een online platform voor aanbiedingen zijn, en de andere keer een software pakket dat gebruikt wordt om interne processen te automatiseren. Het zijn stuk voor

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 »

Gezocht: .Net ontwikkelaars met een maatschappelij

Bedrijfsomschrijving Zoek jij als medior .Net ontwikkelaar een inspirerende werkplek bij een bedrijf met maatschappelijk verantwoordelijkheidsgevoel? Dan is deze vacature je op het lijf geschreven. De organisatie bestaat ruim 20 jaar en ze ontwikkelen in house applicaties waarmee de zorgsector enorm mee gebaat is. Jouw applicaties worden gebruikt door duizenden gebruikers waardoor je echt een waardevolle bijdrage kan leveren aan de maatschappij. Het bedrijf is zeer innovatief en vindt een goede werk/privé balans belangrijk. Je krijgt alle mogelijkheden om jezelf verder te ontwikkelen, je werktijden in te delen en daarnaast is het ook mogelijk om deels thuis te werken. Het

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 19:03:04
 
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.