Avatar billede mac10 Nybegynder
28. april 2010 - 21:49 Der er 7 kommentarer og
1 løsning

Åbningstider opstilling i database? Lige og ulige uger

Hej allesammen,

Jeg er ved at tilknytte åbningstider til mine medlemmer. De skal alle sammen kunne vælge mandag-søndag for både lige og ulige uger.

Jeg har fundet 2 løsninger at gøre det på, men synes begge 2 er meget besværlige.

Løsning 1:
Når en bruger opretter sig så tilføjer den en række i en tabel som indeholder felter som:
- id
- member_id
- monday_open
- monday_close
- tuesday_open
- tuesday_close

Løsning 2.
Når en bruger opretter sig bliver der ikke lagt noget i databasen, men går han ind og retter sine åbningstider, f.eks. kun mandag i lige uger så smider den følgende ind:
- id
- member_id
- day (f.eks. mandag)
- open
- close
- weeks (lige eller ulige)
og dette indsætter den så når brugeren retter i sine åbningstider, så der kun ligger det data som brugeren skriver ind. Hvis han nu f.eks. kun har åbent mandag og onsdag så slipper den for en masse tomme felter.

Jeg synes dog at begge løsninger virker utrolig uoverskuelige. Er der nogen der har erfaring med at bygge det på en mere solid og let måde som også gør det mere overskueligt at bygge og rode ved?

På forhånd mange tak.
Avatar billede Slettet bruger
28. april 2010 - 22:42 #1
Nu skriver du ikke hvad det er for nogen medlemmer og hvad de åbner og lukker...
- eller om åbningstiderne har nogen konsekvenser for "systemet" (booking/reservation..?).

Men generelt: Den slags information, hvis den "bare" skal være menneske-læsbar, er det lettere at overlade helt til "leverandørene". De har sikkert allerede en formulering som de har filet på i årevis : )

Giv dem ét tekstarea, så kan de bare slå sig løs.
- og du slipper for at bekymre dig om undtagelser og obskure helligdage.
Avatar billede mac10 Nybegynder
29. april 2010 - 08:08 #2
Hej T4Nk3R,

Det skal være helt og aldeledes simpelt. De kan kun vælge dage i lige uger og ulige uger. Ikke noget med helligdage, eller booking, det er blot generelt for hele året.

Jeg tænkte også bare på simple forms, men det skal også være sådan at man kan se hvem der har åbent lige nu, så på en eller anden måde skal det jo struktureres ordentligt. Hvilken løsning vil du foreslå?
Avatar billede Slettet bruger
29. april 2010 - 09:24 #3
Ja, så har "vi" problemet : )

Jeg ville stille en enkel tabel på deres "stamdata side":

Åbningstid:
Mandag | Åbner | Lukker
Tirsdag | Åbner | Lukker
Onsdag | Åbner | Lukker
Torsdag | Åbner | Lukker
Fredag | Åbner | Lukker
Lørdag | Åbner | Lukker
Søndag | Åbner | Lukker

Evt. med dropdowns (hver halve time fra 05:00 - 22:30) til sikring af valide data i første forsøg...
Med default values indsat ved oprettelsen: 9:00 - 17:00 f.eks.

Evt. to af disse "blokke" ved siden af hinanden, hvis det er nødvendigt at skelne mellem lige og ulige uger.. (hvor gør man det ?)

MEN du skal nok være forberedt på tæsk, hvis ikke de kan få lov at registrere undtagelser...
Eller at de vil ændre disse data hele tiden
= uheld, irritation, supportbøvl (og "kunder" som får forkert besked!)

I det mindste bør de kunne registrere hele lukke-dage: Ferie, helligdage, kurser...

Jeg ville tilføje en helt ny data-tabel kun til disse lukkedage.
- og så tilføje et opslag i denne (id+dato) når du skal afgøre om der er åbent idag.
Avatar billede mac10 Nybegynder
29. april 2010 - 09:44 #4
Jeg er næsten helt enig :) Se bort fra helligdagene, det kan de skrive i deres profil, det er blot generelle åbningstider.

Ville det ikke være smartere at adskille det fra deres stamdata fremfor at smide 14 rækker oveni de eksisterende 20 rækker jeg har?

Hvis nu de kun arbejder Mandag og onsdag alle lige uger, og holder lukket alle andre dage, så vil der jo være ekstremt mange tomme felter som blot ligger og fylder? Og med et par tusinde medlemmer skal databasen nok brokke sig på et tidspunkt.

Er det så ikke bedre at ligge det i en mellemtabel som laver REPLACE INTO når de retter deres åbningstider? På den måde vil den jo kun gemme de data de egentlig har og skal vise til besøgende. Så opretter de en bruger, men egentlig ikke er interesserede i at udfylde åbningstider så ligger der ikke en masse tomme felter og fylder? Eller? :)
Avatar billede showsource Seniormester
29. april 2010 - 10:28 #5
Jeg ville nok lave en tabel som

id int(10) unsigned NOT NULL AUTO_INCREMENT,
user int(10) unsigned NOT NULL
ugedag int(1) unsigned NOT NULL
lige int(1) unsigned NOT NULL DEFAULT '0'
start time NOT NULL DEFAULT '00:00:00'
slut time NOT NULL DEFAULT '00:00:00'

hvor feltet "user" jo så referer til din brugertabel
Feltet lige afgør om det er lige eller ulige uger.
Avatar billede mac10 Nybegynder
29. april 2010 - 11:48 #6
Hej Showsource,

Ja det var det jeg tænkte på, nemlig at lave en mellemtabel, så den kun indeholder de data som brugeren egentlig skal fremvise, og ikke indeholder masser af tomme felter.

Jeg går i krig med det - puha - smid venligst svar for bidraget til af få min hjerne op og koge :o)
Avatar billede mac10 Nybegynder
29. april 2010 - 13:03 #7
Så er den fikset og virker flawless ;) Tak for hjælpen! Smid et svar - mange tak
Avatar billede showsource Seniormester
29. april 2010 - 15:05 #8
Hvis du får mange rækker, skal du nok ha' index på user, ugedag og lige
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