14. juli 2010 - 07:58Der er
23 kommentarer og 2 løsninger
Kun ledige klokkeslet
Hej Alle. Jeg har lavet en kalender-funktion, hvor man skal kunne booke tider. Men det skal jo selvfølgelig kun være muligt bestille tider der er ledige. Og hvor lang tid det vare er bare en "int" i databasen. Et lille eksempel.
En klipning sidder jeg i databasen til at vare 35min. Og jeg har åben fra 8 til 16. Når man så skal bestille tid, får man en dropdown-menu ca. sådan her
8.00 8.35 9.10 9.45 osv osv
så er der en der bestiller en tid kl. 9.10, det bliver så lagt i databasen, og dropdown-menuen skal derefter være
Ked af at sige det men der er ingen let løsning. Der skal en spændende algoritme til for at løse problemet, som man lige skal holde tungen lige i munden for at løse.
Men frisøren skal vel også tilbyde andet end lige klipning fx. farvning, og der er jo også forskel på om det er en dame, mand eller barn der skal klippes.
Skal det forstås således, at du har nogle faste intervaller dine kunder kan vælge? Det vil nemlig gøre mange ting lettere for dig, da du ikke behøver at lave beregninger på, hvornår der er ledige tider, men istedet kan lave det med "slots", som kan optages.
For at hjælpe dig mere konkret, vil det være en stor hjælp at kunne se din database struktur. Problemet kan nemlig løses meget simpelt, men på bekostning af fleksibilitet, og det kan løses en del mere kompliseret, men dermed også skabe mere fleksibilitet.
Definerer du f.eks. et felt i en tabel for hvert timeslot, vil du kunne indsætte bruger_id for den kunde der har bestilt en klipning i feltet, når kunden bestiller en klipning. Herefter kan du nemt iterere over din daglige kalender, og kun vise de felter (timeslots) i drop down listen, hvor der ikke står et bruger_id.
Som sagt, hvis du kan vise mere om hvordan din database er skruet sammen, kan vi nemmere hjælpe dig på rette vej :)
Hvis jeg forstår dig ret vil du altså oprette en felt for hvert enkelt tidspunkt hvor langt frem i tiden? Det slår jo databasen ihjel.
Synes godt om
Slettet bruger
14. juli 2010 - 11:40#4
Bliver det ikke lidt vel rigidt - ALLE klipninger tager præcis 35 minutter. - og selvom der slet ingen bookinger er for en dag, kan man ikke bestille tid til kl. 09:00 - kun til kl. 09:10...
Jeg ville nok også arbejde med "slots" - men kun á 5 minutter pr styk. - Hvis en alm. klipning tager 35 minutter - booker man 7 slots. - mens en .. flet & farvning tager 2½ time = 30 slots. (Så har du også en "retfærdig" måde at prissætte ydelserne!)
MEN jeg tror dit hovedproblem er idéen om at bookingen starter i en dropdown - det er alt for ufleksibelt, og giver overhovedet intet overblik.
Du sku' istedet vise "dagen" grafisk (en dag pr. frisør / "stol") hvor man så med musen markerer en stribe slots, som derefter skifter farve (fra grøn (ledig) til rød (booket) + mouseover: kunde + job)
Slots mener jeg også er den rigtige løsning, den frisør jeg lavede mit script for ønskede blokke af 15min, det skal tages højde for at telefonen kan ringe, kunden kommer for sent, kæmpe tykt hår osv. der er altså mange faktore der spiller ind hvilket gør det svært lige på minutten at sige hvor lang tid det tager
repox, nu bliver det lige som rax løsning, hvilket jo sådan set vil sige at vi får uendeligt mange data i tabellen, vi kan jo ikke vide om frisøren vil bruge systemet de næste 2år eller 3000år. altså får du 17½ millioner rækker, hvor af måske kun 90% af tiderne er blevet booket, så kunne du altså have sparet knap 2millioner, jeg ved godt det måske er lidt ekstreme tal, men det er mere tanken.
I stedet skal man først smide dataen ind når tiden bliver booket, gør det også i sidste ende nemmere end at først skulle lave en funktion der fylder data ind i tabellen på forhånd.
så mit forslag er at du laver en for loop hvor du så udelader de tider som så er booket. vælger du så en tid lægger du den i databasen og bum den næste der så kommer vil ikke få denne tid vist
hehe, nu er det jo ikke meningen du skal oprette felterne for hver dag.. du opretter dem for én dag i en tabel, og så genbruger du den tabel. Der er jo et et-til-mange forhold mellem dag og timeslots, så det skal selvfølgelig anvendes..
Hejsa, Og tusind tak for alle svarene.. Ja problemet ligger også i at tiderne er forskellige. Nemlig pga. det med at man også skal kunne få farvet hår etc. Men havde ikke lige tænkt på den løsning med slots´ne. Og så bare laver slots af 5min. Problemet med at man f.eks. ikke skal kunne vælge tidspunkt 100% selv, er det at hvis de vælger 8.30, og det tager 30min, og en anden booker kl.9.10, er der 10min der ikke er booket.
Hvordan griber man det lige an, hvis der f.eks. er 5 frisører. Er det så bare at lave "det samme" 5 gange. en for hver frisør, og så kunden kan vælge frisør, eller en der hedder ligemeget, hvor den så selv finder en.
#10 Hvis du bruger mit eksempel som udgangspunkt kan du udvide tabellen med et 'frisørId', og så udvide loopet, så det blev lidt mere specifikt. Jeg ville antage at man først skulle vælge hvilken frisør man vil booke ved inden man vælger tiden? Så kan du gøre noget ala:
<?php
/* Reserverede tider findes for den enkelte frisør */ $frisorId = 1; $dag = date("Y-m-d"); $sql = "SELECT reservationsId, tidsId FROM tider WHERE dato = '".$dag."' AND frisorId = ".$frisorId." ORDER BY tidsId ASC"; $query = mysql_query($sql); $reserverede_tider = array(); while( $obj = mysql_fetch(object) ) $reserverede_tider[] = $obj->tidsId;
Det kan selvfølgelig aldrig blive helt perfekt, men med et godt overblik over "belægningen" kan den person som tager imod (booker) forsøge at mingelere kunderne hen i retning af fuldt hus...
Eller havde du tænkt dig at kunderne selv skulle kunne booke online ?!? - noget mere udfordrende system, så. Men også en god service at kunne tilbyde sine kunder...
De må selvfølgelig ikke kunne se HVEM de andre kunder er (forbudt!), men hvis de blot kunne se hvornår deres favorit-frisør(er) har tid, vil de automatisk selv deltage i "optimeringen"...
det er netop meningen at folk skal kunne booke online
Synes godt om
Slettet bruger
14. juli 2010 - 19:56#14
Cool - ligger ret tæt op af det system jeg "pønser på" for tiden...
Hvormange frisører/stole er der, og hvordan ser åbningstiden ud - i grove træk? - har de enkelte frisører separate "vagtplaner" - halvdags eller fri hveranden mandag f.eks. ?
Er der andre ting som skal bookes - særligt udstyr som kun kan bruges på én kunde af gangen ?
åbningstider er bare 10-16, med 5 frisører der arbejder fast 37 timer
Synes godt om
Slettet bruger
14. juli 2010 - 20:41#16
OK, det er jo næsten for let : )
Med 5 minutters slots på 10x10 pixels, er der rigelig plads på én skærmside til at vise en hel dag for samtlige frisører og/eller en hel uge for en enkelt frisør.
Men har du overvejet hvordan du forhindrer misbrug - folk som booker tid, men aldrig dukker op. - Eller ondsindende konkurenter... ?
har tænkt over det, og tror sgu ikke svindel kan undgåes hvis folk vil.. uanset om man skal oprette sig eller sådan, kan der stadig snydes.. Det må blive noget med at man første gang ringer kunden op for at høre om de har booket tid.. Noget i den stil..
Det skal jo heller blive sådan, at en ellers god kunde, som én gang har misset en aftale, ikke længere "tør" komme tilbage af frygt for repressalier..
Pointsystem: Du beder dem, som du synes har givet dig noget du ku' bruge, om at "lægge et svar". - så kigger du ind igen i morgen, og fordeler dem - det er let.
Men ja, det kan nemt blive et kompliceret system, hvis man netop også tager højde for apparater de kun har én af osv. også at kunden jo så skal skrive præcis hvad de ønsker, da man skal booke "maskinen" der kun er én af
repox og T4NK3R kan ligge et svar.. Har bare svært ved det herinde, fordi mange siger de ikke vil have point, men man selv skal svare og give sigselv.. derfor lagde jeg lidt op til det ja..
Selvom det oftest er meget kompetente og dygtige mennesker med både brugbare og korrekte svar på de spørgsmål der stilles, som ofte siger 'nej tak' til point, så er jeg af den overbevisning at det underminerer det generelle formål med eksperten.dk samt den enkeltes opfattelse af etikken og moralen der bør være ved pointafgivelse. Selvom hensigten er god, giver det - som i dette tilfælde - nogle meningsløse situationer som kunne undgås ved at at mon blot fulgte konceptet; svar rigtigt, modtag point.
glad for du kunne bruge feedbacken :) har du yderligere spørgsmål, så skriver du bare.
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.