Avatar billede zentral Nybegynder
25. januar 2007 - 10:59 Der er 21 kommentarer og
1 løsning

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 ???
Avatar billede fennec Nybegynder
25. januar 2007 - 11:09 #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.
Avatar billede zentral Nybegynder
25. januar 2007 - 11:30 #2
ja det er faste tidspunkter eftersom det bare er et projekt. men 30 min, fra kl 10 til 15
Avatar billede fennec Nybegynder
25. januar 2007 - 11:52 #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..
Avatar billede zentral Nybegynder
25. januar 2007 - 12:15 #4
der er i databasen
id.
strDato.
strKlok.
strReseveret.
strBookingID
Avatar billede zentral Nybegynder
25. januar 2007 - 12:17 #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"
Avatar billede fennec Nybegynder
25. januar 2007 - 12:23 #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#"
Avatar billede zentral Nybegynder
25. januar 2007 - 13:01 #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 ?
Avatar billede fennec Nybegynder
25. januar 2007 - 13:15 #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)
Avatar billede fennec Nybegynder
25. januar 2007 - 13:31 #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>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</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...
Avatar billede zentral Nybegynder
25. januar 2007 - 14:01 #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 ????
Avatar billede zentral Nybegynder
25. januar 2007 - 14:18 #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
Avatar billede zentral Nybegynder
25. januar 2007 - 15:08 #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 ?
Avatar billede fennec Nybegynder
25. januar 2007 - 15:34 #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.
Avatar billede zentral Nybegynder
25. januar 2007 - 16:45 #14
tusinde tak.... www.zentral.dk/booking.zip
bruger 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
Avatar billede fennec Nybegynder
26. januar 2007 - 09:43 #15
Jeg har lavet en kode som kan ses her:
http://www.henriknygaard.dk/experten/758304/book.asp

Koden og databasen kan hentes her:
http://www.henriknygaard.dk/experten/758304/758304.zip

Koden mangler bare et login script så session("userID") ikke bliver sat manuelt.
Avatar billede zentral Nybegynder
26. januar 2007 - 12:41 #16
jeg mangler ord for det som du har lavet... det er bare GENIALT... jeg takker virkeligt...
Avatar billede zentral Nybegynder
26. januar 2007 - 16:54 #17
det virker bare perfekt
men tiden passer ikk selvom jeg har sat session.lcid = 1030, den er 3 dageog 5 timer bagud
Avatar billede zentral Nybegynder
27. januar 2007 - 17:46 #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 ?
Avatar billede fennec Nybegynder
29. januar 2007 - 08:28 #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
...
Avatar billede fennec Nybegynder
29. januar 2007 - 08:33 #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.
Avatar billede zentral Nybegynder
30. januar 2007 - 22:22 #21
det virker bar... du kan se hvordan projektet kom til at se ud på www.zentral.dk/booking

tusinde tak for din hjælp
Avatar billede zentral Nybegynder
20. marts 2007 - 19:39 #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 ???
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
Kurser inden for grundlæggende programmering

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