25. januar 2007 - 10:59Der 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.
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.
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"
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 ?
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)
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...
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.
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
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 ?
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 ...
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.
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 ???
Synes godt om
Ny brugerNybegynder
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.