kalender met herhaalde events

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Junior Java developer met ondernemend karakter

Vacature Omschrijving Je komt te werken in een jong en creatief team waarin je écht onderdeel bent van de ontwikkelingen binnen de organisatie. Korte lijnen, weinig bureaucratie en een informele werksfeer. Iemand met een ondernemend karakter zal zich snel thuis voelen. Daarnaast bieden we een marktconform salaris, een gezamenlijke lunch én een 2-wekelijkse stoelmassage. Functieomschrijving Je ontwikkelt mee aan een uniek software platform vol componenten waarmee consultants (en klanten) zowel SaaS- als Enterprise oplossingen creëren op het gebied van ‘Kwaliteit & Veiligheid’, ‘Privacy & Informatiebeveiliging’ en ‘Governance, Risk & Compliance’. Vanuit een overtuigende passie voor het digitaal transformeren van werkprocessen

Bekijk vacature »

Jens deDonker

jens deDonker

06/10/2019 23:13:10
Quote Anchor link
Hallo,

Ik ben aan het plannen/kijken om een agenda te maken in php. Nu wil ik dat ik niet iedere week dezelfde events moet gaan opgeven die wekelijks of iedere even week voorkomen.

Het zou mogelijk moeten zijn om te kiezen om een event dagelijks/wekelijks/maandelijks/jaarlijks in te kunnen plannen maar ook dat ik individueel een event kan schrappen en het herhalen kan stopzetten.

Zeker vanwege het 2de ben ik niet zeker wat de beste manier is in verband met het opzetten van mijn databank.

Hoe zouden jullie dit aanpakken?

Bedankt voor het meedenken,
Jens
 
PHP hulp

PHP hulp

17/10/2019 13:23:20
 
Frank Nietbelangrijk

Frank Nietbelangrijk

07/10/2019 00:45:25
Quote Anchor link
Een event die herhaald wordt moet één event in de database zijn. Je zou dus iets krijgen als

id: 5
description: een afspraak die iedere twee weken terug komt
start: 2019-10-5 12:00:00
repeatDays: 14
end: null (of een einddatum)

Zo kun je deze event in één keer aanmaken en oneindig herhalen maar ook in één keer weg kieperen of aanpassen.

Tweede probleem: Er één tussen uit halen of aanpassen. Bijvoorbeeld de tijd...
Hiervoor zou je een tweede tabel kunnen aanmaken waarin komt te staan welke moeten vervallen:

id: 1
event_id: 5 (verwijst naar de de event uit de eerste tabel)
index: 3 (de 3e keer dat deze event voorkomt komt te vervallen)

De wijziging zou je vervolgens (denk ik) als een nieuwe event kunnen opslaan (wat logisch is want hij valt dan toch uit de maat).
 
Rob Doemaarwat

Rob Doemaarwat

07/10/2019 08:37:30
Quote Anchor link
Onder het mom: beter goed gejat dan slecht zelf verzonnen: de CalDAV spec. Als ik even in m'n eigen database mee kijk komt het op het volgende neer:
- In 1e instantie zoals Frank hierboven al aangeeft een single record met een herhaal interval (niet alleen "days", maar ook "WEEKLY", "MONTHLY", enz).
- Voor evt. individuele wijzigingen wordt vervolgens steeds naar de originele geplande datum/tijd gekeken (dus niet "de 3e keer", maar "de keer die op 2019-11-02 viel" = 3e keer in Frank z'n voorbeeld).
- Alleen de wijziging/aanpassing wordt opgeslagen. Dat kan dus zijn "verwijderd", maar ook "15 minuten eerder", "een dag later", enz.
- Op het moment dat je nu de "hoofdafspraak" wijzigt verschuiven de andere afspraken dus ook mee (maar nog steeds "15 minuten eerder", "een dag later", enz. dan de basis) (tenminste, zo gaat het icm de kalender van Thunderbird).
- Als je het interval van 2-wekelijks naar maandelijks wijzigt zie je dan dat de gewijzigde dagen blijven staan (ook als ze niet op het nieuwe maand-rooster vallen) (wederom: met Thunderbird).

Kortom: veel plezier ;-) (volgens mij is dit zoiets wat je nooit 100% goed kunt doen, omdat er altijd wel iemand is die vindt dat een bepaalde manier "tegen-intuïtief is"). Wat ik me overigens ook afvraag is hoe dit gaat performen als je een afspraak inplant die elke 5 dagen herhaalt (dat kan in Thunderbird, dus maandag, vrijdag, woensdag, enz), vervolgens de begindatum op 1970-01-01 zet en dan dus steeds uit moet rekenen welke dagen er deze week aan de beurt zijn ...
 



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.