07. oktober 2009 - 15:45Der er
16 kommentarer og 1 løsning
Hjælp til kontaktformular?
Hejsa, har denne her kontaktformular som jeg bare ikke kan få til at virke? Hvordan laver man en kontaktformular med radiobutton, samt diverse tekstfiler så man kan få det hele sendt på en gang?
Nedestående er selve min Form af formularen, hvad angår min phpkode, er jeg næsten helt blankt :S Håber i kan/vil hjælpe.
jeg tror du skal læse lidt om forms i html og så om at sende indholdet bagefter - det der er næsten et håbløst stykke kode at rode i, det ville give mere mening at starte forfra.
Underligt :S jeg kunne ikke få hele min form ind: <?php function printform($data, $errors) { ?> <form action="<?=$_SERVER['PHP_SELF'];?>" method="POST">
Det tog lidt tid, men her er et svar. Jeg er selv ved at laere php og jeg kendte ikke svaret men tog lejligheden til at laere det.
Det er ikke helt tydeligt hvad du vil. I det foelgende gaar jeg ud fra at du vil to ting: (a) Naar kunden har udfyldt formen vil du have alle oplysningerne sendt til en email adresse. (b) Og kunden skal paa hjemmesiden se en bekraeftelse.
Du skal saa goere to ting: (1) Give html form taggen to atributter, method og action. For eksempel: <FORM action=<? print $_SERVER["PHP_SELF"]; ?> method=post> (2) Skrive et stykke php kode der dirrigerer slagets gang. For eksempel:
<? $kontakt=$_POST["kontaktperson"]; $adresse=$_POST["adresse"]; $post=$_POST["postnrby"]; $tlf=$_POST["telefon"]; $email=$_POST["email"]; if($kontakt!="" and $adresse!="" and $post!="" and $tlf!="" and $email!="") { $message="$kontakt\n$adresse\n$post\n$tlf"; mail("christian.jorgensen@skynet.be","Contact form", $message,"From: ".$email."\nContent-Type: text/plain"); print "Thank you for your translation request"; } else { ?> <FORM......> .... </FORM> <? } ?>
Det resulterer i de foelgende:
Forst testes der om de fem forpligtede felter er udfyldt. Hvis de fem felter er udfyldt saa sker der to ting: (a) Oplysningerne fra formen (foreloebigt kun de fem forpligtede felter, se nedenstaaende) sendes til min email. (b) Der skrives en "thank you" besked paa hjemmesiden. Hvis en eller flere af de forpligtede felter ikke er udfyldt saa sendes formen ikke men den blanke form vises igen.
Nedenfor giver jeg hele din kode udfyldt med min kode. Hvis du udskifter "christian.jorgensen@skynet.be" med din egen email saa burde det virke.
Det er et foreloebigt svar - jeg har ikke haft tid til mere - du vil naturligvis have alle oplysningerne tilsendt, og maaske vil du have mere tekst hvis formen er rigtigt udfyldt og fejlmeldinger hvis den ikke er rigtigt udfyldt. Yderligere har phplover ret - din kode er meget uoverskueligt. Du har tabeller i tabeller og tds i tds der intet udretter. Hvis det har interesse saa kan du lave et nyt spoergsmaal hvor jeg i svaret kan gaa videre med det ovenstaaende.
<? $kontakt=$_POST["kontaktperson"]; $adresse=$_POST["adresse"]; $post=$_POST["postnrby"]; $tlf=$_POST["telefon"]; $email=$_POST["email"]; if($kontakt!="" and $adresse!="" and $post!="" and $tlf!="" and $email!="") { $message="$kontakt\n$adresse\n$post\n$tlf"; mail("christian.jorgensen@skynet.be","Contact form", $message,"From: ".$email."\nContent-Type: text/plain"); print "Thank you for your translation request"; } else { ?>
phplover, var det til mig? Koden i mit ovenstaaende svar virker i min browser. Naar jeg starter hjemmesiden op med den kode faar jeg din form, og hvis jeg fylder et eller andet ind i de fem forpligtede felter faar jeg en email med indholdet af de fem felter plus et "Thank you" paa hjemmesiden. Hvis du laver en ny blank side og saa "copy and paste" min kode fra <html> til </html> og i den 16. linie skriver din egen email i stedet for min faar du saa stadig en fejl?
Undskyld var mig der sov. Det virker, men dog poster den kun navn, adresse, postnr og telefonnr. Hvordan får man den til at poste de andre select bokse med i emailen?
Jeg er glad for at det virker. Det var trin 1, at finde ud af at lave en form der virker. Saa er der opnaaet noget, selv om der er mere at goere.
Som jeg forklarede saa maatte jeg selv studere hvordan man goer det med php (indtil nu har jeg kun gjort det direkte i html.) For at finde ud af at overfoere resultatet fra radiobuttons og lignende maa jeg studere videre. Det havde jeg i foerste omgang ikke tid og energi til.
Hvis du nu anerkender at jeg har presteret et nyttigt resultat (selv om det kan blive endnu mere nyttigt) saa giv mig punkter for svaret. Hvis du saa stiller et nyt spoergsmaal skal jeg, inden for de naermeste par dage, finde og presente den endelige loesning. Jeg vil saa ogsaa "refactor" din kode saa den goer det samme med langt faerre linier. Forklar saa ogsaa hvad du vil at kunderne skal have (et simpelt "thank you" er sikkert ikke nok) naar de har sendt formen ind.
Jeg takker fordi du er så behjælpelig :) Rent faktisk skulle formen gerne udvikle sig så brugeren kan vælge dato og tidspunkt - derfor de mange select bokse. Og Selvfølig hvilket sprog der skal oversættes på.
Det kunne være smart, hvis brugeren kunne få en echo med udskriften af hele deres mail som de har sendt på siden ved siden af "Thank you" :)
Saa hvad goer vi nu? Jeg mener at jeg har presteret et stykke arbejde af en vis vaerdi. Hvis det ogsaa har vaerdi for dig og du giver punkter til mit svar der viser hvordan du vurderer det saa kan jeg fortsaette med at finde resten af svarerne. Hvis det paa den anden side er ligemeget saa stopper vi her.
Off topic, men sørg for at hold din (x)html lowercase og gør dig selv en tjeneste at holde din css på en seperat side og kald dem ind via. classes. Det gør det mere overskuelig for dig selv.
Det var min plan at gaa i gang med at faa resten af svarene vist (ikke kun de fem forpligtede svar) og at forenkle koden. Men som sagt ovenfor vurderer jeg at det jeg allerede har gjort er et antal punkter vaerd og jeg venter paa at se om du vurderer det paa samme maade.
Pointene er helt sikkert dine, hvis det er dette du mener?
Det eneste jeg mangler er at rette i php scriptet Så når jeg får en email siger den fx.
Senders navn: [Navnfraform] Adresse: [Adresse] Post nr. og by: [PostnrBy] Telefon: [telefon] Ønsket opgavevalg: [tolkning eller oversættelse] (alt efter hvad brugeren har krydset af i min radiobutton. Sprogetderskaloversættes: fx.[arabisk til dansk] Dato:[dato]
Lige nu når jeg sender min mail ser det blot sådan herud: ---------- gasgsd jernbane 12 5000 odense 65382455 tolkning albansk Arabisk 2 ----------
Her er min php form, jeg kan bare ikke finde ud af hvordan jeg enten skal "printe" eller "echo" det brugeren har indtastet så de ser deres mail. <? $kontakt=$_POST["kontaktperson"]; $adresse=$_POST["adresse"]; $post=$_POST["postnrby"]; $tlf=$_POST["telefon"]; $email=$_POST["email"]; $opgavetype=$_POST["opgavetype"]; $sprogfra=$_POST["sprogfra"]; $sprogtil=$_POST["sprogtil"]; $datodag=$_POST["datodag"]; $datomaaned=$_POST["datomaaned"]; if($kontakt!="" and $adresse!="" and $post!="" and $tlf!="" and $email!="") { $message="$kontakt\n$adresse\n$post\n$tlf\n$opgavetype\n$sprogfra\n$sprogtil\n$datodag\n$datomaaned"; mail("andersslund@hotmail.com","Contact form", $message,"From: ".$email."\nContent-Type: text/plain"); print "Vi har nu fået flg. bestilling:<br> $Opgavetype: $Kontaktperson:<br> $Datodag"; - OSV. } else { ?>
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.