Personeelskalender

  • Beste,


    Na tijdje weg te zijn ben ik terug beginnen scripten maar ik loop jammer genoeg tegen een probleem aan. Ik ben namelijk een verlofkalender aan het maken voor mijn baas
    maar die wilt dit in een soort tabel, neen niet jquery of en ander soort kalender.


    Ik zou dit namelijk in een soort tabel willen.


    Ik zal dit proberen zo goed mogelijk uit te leggen xD


    Alles wordt opgeslaan in MySQL (zie hieronder)
    - Personeel
    - Verlof
    - Datums <--- Hier zitten alle dagen in.


    Ik heb al geprobeerd mee inner join maar kom er helaas niet aan uit. Hopelijk kunnen jullie mij hierin helpen. Zie afbeelding hoe het zou moeten staan.


    Hoop dat ik het een beetje goed heb uitgelegd...



    Edit: E.v.t ben ik wel bereid om hier een vergoeding voor te betalen.

  • Guest, wil je besparen op je domeinnamen? (ad)
  • Is nu de bedoeling dat er een stukje komt waarbij je die gegevens kunt invoeren, opvragen en kunt wijzigen?


    Of hoe je deze tabel in de database kunt krijgen? Stuur mij een privé bericht, dan denk ik dat ik je wel verder kan helpen.

  • Betse,


    De bedoeling is gewoon dat de tabel gemaakt wordt met de gegevens van de database. Zoals het voorbeeld.


    Boven aan de tabel moet eerst alle personeelsleden komen (hier kunnen personeelsleden worden toegevoegd of verwijderd) daar onder komt er een kalender met alle datums, is een van de personeelsleden in verlof zal het gemarkeerd worden met tekst zoals in het voorbeeld.


    Hoop dat het zo beetje duidelijk is.


    Mvg

  • Heb je een strategie in je hoofd? Daarna is het toch gewoon een kwestie van code kloppen? Maak eerst een blauwdruk.


    Wat je wilt is een tweedimensionale matrix: personeelsleden X datums.


    Je hebt dus sowieso alle personeelsleden nodig. Dat lijkt mij een aparte query. Het kan namelijk voorkomen dat sommige personeelsleden geen verlof hebben (in een bepaalde periode).


    Daarna ga je alle dagen van een periode (week? maand? jaar?) uitdraaien. De dagen dat personen verlof hebben zul je dan moeten markeren.


    Wat je dus nodig hebt is nog een query die het verlof van personeelsleden voor een periode uitleest.


    Vervolgens sla je dit op in een handige dataset, bijvoorbeeld een (genest) array verlofdatum => id's van personeelsleden. Wanneer je dan een rij van de tabel aan het weergeven bent controleer je of die datum (rij) en personeelslid (kolom) in de dataset voorkomt. Deze cel markeer je dan met "Verlof" of wat dan ook.


    Zie je hoe je met het uitstippelen van een plan dit een stuk eenvoudiger wordt? Eerst bepaal je een aanpak, de rest is een kwestie van aan de molen draaien.

  • FangorN bedankt voor je reactie ook. De kalender is al voor groot deel af.


    Loop nu nog tegen een klein probleem. De verlofdagen worden namelijk opgeslagen met start en eind datum. Hoe kan ik deze nu best selecteren? Is dit mogelijk met BETWEEN?


    Ik denk dat ik het namelijk gevonden heb en op het eerste zicht werkt het.


    ik gebruik nu:


    SELECT end, start, pid FROM verlof WHERE '2017-05-19' BETWEEN start AND end AND pid = 'ID'


    Mvg

  • Uhm, de bovenstaande query is om op een specifieke datum te kijken of een specifieke persoon verlof heeft? Voor welk overzicht gebruik je dit? En wat wil je precies bepalen?


    Voor het totaaloverzicht waarmee je de thread begon was het mogelijk handiger geweest dat voor elke dag dat iemand verlof heeft er een aparte database-entry was, maar je kunt het ook nog wel in PHP uitrekenen. Hierbij helpt het altijd om een plaatje te tekenen. Stel dat je voor een bepaalde periode (zeg tussen X en Y) wilt weten wie er verlof heeft. Er kunnen dan 3 dingen aan de hand zijn (die relevant zijn):
    - de einddatum van een verlofperiode valt voor Y (en startte voor X)
    - de volledige verlofperiode valt binnen X en Y
    - de start van een verlofperiode start na X (en eindigt na Y)


    Hier zou je dan wat mee kunnen gaan rekenen, ofwel in SQL door condities op te leggen ofwel in PHP door wat dingen uit te schrijven / uit te rekenen. Maar het hangt er helemaal vanaf wat voor overzicht je precies aan het maken bent en wat je precies wilt weergeven.

Participate now!

Heb je nog geen account? Registreer je nu en word deel van onze community!