Avatar billede DGudiksen Nybegynder
27. februar 2010 - 19:28 Der er 2 kommentarer og
1 løsning

Imellem tidspunkt.

Hejsa.

Er ved at lave et script, som skal udleje servere til folk, man har mulighed for booke serveren f.eks klokken 23 i aften, og 3 timer frem.

Men når man så skal booke den skal den tjekke om den allerede er lejet ud.

Gemmer Start & End tid som date(U) i databasen.

Men kender ikke lige en smart måde at tjekke på om der allerede er en som har lejet den. Nogle som kan hjælpe?
Avatar billede claes57 Ekspert
27. februar 2010 - 21:58 #1
http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html
det må være muligt at kalde med tiden 23:00 og frem til 02:00

Men - hvis du ikke har en server klar kl 23:00, så er det jo ligegyldigt, om du har en fra 00:00 til 02:00. Så det må være nok at spørge på, om du har en ledig præcis 23.00, og derefter om du har den fri i 3 timer..
28. februar 2010 - 19:32 #2
Hvis du gemmer bestillinger med start- og endtid i databasen saa kan du jo, naar du faar en ny bestilling, undersoege om enten den nye bestillings starttid ligger mellem en reservations start- og endtid eller om den nye bestillings endtid ligger mellem start- og endtid for en reservation eller om en reservation ligger mellem start- og endtid for en ny bestilling.  Hvis forespoergsel ikke finder en reservation saa er serveren fri.

Jeg oprettede for test en tabel hvor for hver server (hvis du har flere at leje ud) bevarer servernummer, kundenummer, starttid, og endtid.  Der fyldte jeg et par vaerdier ind (se nedenfor) og saa undersoegte jeg om en ny bestilling fra 2010-03-01 17:45:00 til 2010-03-01 20:30:00 kunne gaa igennem.  Jeg lavede det saaledes at hverken paa den nye bestillings starttid eller endtid er der reservationer, men der ligger en lille reservation mellem start- og endtiden paa den nye bestilling.  Her er forespoergslen:

SELECT * FROM dgudiksen WHERE serverid = 1 AND "2010-03-01 17:45:00" BETWEEN starttid AND endtid OR serverid = 1 AND "2010-03-01 20:30:00" BETWEEN starttid AND endtid OR serverid = 1 AND starttid BETWEEN "2010-03-01 17:45:00" AND "2010-03-01 20:30:00" OR serverid = 1 AND endtid BETWEEN "2010-03-01 17:45:00" AND "2010-03-01 20:30:00";

og den gav dette resultat:

serverid  udlejerid  starttid  endtid 
      1 7 2010-03-01 18:00:00 2010-03-01 19:30:00

saa den nye bestilling kan ikke opfyldes.

Hvordan vil du lave forespoergselerne?  Med php fra en hjemmeside hvor du i en formular fylder servernummer, starttid, og sluttid ind?  I saa fald vil du nok lave tre variabler og indsaette dem i forespoergslen.

Her er min tabel:

CREATE TABLE dgudiksen(serverid INT, udlejerid INT, starttid DATETIME, endtid DATETIME);

INSERT INTO dgudiksen VALUES(1, 1, "2010-03-01 12:00:00", "2010-03-01 15:30:00");
INSERT INTO dgudiksen VALUES(1, 7, "2010-03-01 18:00:00", "2010-03-01 19:30:00");
INSERT INTO dgudiksen VALUES(1, 15, "2010-03-01 22:00:00", "2010-03-02 01:00:00");
INSERT INTO dgudiksen VALUES(1, 3, "2010-03-02 04:15:00", "2010-03-01 06:30:00");
02. marts 2010 - 20:43 #3
Dgudiksen, saa du mit indlaeg?  Hvad er din reaktion?
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