Avatar billede twobias Nybegynder
07. juli 2001 - 21:38 Der er 2 kommentarer og
2 løsninger

Kalender med gentagende begivenheder

Jeg er for at lære PHP gået igang med at lave en kalender og det går fint indtil videre, jeg har en fungerende kalender hvor man kan tilføje, rette og slette begivenheder etc.

NB: Jeg bruger PHP4/MySQL

Nu vil jeg godt tilføje muligheden for at lave faste begivenheder. Fx hver 5. søndag skal jeg i bad, eller 24/12 hvert år er der sneboldkamp... Eller 2. Mandag i hver måned skal jeg geninstallere min windows maskine...

Det primære problem er hvordan jeg skal opbygge en tabel i databasen, nogen der har nogen kreative forslag eller eksempler?

PS: Spørg bare hvis jeg ikke har forklaret grundigt nok.
Avatar billede the-gnu.dk Nybegynder
07. juli 2001 - 23:50 #1
Du kunne opbygge databasen sådan:

+ID+Dato----+Dag----+Begivenhed----+
|1 |09072001|Mandag |Rydde op      |
+--+--------+-------+--------------+
|2 |10072001|Tirsdag|Motherfucket  |
+--+--------+-------+--------------+

Hvis du så f.eks. vil rydde op hvad Mandag, sætter du ind i din database sådan:
mysql_query(\"INSERT INTO kalender (Begivenhed) VALUES (\'Rydde op\') WHERE Dag = \'Mandag\'\");

Hvis du f.eks. vil fodre hunden en gang i måneden, bruger du:
mysql_query(\"INSERT INTO kalender (Begivenhed) VALUES (\'Fodre hund\') WHERE Dato = \'01%\'\");
Avatar billede twobias Nybegynder
08. juli 2001 - 10:25 #2
Jo, tak for svaret men du misforstår mig vidst... Mine tre eksemple ville ikke kunne lade sig gøre med din database opbygning.

Jeg ville gerne kunne lave denne slags events baseret på:

1) En ugedag (ikke nødvendigvis hver, men fx hver 2. eller 3. mandag!)

2) fast dato hvert år (fx 24/12 hvert år)

3) Fast dato hver måned (fx 1. hver måned)

4) fast nummer ugedag i måned (fx 2. Lørdag hver måned)
Avatar billede kichian Nybegynder
09. juli 2001 - 14:26 #3
Hvis det skal foregå dynamisk, kan du får hver begivenhed have et felt der siger noget om intervallet for gentagelsen. Og et felt der siger noget om typen af gentagelsen.
Tilføj en tabel som indeholder sidste opdatering af tabellen. Den første person som går ind på kalenderen en given dag, kan så trigge opdateringen af kalenderen.

Eller du kan vælger ved indsættelse at udfylde din kalender for resten af året. Hvis du gemme info om gentagelserne, kan du sidst på året (eller ved gennemgang af ikke genereret kalender) oprette nye events.

Du bruger 2 (3)  tabeller:
  Event (Eid, første_dag, interval, interval_type, Beskrivelse)
  Kalender (Eid, dato)
  Måske : Opdateret (Sidste_dato)
Avatar billede mortenfn Nybegynder
09. juli 2001 - 21:45 #4
jeg er lige kommet på igen.

Du skal nok tænke i andre baner en kun mysql, du skal nok kompinere flere ting. Nu du øver dig må du selv lave koderne, men jeg vil gerne give et par idder. F.eks. den første mandag i hver måned er let da tallet for mandag jo er 1, så det er bo bare at indsætte en IF(date(\'w\',<tidformat>)=1 and date(\'t\',<tidformat>)<8)).

Det bliver lidt værer når du vil have hver 5. mandag så må du have første mandag og så huske $time for den dag og så lægge 5*7*24*60*60 til så får du hver 5. mandag. Så første $time gemmes i mysql og 5*7*24*60*60 gemmes også i mysql.

Jeg håber du kan bruge noget af dette til at komme vidre med.

I øvrigt http://www.thorsnet.dk/index.php?side=kalender

/mortenfn ;o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester