Avatar billede borgenviby Nybegynder
31. januar 2007 - 16:18 Der er 4 kommentarer

Hvordan opsætter man sin database til et bookingsystem?

Forstår ikke helt hvordan man sætter sin database op til et bookingsystem.....
For hvordan gør man det muligt kun at hente de tider ud der ikke er nogen data i?

Hvis jeg vil kører med 15min intervaller, hvad er så smartest?

Har prøvet at lave en database med book_date, book_start, book_end
osv. men hvis jeg skal sætte en tid ind skal jeg først se om tiden er ledig og det virker ikke særligt smart med denne opsætning. For så skal jeg have fat i book_start fra den næste række og sammenligne med book_end fra den forige? Så er jeg i noget array jeg ikke forstår..:o)

Men er der nogen der kan pege mig i en den rigtige retning, måske jeg har overset en tutorial der kan hjælpe.
Avatar billede 0xffff Nybegynder
01. februar 2007 - 14:13 #1
Som jeg ser det har du flere muligheder.

Nu tolker jeg af din post at du ikke har så meget styr på arrays. Så kunne en enkel løsning være simpelthen bare at generere alle tiderne på dagen i DB først med nulls, hvilket vil gøre det simpelt at se om tider er åbne vha. eksempelvist.

select book_start from xxx where book_start is null.

Denne løsning er selvfølgeligt ikke den super teknisk avancerede, men den kunne få dig videre.

Alternativt kunne du beregne differencen imellem de sidste 2 bookinger ved hjælp af datediff. Differencen ville således være åben og du kunne regne dig frem til det nærmest ledige 15mins interval.
Avatar billede borgenviby Nybegynder
02. februar 2007 - 16:50 #2
OK, nu har jeg siddet og funderet over det. Jeg kan altså ikke se det smarte i at lave tiderne først i DB. Hvis jeg har forstået det rigtigt, skal jeg sætte DB sådan op:

0900 | 0915 | 0930 | 0945 | osv
--------------------------------
  0  |  0  |  0  |  0  |

Men så har jeg et nyt problem. For hvad så hvis man bruger 45min. så er 0945 jo ikke ledige mere.

Kan det virkelig passe man er nød til at lave 2 funktioner til at indsætte i DB?

1. til book_start ( indsætte book_date, book_id, book_start )
2. til book_end ( indsætte book_date, book_id, book_end )

For så kan man vel lave et DB udtræk og regne forskellen mellem book_start fra næste række mod book_end fra første.:

Så hvis man har : 09:00:00 => 09:45:00
                : 11:00:00 => 11:30:00

Så kan man regne 11:00:00 - 09:45:00 Dif = 01:15:00
Avatar billede borgenviby Nybegynder
02. februar 2007 - 17:05 #3
F.eks.

    $sql ="SELECT book_start ";
    $sql .="FROM bookings ";
    $sql .="WHERE medarbejder_id =" . $medarbejder_id . " ";
    $sql .="AND book_date =" . $book_date . " ";
    $sql .="ORDER BY book_start ASC ";
        $book_start = db_querry($database_name, $sql);
        while($book_start_ = fetch_array($book_start);     

        $sql ="SELECT book_end ";
    $sql .="FROM bookings ";
    $sql .="WHERE medarbejder_id =" . $medarbejder_id . " ";
    $sql .="AND book_date =" . $book_date . " ";
    $sql .="ORDER BY book_end ASC ";
        $book_end = db-querry($database_name, $sql);
        while($book_end_ = fetch_array($book_end);     

        if($book_start-$book_end >= $ydelse_tid){
            bla bla :o)
        }

Lyder det helt åndsvagt?
Tager mod al den hjælp jeg kan få.
Avatar billede borgenviby Nybegynder
29. juni 2007 - 16:48 #4
Jeg lukker den tråd :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
Computerworld tilbyder specialiserede kurser i database-management

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