23. juli 2011 - 00:21Der er
26 kommentarer og 1 løsning
Booking formular
Hej Jeg er igang med at programmere en booking formular til et mobildiskotek, men er stødt på et par problemer. Det vigtigste er vel selve PHP-filen. Har komprimeret til zip her: http://dl.dropbox.com/u/36022188/booking.php.zip Jeg skulle gerne have min formular til at sende en mail til mig hver gang folk trykker på "Send" i formularen og alle kriterier er opfyldt. Lige nu åbner den computerens malprogram og opretter en ny meddelelse med indhold struktureret sålades: radiofelt=nr1&navn=KH&adresse=testadresse&type=test&post=1234&by=apple&dag=20&m%C3%A5ned=August&%C3%A 5r=2011&fra=17&til=02&tlf=12345678&email=kenneth2503%40gmail.com Vil meget gerne have den til at når alle kriterier er opfyldt, sendes der en mail til mig fra robot@mitdomæne.dk, hvor alt indhold er struktureret som i selve formularen: Navn: Adresse; Arrangement: Post nr. og by: Dato: Tidspunkt: Tlf.: E-mail: Den samme mail skal også sendes til den mailadresse der angives i formularen. Hvis det altså kan lade sig gøre.
Det kan det sagtens. Dog skal dit webhotel understøtte PHP. Hvis det gør det skal du lige læse min guide igennem: http://www.eksperten.dk/guide/1410 og hvis du har spørgsmål, så kan jeg besvare (næsten) alt :)
Er nu i fuld gang med at koble det hele sammen, og kan se at den PHP-fil du linker til i guiden indeholder noget verifikation, men i min formular gøres dette via javascript. Det er vel bare at slette det stykke kode og så er alt ok? Den e-mail adresse der skal stå i $afsendermail, skal den være oprettet i forvejen, eller klarer koden det selv? Hvilke linjer i din kontaktformular.php må ikke slettes, af hensyn til det jeg vil opnå med at der sendes en kopi af mailen til kunden/brugeren? Kan jeg lave et layout til mailen, så indholdet i mailen ligner resten af vores site?
Du må kun slette valideringen. Scriptet sender allerede kopimail til kunden (hvis du laver input felterne med de rigtige names på din hjemmeside).
Som standard kan du IKKE bruge html tags. Du skal bruge MIME. Det du skal bruge er:
$formularheaders = "From: <$afsendermail>".$eol; $formularheaders .= "MIME-Version: 1.0".$eol; // fortæller at det er en MIME mail - f.eks. HTML indhold $formularheaders .= "Content-type: text/html; charset=iso-8859-1". $eol;
$headers = "From: <$afsendermail>".$eol; $headers .= "MIME-Version: 1.0".$eol; // fortæller at det er en MIME mail - f.eks. HTML indhold $headers .= "Content-type: text/html; charset=iso-8859-1". $eol;
HUSK: at bruge singlequotes (') og ikke double (").
Det stykke kode, skal det placeres til sidst i kontaktformular.php? Inden jeg går videre, har jeg tilpasset det nogenlunde til det jeg gerne vil have, er det noget du vil kigge igennem for at se om jeg har gjort det rigtigt? Her er link: http://dl.dropbox.com/u/36022188/booking.zip Den indeholder min booking-side(booking.php), din kontaktformular.php, samt den side man videresendes til når man trykker på "Send"(complete.php) Jeg har fortalt min booking side at den skal benytte kontaktformular.php, samt fortalt kontaktformular.php at den skal viderestille til complete.php hvis alt er OK. Planen er så at jeg laver en automatisk redirect efter 5 sek. til forsiden, når jeg engang er færdig. Det kode der skal bruges dertil har jeg liggende i et andet projekt, så det er bare en copy/paste og lidt redigering :)
Har lige lavet nogle småændringer. Husk at putte value på alle dine klokkeslæt og datoer. Hvis du skriver i mailen til kunden om det er tilbud eller booking, så ville det nok være en god idé at ændre deres value til noget med sigende end nr1 og nr2. Den nye version kan hentes her: http://dl.dropbox.com/u/21887805/rettet.zip
Hvordan med tilføjelse af information om det var en forespørgsel på tilbud eller booking? Skal jeg bare lave: $tilbud = $_POST['tilbud'] $booking = $_POST['booking'] I variablen $oplysninger, skal jeg bare indsætte alle de variabler der skal med mailen?
Er dette lavet korrekt: /* Her samles afsenderens navn, mailadresse og besked i en enkelt variabel */ $oplysninger="<h1>$radiofelt, $navn, $adresse, $type, $post, $by, $dag, $maaned, $aar, $fra, $til, $tlf, $email, $besked</h1><br> <b>Hello world!</b>";.
Kom lige til at kigge ovenover koden i Dreamweaver, og opdagede at der er en syntax error i den ene linje: http://dl.dropbox.com/u/36022188/syntax_error_lin28.png Er der noget om snakken, eller skal jeg blot se bort fra det?
Ok. det gør jeg. Jeg vender tilbage hvis jeg har flere spørgsmål, eller hvis jeg er færdig. Når jeg en gang når så langt, vil du så kigge det igennem igen, så jeg er sikker på at alt virker. hvordan med den robot mailadresse, skulle den oprettes manuelt?
Her er koden til den mail der sendes til mig når nogen udfører en forespørgsel: /* Her samles afsenderens navn, mailadresse og besked i en enkelt variabel */ $oplysninger="<h1>Ny forespørgsel på $radiofelt:<br> Kontaktperson:$navn<br> Adresse:$adresse<br> $post $by<br> Arrangement:$type<br> Dato: $dag, $maaned, $aar<br> Tidspunkt: $fra, $til<br> Kontaktoplysninger: $tlf $email<br> Evt, bemærkninger: $besked</h1><br>"; Er det korrekt lavet?
Så er der opstået et problem. Mit javascript validering virker ikke mere. Jeg ved ikke om det har noget med mit styresystem at gøre, men har prøvet med både Apple Safari og Google Chrome på min Mac, og hvis jeg glemmer at udfylde nogle af de påkrævede felter, skulle der komme en fejl meddelelse, men der sker intet. Har også prøvet at udfylde alle felter, også at lade være med at udfylde nogen, med samme resultat. Men browseren skulle ikke spille nogen rolle? Skulle jeg måske prøve at indsætte valideringen i kontaktformular.php og lade den varetage det? Her får du lige filerne igen, som de er lige pt.: http://dl.dropbox.com/u/36022188/booking_v2.zip
Så har jeg fået mit javascript til at virke igen, men når jeg så trykker på Send for jeg dette: Parse error: syntax error, unexpected '=' in /home/u091457157/public_html/booking/verify.php on line 29
verify.php er din kontaktformular.php. Har bare omdøbt den, så jeg nemmere ved hvad der hører til hvad.
Ja jeg kan godt se der er noget galt, men jeg er desværre ret ophængt for tiden, da min pc ikker virker ordenligt. Jeg håber at kunne hjælpe om et par dage.
Har fundet ud af det. Line 29 skal deles i to, så koden kommer til at se sådan ud: $headers .= "Content-type: text/html; charset=iso-8859-1". $eol; $headers .= "From: Kontaktformular <$afsendermail>\r\n";
HUSK! kontaktformular.php hedder nu verify.php. Tak.html hedder complete.php.
Har lavet om i booking siden, så det hele er sat ordentligt op, så filen booking_old.php skal du ikke tage hensyn til. Det er bare for at jeg har noget at gribe tilbage til, hvis jeg laver en fejl :)
Åbnede det lige i Dreamweaver, og den siger at der er en fejl i linje 36. Prøver jeg at udføre en booking, for jeg følgende fejl: Parse error: syntax error, unexpected T_VARIABLE in /home/u091457157/public_html/booking/verify.php on line 36
hverken den mail der skal modtage indholdet i $oplysninger for besked, og heller ikke den mail der skal modtage $kopimail, modtager noget.
Jeg takker mange gange for hjælpen. Begge mailadresser har fået de mails de skal have og alt passer. Nu er det kun designet i mailen jeg skal have på plads, og det kan jeg sagtens selv.
Hvis du vil være så venlige at smide et svar, så kan jeg lukke tråden.
Kom lige til at tænke at jeg bare skrev noget hurtigt i variablen emne. Dvs. at der altid står booking i emnet. Det skal du nok lige lave om til noget alá $emne="$radiofelt". Så skifter den jo alt efter om der er valgt tilbu eller booking.
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.