14. december 2011 - 10:33Der er
32 kommentarer og 1 løsning
lejligheds booking system
jeg har rodet meget lidt med PHP så jeg er ikke nogen ørn. så måske kan nogen hjælpe.
jeg har en lille html formular hvor man kan bestille en lejlighed begyndende fra en bestemt uge(input felt) og et andet inputfelt med antal uger,
når man har udfyldt formularen ryger man på en bekræftelses side hvor der er meningen ens valg bliver vist. f.eks, "du har bestilt lejligheden fra uge 33 - uge 35 den samlede pris er Kr. xxxx.00"
so far so good.
nu er det af jeg anvender 3 forskellige takster afhængig af sæsonen(uge nummer)
Er der nogen der kan hjælpe med at udfra uge nummer, pris og antal uger flække en kode sammen til mig?
Du kommer nok til at fortælle hvor din applikation kender lejlighederne og priserne på lejlighederne. Har du det stående i tabeller i en mysql database eller hvordan?
'Oplysninger i sql basen' - hvilken sql base? Anvender du en mysql database i din applikation? Og du har tre forskellige takster afhængige af sæson. Hvor har du disse oplysninger stående? Kun i hovedet endnu, eller et eller andet sted? Der er kun en lejlighed, siger du. Hvor gemmer du oplysninger om den lejlighed? Det er nok mig, der er for dum til det her, men jeg kommer til at vide lidt mere eller også bakke ud.
Jeg er ked af det med oplysningerne, men jeg ved jo ikke hvilke der er relevante og hvilke der ikke er. jeg vil meget meget gerne give dig alle info, der er intet hemmeligt i det.
Ja navn, adresse, start dato antal uger bliver lagret i en sql database, her har jeg så på en eller anden måde at lave en sammenhæng imellem prisen (uge) og ugen, så jeg kan trække denne ud af basen igen.
lad os antage en person bestiller uge 31 og 32 (dvs) to uger. den ene uge(31) koster kr. 800 og den anden(32) koster kr. 1000, så skal jeg dels have disse info ind basen og dels hevet dem ud igen og bekræte hans to uger koster LKr. 1800, på en eller anden måde. Jeg har en lejlighed med 3 pris grupper.
Det ville have været mindre forvirrende, hvis du ville have svaret på mine konkrete spørgsmål, først hvilket databasesystem du bruger (er det mysql eller hvad) og så hvordan du har lagret hvad prisen er i de forskellige uger. Du har 'på en eller anden måde lavet en sammenhæng mellem prisen (uge) og ugen' men du vil ikke fortælle hvordan.
Jamen så må jeg hellere stoppe med at spilde din tid. Jeg håber der er medlemmer der bedre kan fortolke dine oplysninger og yde hjælp.
Ok jeg vil prøve at forklare, men please vær lidt tålmodige.
Jeg har en formular med to felter en start dato(uge) og et felt med antal uger, denne formular har jeg linket til en mysql data base, her har jeg tre tabeller min_tabel, hvor start dato(uge) og antal uger lagres. så har jeg en tabel som jeg har døbt Pris_var med to felter en PrisID og et Pris felt. dernæst har jeg en tabel som kaldes Weeks, med endnu to felter med PrisID igen og et felt med ugen nummer.
Indtil videre ser min bekræftelse side således ud.
Kan du sende hele koden på dine filer? Evt. upload dem via www.gratisupload.dk. Problemet er at jeg ikke kan se noget kode, der henter data eller gemmer data i din MySQL database ud fra det du har sendt der.
Har du mulighed for at udlæse en MySQL-dump af dine tre tabeller også, og evt. uploade på www.gratisupload.dk ?
Bare så jeg kan se hvordan din database-struktur 100 % er.
Umiddelbart forstår jeg ikke hvorfor du har de tre tabeller, og jeg forstår ikke i hvilken tabel du gemmer data om hvad brugeren har bestilt (du har jo ingen kundedata i nogen af de tabeller?).
hans01, nu kom du så alligevel med lidt flere oplysninger, men i dråbeformat. Jeg forstår ikke, hvorfor du har været så tilbageholdende. Det er da dig, der beder om hjælp til en opgave og som derfor må være interesseret i at fortælle det nødvendige, ikke os andre, der beder om lov til at hjælpe og hvor det så er fair at vi skal gætte.
Jeg tror problemet starter med din database struktur. I min_tabel, bortset fra kundeID som er et tal så bevarer du alle de andre data som tekststrenge. For eksempel hvis du under weeks har 2 stående, så opfatter databasen det ikke som et total man kan lave regnestykker med men som en tekst "2". Jeg forstår, at start og slut skulle være ugenumre og weeks skulle være antal uger, så dem skal du bevare som tal for at du kan bruge oplysningerne til at beregne en pris. Ligeledes, men ikke del af dette problem, skulle nopeople, noadults, og nochildren vel også have været tal. Det vil jeg foreslå at du retter på følgende måde:
Først laver du en kopi af tabellen ved at klikke på Operations, og så i den skærm du får under Copy table to i det tomme felt skriver du, for eksempel, my_tablecopy, og så klikker du på Go.
Derefter klikker du på blyanten ud for weeks. I den skærm du får har du under Type et felt, hvor der står VARCHAR. Der trykker du på den lille trekant, og i den liste du får klikker du på INT og derefter trykker du på save. Du vil så se, at Type for weeks er ændret til INT. Det vil sige, at tabellen nu opfatter dataerne som tal.
På samme måde ændrer du datatyperne for start og slut (og nu du er i gang, også for nopeople, noadults, og nochildren.)
Når du er færdig, så tryk på Browse for at få at se hvad der nu står i tabellen. Det kan være, at nogle af dataerne er gået tabt ved at skifte datatype, men så henter du oplysningerne fra min_tablecopy. Du ved, at når du i browse mode trykker på en blyant i en række, så får du en skærm hvor du kan ændre oplysningerne i denne række.
Du fortæller så, at du har to andre tabeller, Pris_var og Weeks. Se efter, om du der også har varchar som type hvor det skulle have været INT og ret det i så fald, og lad os så se en screendump af disse tabeller også. Så er vi ved at være der henne, hvor der kan foreslås en løsning.
Jeg var ikke helt klar over hvad detr var nødvendig af oplysninger, jeg har rodet en helvedes masse med det, så jeg var nu heller ikke sikker på om jeg var helt hen i skoven, jeg ryger lige i gang med dine forslag. tusing takkker
Jeg har været uden internet adgang i et par dage, og nu er jeg kun lige på for et øjeblik. Jeg er tilbage i overmorgen. I mellemtiden fortæl hvordan det går med at 'ryge i gang med mine forslag.'
Så er jeg hjemme ved computeren igen. Og nu må jeg prøve at kombinere de oplysninger du giver.
1. Du har (som du siger i #11) en formular (som du ikke viser) hvor brugeren indfører startuge og antal uger og (sandsynligvis) klikker på en knap.
2. Når så brugeren har klikket på knappen, så kaldes den kode du viser i #16 plus den kode du viser i #11. Først, med koden #16, sendes der en email til brugeren, derefter overføres dataerne til databasen. Derefter, med koden #11, vises den tabel hvor koden er i #11, og kærnen i dit spørgsmål er vel hvordan man får fat på lejeprisen til at fylde i variabelen $samlet_pris i denne kode:
3. Inden brugeren udfylder formularen har du allerede udfyldt database tabellerne weeks og pris_var.
Eftersom du har start ugen i variabelen $start, kan du udtrække prisen for start ugen fra databasen således:
$result = mysql_query("SELECT pris from weeks JOIN pris_var ON weeks.PrisID = pris_var.prisID WHERE weeks = $start"); $uge_pris = mysql_result($result, 0);
Hvis brugeren bestiller to uger, så får du prisen på uge nummer 2 ved at lægge 1 til $start og så køre den samme query en gang til. For at automatisere det, foreslår jeg, at du først sætter $samlet_pris = 0, og derefter i en løkke kører queryen $weeks gange. Det kan gøres således:
Denne kode skal indsættes mellem koden #16 koden #11. Det kommer du nok til at rode med. Det kan for eksempel være, at værdierne i $start og $weeks er tekststrenge. I så fald får du dem lavet om til tilværdier ved at sige $weeks = intval($weeks); o.s.v.
Jeg har indsat dit forslag: $result = mysql_query("SELECT pris from weeks JOIN pris_var ON weeks.PrisID = pris_var.prisID WHERE weeks = $start"); $uge_pris = mysql_result($result, 0); i min svar tabel #11 og tilføjet or die. Jeg modtager dog denne fejlmeldning: Warning: mysql_result(): supplied argument is not a valid MySQL result resource in C:\W3Sites\italienferie\www\application.php on line 313 You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '17 (lørdag 23. April)' at line 1
Det er en lidt gammel udgave af php og mysql der kører på serveren.
Hvis jeg prøver at ændre start og weeks til talværdier modtager jeg følgende fejl:
Warning: mysql_result(): supplied argument is not a valid MySQL result resource in C:\W3Sites\italienferie\www\application.php on line 315 Unknown column 'weeks' in 'where clause'
Det ser ud som om $start indeholder værdien '17(lørdag 23. April)' . Mit kodeforslag var baseret på den antagelse, at $start indeholder et tal, ugenummer, og intet andet, og at felterne weeks og start i tabellerne også indeholder tal og intet andet.
Jamen det kommer helt bag på mig. Gennem hele tråden har jeg opfattet, at det drejede sig om ugenumre, altså et tal. Det var også baggrunden for mine forslag til database tabellerne, som vel nu ikke vil virke, da start ikke er et tal.
Jeg kommer til at stoppe nu. Det er ikke realistisk, at vi bruger mere af hinandens tid derpå, når vi kommunikerer så dårligt. Og du får desværre næppe nye indlæg nu da spørgsmålet efterhånden står på side 15. Jeg vil foreslå (og bede om) at du lukker tråden, og at du så opretter en ny tråd der får frisk opmærksomhed fra alle Ekspertens medlemmer, og hvor du så giver flere relevante oplysninger.
Det drejer sig om er, at folk booker ferie ved hjælp af en html form, og prisen skal så beregnes ud fra feriens startdato og antal uger, baseret på en pris for hver ugenummer. Du bør absolut give linket til formularen, så folk kan se koden bag ved, og du bør vise database tabellerne med det samme.
Jeg opretter dette som svar, idet jeg håber at have været medvirkende til, at du formulerer dit næste spørgsmål bedre. Det er op til dig, om du vil acceptere svaret, eller om du vil lukke ved selv at oprette et svar og acceptere det.
Min personlige vurdering er, at opgaven er for stor til, at du får fornuftig "gratis" hjælp herinde. Opgaven er simpelthen for omfattende og omhandler for mange ting. Eksperten.dk er mere til en konkret problemstilling.
Det bedste ville være, at du lavede en kravspecifikation og fik en til at kode det for dig i stedet.
Jeg kan godt hjælpe, men i det tilfælde bliver det mod betaling. Har det interesse, kan du jo smide mig en intern besked herinde til mig.
Problemet er heller ikke at finde frem til det. Problemet er at der er så mange andre problemstillinger i det også.
Det har jo vist sig, at det ikke kun er udskrivningen af uge numre. Der har skulle tilpasses ting i din MySQL database og meget mere.
Dertil gemmes der andre data end først forventet, hvilket gør at svaret til hvordan det kunne udregnes pludselig er forkert.
Det er vel også årsagen til at Christian har valgt at stoppe det, og bedt dig om at oprette sagen på ny. Jeg siger blot, at jeg ikke tror, at du får særlig meget ud af det, da sagen som sagt er mere omfattende end "blot at udregne prisen ud fra ugenumre". :-)
Der er masser der vil hjælpe. Jeg vil også gerne. Men jeg vil ikke gå ind og assistere i "større" opgaver herinde af princip. I det tilfælde tilbyder jeg i stedet mine kompetencer ved siden af - som man så betaler for at få.
Hør nu her, jeg havde lavet et forkert uge format der bestod af et uge nummer samt en dato, hvor christian troede det "kun" drejede sig om et tal, jeg har nu ændret formatet til et uge nummer, og prøvet igen.
Nu er det sådan at jeg sagtens kan leve uden at kunne lave denne detalje, jeg syntes bare det kunne være skæg at prøve at arbejde lidt i php. så jeg har prøvet at skrue noget sammen, og er løbet lidt sur i det, derfor bed jeg om en håndsrækning.
Det er muligt, at du bad om en håndsrækning. Det føltes dog nærmere som en armrækning der skulle til i stedet, og til det er min tid for kostbar. Jeg bruger gerne 15 - 30 minutter på en opgave herinde, men jeg bruger ikke timer på samme opgave - i min verden er de så for store.
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.