booking system
hej
jeg er ved at lave en projekt opgave hvor jeg ska lave et booking system til en frisør.
man ska kunne se en masse tidspunkter pr. dag, som kunden kan vælge mellem, og når en tid er taget, så vises den naturligvis ikke længere.
nogen som har en ide til hvordan man ska lave det, for jeg er virkelig stået fast.
jeg har lavet en db med en masse datoer og tidspunkter i men når jeg viser dem så spytter den dem nemlig ud i en lang rækker, altså fx. 10 udtræk på sammen dato med tidspunkter, og så 10 nedenunder ingen med dagen efter osv...
det skulle jo gerne være sådan at den viser alle tidspunkter pr. dag, og så kan man skifte dagen og tidspunkterne vises for den dag.
nogen som forstår min plan ???
Skrevet tor. d. 25. januar 2007 kl. 11:09:31| #1
Hvordan er intervallerne på bookingerne? Bestiller man i et fast interval (f.eks 30 min), eller er det op til brugeren selv at bestemme en fra/til tid (såfrem tiden er ledig).
Tænker f.eks at en almindelig klipning ikke tager nær så lang tid som en krølning/farvening.
Skrevet tor. d. 25. januar 2007 kl. 11:30:31| #2
ja det er faste tidspunkter eftersom det bare er et projekt. men 30 min, fra kl 10 til 15
Skrevet tor. d. 25. januar 2007 kl. 11:52:30| #3
Først del er at lave en database med en tabel:
[bookinger]
id: autonummer
tid: dato & klokkeslet
navn: tekst
adr: tekst
..Evt andre oplysninger..
Skrevet tor. d. 25. januar 2007 kl. 12:15:09| #4
der er i databasen
id.
strDato.
strKlok.
strReseveret.
strBookingID
Skrevet tor. d. 25. januar 2007 kl. 12:17:16| #5
jeg går en fejl når jeg prøver at vise klokkeslet ved en dag.
"SELECT * FROM booking_planer where intDato = '02-02-2007'"
hvor er fejlen i den streng. tabel navnet er korrekt og sat til dato.
fejlen er "Datatyperne stemmer ikke overens i kriterieudtrykket"
Skrevet tor. d. 25. januar 2007 kl. 12:23:03| #6
Hvis du bruger Access (hvad jeg kan forstille mig), skal du bruge # til datoangivelse. Bemærk også at datoformatet skal være mm-dd-yyyy:
"SELECT * FROM booking_planer where intDato = #01-31-2007#"
Skrevet tor. d. 25. januar 2007 kl. 13:01:11| #7
det virker fint, problemer er jo som du skriver at den vender datoen om, underligt når jeg udtrække den viser den dd-mm-yyyy hvordan får jeg dem så til at passe, eller ja være ens, hvis du forstår ?
Skrevet tor. d. 25. januar 2007 kl. 13:15:03| #8
Jeg er helt med, og det er et "problem" for ALLE databaser.
Når du henter data fra databasen, sender den automatisk datatypen (og meget andet) med, og derfor ved programmeringssproget, hvordan den skal opfatte data. Du kan af naturlige årsager ikke sende de informationer via en tekststreng. Formatet som datoer (og tal) bliver udskrevet i styres af session.LCID i ASP.
Det kan dog gøres, hvis du opdatere/indsætter via et recordset. Så skal man ikke bekymre sig om datoformater/talformater/tekstformater.
Problemet er ikke større end at man har 3 funktioner i ASP. En til tekstformatering (problematikken med ' tegnet), talformatering (problematikken med , og . som kommatalseperator), og sidst datoformatering (som formatere datoer til det format databasen vil have)
Skrevet tor. d. 25. januar 2007 kl. 13:31:40| #9
Noget helt andet... Du nævner at du har smidt en masse datoer/klokkeslet i databasen, og det er dem der kan bookes. Er der en speciel grund til at du har gjort sådan??
Det kan sagtens laves uden alle de data, og jeg vil da klart anbefale at gøre det, da du så undgår at skulle vedligeholde de data. Hvorfor ikke bare lave et ASP script som laven en tabel:
<%
dato = dateserial(2007,1,22)
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled</title>
</head>
<body>
<table border="1" cellspacing="0" cellpadding="2">
<tr>
<td width="40">Uge <%= datepart("ww",dato,2,2) %></td>
<td width="30">Man</td>
<td width="30">Tir</td>
<td width="30">Ons</td>
<td width="30">Tor</td>
<td width="30">Fre</td>
</tr>
<% for f=0 to 10
fTime = dateadd("n",30*f,dato&" 10:00") %>
<tr>
<td><%= mid(fTime,12,5) %></td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<% next %>
</table>
</body>
</html>
Så er det bare at tjekke hver felt om det er booket via databasen. Det kan jeg smide ind i koden på 10 min...
Skrevet tor. d. 25. januar 2007 kl. 14:01:24| #10
kæft hvor er det smart... hmm, hvis du virkelig gider kan jeg sende dig filerne det er ikke særlig mange og det er ikke specielt rodet ????
Skrevet tor. d. 25. januar 2007 kl. 14:18:58| #11
den vender stadig dataen om når jeg prøver at indsætte en dato via et recordset, hvis altså du mener via en input feldt gennem et asp script
Skrevet tor. d. 25. januar 2007 kl. 15:08:00| #12
selvom jeg har en post i databasen som hedder 01-02-2007 så skal den skrives som 02-01-2007 for at virker... noget som kan forklare det ?
Skrevet tor. d. 25. januar 2007 kl. 15:34:53| #13
Har lige været til møde, hvorfor du ikke har hørt fra mig i et par timer.
Hvis du kan zippe filerne og smide et sted til download, så jeg kan hente dem, vil det være konge (jeg skriver aldrig min mailadr på forumer, så den får du ikke).
Ellers udvider jeg det tidligere script til at hente/indsætte data i en database, også kan du nok selv tilpasse det script, til det du ønsker.
Skrevet tor. d. 25. januar 2007 kl. 16:45:03| #14
tusinde tak....
www.zentral.dk/booking.zipbruger du msn, for så må du meget gerne add mig på webmaster@zentral.dk
du sku da næsten ha dobbelt point for det her
det jeg har lavet virker sån lidt, men ikke sådan som du beskrev det og det lyder da lidt mere spændende
Skrevet fre. d. 26. januar 2007 kl. 09:43:07| #15
Jeg har lavet en kode som kan ses her:
http://www.henriknygaard.dk/ (...)Koden og databasen kan hentes her:
http://www.henriknygaard.dk/ (...)Koden mangler bare et login script så session("userID") ikke bliver sat manuelt.
Skrevet fre. d. 26. januar 2007 kl. 12:41:33| #16
jeg mangler ord for det som du har lavet... det er bare GENIALT... jeg takker virkeligt...
Skrevet fre. d. 26. januar 2007 kl. 16:54:45| #17
det virker bare perfekt
men tiden passer ikk selvom jeg har sat session.lcid = 1030, den er 3 dageog 5 timer bagud
Skrevet lør. d. 27. januar 2007 kl. 17:46:38| #18
jeg tænkte på, hvis nu en af behandlingsformerne nu tager 2 timer i stedet for 30 min, hvordan ændre jeg det ? altså så den bare optager 4 tider istedet for en ?
Skrevet man. d. 29. januar 2007 kl. 08:28:21| #19
Hvis tiden ikke passer, så er det fordi tiden på serveren ikke passer. Det har ikke noget med LCID'en at gøre. Du skal have fat i en server admin, som kanb sætte uret rigtigt.
Der er flere måder at løse 30 min/120 min problemet. Den nemmeste måde at gøre det på, som scriptet er nu, er at gøre ved indsættelse i databasen. Lav et tjek for hvilken type klipning man har valgt, og lav så et par if-sætninger:
...
if isDate(fTime) and isNumeric(session("userID")&"") and isNumeric(Request.Form("select")&"") then
if Request.Form("select")&"" = "1" then
'30 min booking
set rs = conn.execute("select * from Bookinger where tid=#"& DBDateTime(fTime) &"#")
elseif Request.Form("select")&"" = "2" then
'30 min booking
set rs = conn.execute("select * from Bookinger where tid=#"& DBDateTime(fTime) &"#")
elseif Request.Form("select")&"" = "3" then
'120 min booking
set rs = conn.execute("select * from Bookinger where tid>=#"& DBDateTime(fTime) &"# and tid<#"& DBDateTime(dateadd("n",120,fTime)) &"#")
elseif Request.Form("select")&"" = "4" then
'120 min booking
set rs = conn.execute("select * from Bookinger where tid>=#"& DBDateTime(fTime) &"# and tid<#"& DBDateTime(dateadd("n",120,fTime)) &"#")
end if
if rs.eof then
conn.execute("insert into Bookinger(tid, brugerID,klipType) values(#"& DBDateTime(fTime) &"#,"& cLng(session("userID")) &","& cLng(Request.Form("select")) &")")
else
Response.write "Tiden er optaget."
conn.close
set conn = nothing
response.end
end if
else
...
Skrevet man. d. 29. januar 2007 kl. 08:33:12| #20
Manglere lige koden til at indsætte flere booking linjer, så tiden bliver optaget:
if isDate(fTime) and isNumeric(session("userID")&"") and isNumeric(Request.Form("select")&"") then
if Request.Form("select")&"" = "1" then
'30 min booking
set rs = conn.execute("select * from Bookinger where tid=#"& DBDateTime(fTime) &"#")
elseif Request.Form("select")&"" = "2" then
'30 min booking
set rs = conn.execute("select * from Bookinger where tid=#"& DBDateTime(fTime) &"#")
elseif Request.Form("select")&"" = "3" then
'120 min booking
set rs = conn.execute("select * from Bookinger where tid>=#"& DBDateTime(fTime) &"# and tid<#"& DBDateTime(dateadd("n",120,fTime)) &"#")
elseif Request.Form("select")&"" = "4" then
'120 min booking
set rs = conn.execute("select * from Bookinger where tid>=#"& DBDateTime(fTime) &"# and tid<#"& DBDateTime(dateadd("n",120,fTime)) &"#")
end if
if rs.eof then
conn.execute("insert into Bookinger(tid, brugerID,klipType) values(#"& DBDateTime(fTime) &"#,"& cLng(session("userID")) &","& cLng(Request.Form("select")) &")")
if Request.Form("select")&"" = "3" or Request.Form("select")&"" = "4" then
conn.execute("insert into Bookinger(tid, brugerID,klipType) values(#"& DBDateTime(dateadd("n",30,fTime)) &"#,"& cLng(session("userID")) &","& cLng(Request.Form("select")) &")")
conn.execute("insert into Bookinger(tid, brugerID,klipType) values(#"& DBDateTime(dateadd("n",60,fTime)) &"#,"& cLng(session("userID")) &","& cLng(Request.Form("select")) &")")
conn.execute("insert into Bookinger(tid, brugerID,klipType) values(#"& DBDateTime(dateadd("n",90,fTime)) &"#,"& cLng(session("userID")) &","& cLng(Request.Form("select")) &")")
end if
else
Response.write "Tiden er optaget."
conn.close
set conn = nothing
response.end
end if
else
Den bedste løsning er dog at få en til/fra tid med i databasen, så der kun skal være en bookinglinje (i stedet for 4), men så skal vi til at ændre hele scriptet, da det skal fungere på en anden måde.
Skrevet tir. d. 30. januar 2007 kl. 22:22:48| #21
det virker bar... du kan se hvordan projektet kom til at se ud på
www.zentral.dk/bookingtusinde tak for din hjælp
Skrevet tir. d. 20. marts 2007 kl. 19:39:56| #22
hej hej fennec, jeg tænkte på om du er frisk på et udbygning af systemet ?? det omhandler at man fx. ska kunne bestille 10 aftaler samme dag, og at tiden isteder skifter hver time... jeg vil give op til 500 points når det er færdigt ???