26. januar 2009 - 16:52
Der er
16 kommentarer og 1 løsning
Ikke-udfyldte bokse påvirker mailopsætning
Hej eksperter, jeg har lavet et PHP script der egentligt fungerer udemærket, problemet er dog at mailen den sender ud er mere omfattende end den behøver at være. Klikker man eksempelvis service 1, 4 og 5 af - viser min mail følgende: Service: 1; ; ;4 og 5 Jeg vil gerne have mail-formen til at vælge de produkter der hakket af således: Service 1; 4 og 5 Så de ikke-valgte produkter ikke påvirker mailen. Her er en stærkt reduceret udgave af min mail-funktion: $message = "Nedenstående er blevet bestilt af: $yourname $add1 $add2 $add3 $email3 $telefon Kontaktperson: $kyourname $ktelefon Bestilling: Produkt: $produkt1 ; $produkt2 ; $produkt3 ; $produkt4 og $produkt5 Accepterer handelsbetingelserne: $handel Evt. bemærkning: $comments "; mail($myemail, Bestilling, $message); Kan jeg ved at rette i den opnå det jeg vil, eller kan det evt. laves via en ekstra funktion der arbejder udfra $produkt#-værdierne? På forhånd tak for hjælpen; det er rart at have et sted hvor man kan blive klogere.
Annonceindlæg fra Infor
26. januar 2009 - 17:15
#1
<label><input type='checkbox' name='produkt[]' value='1' /> Bestil produkt 1</label> <label><input type='checkbox' name='produkt[]' value='2' /> Bestil produkt 2</label> <label><input type='checkbox' name='produkt[]' value='3' /> Bestil produkt 3</label> <label><input type='checkbox' name='produkt[]' value='4' /> Bestil produkt 4</label> <label><input type='checkbox' name='produkt[]' value='5' /> Bestil produkt 5</label> Bestilling: Produkt: ".(($last = $_POST['produkt']) && count($_POST['produkt']) ? implode(", ",$_POST['produkt'])." og ".$_POST['produkt'] : $_POST['produkt']).". Bla bla.. Er det sådan du mener?
26. januar 2009 - 17:17
#2
Der skulle stå: Bestilling: Produkt: ".(($last = array_pop($_POST['produkt'])) && count($_POST['produkt']) ? implode(", ",$_POST['produkt'])." og ".$last : $last.". Bla bla..
26. januar 2009 - 18:18
#3
Hej TMI, jeg værdsætter din hjælp. Når jeg bare kopierer det du har foreslået ind får jeg fejlmeddelsen: Parse error: syntax error, unexpected '<' på første linie du har skrevet. Værdierne har jeg forresten defineret i begyndelsen af scriptet - og i html arket scriptet arbejder ud fra. Script: $produkt1 = check_input($_POST['produkt1']); $produkt2 = check_input($_POST['produkt2']); $produkt3 = check_input($_POST['produkt3']); $produkt4 = check_input($_POST['produkt4']); $produkt5 = check_input($_POST['produkt5']); HTML: <p><strong>Produktliste:</strong><br /> <input type="checkbox" name="produkt1" value="Bestil produkt 1" /> Bestil produkt 1 <br /> <input type="checkbox" name="produkt2" value="Bestil produkt 2" /> Bestil produkt 2 <br /> <input type="checkbox" name="produkt3" value="Bestil produkt 3" /> Bestil produkt 3 <br /> <input type="checkbox" name="produkt4" value="Bestil produkt 4" /> Bestil produkt 4 <br /> <input type="checkbox" name="produkt5" value="Bestil produkt 5" /> Bestil produkt 5
26. januar 2009 - 18:31
#4
Jeg mente du skulle gøre sådan her: HTML: <p><strong>Produktliste:</strong><br /> <input type="checkbox" name="produkt[]" value="Produkt 1" /> Bestil produkt 1 <br /> <input type="checkbox" name="produkt[]" value="Produkt 2" /> Bestil produkt 2 <br /> <input type="checkbox" name="produkt[]" value="Produkt 3" /> Bestil produkt 3 <br /> <input type="checkbox" name="produkt[]" value="Produkt 4" /> Bestil produkt 4 <br /> <input type="checkbox" name="produkt[]" value="Produkt 5" /> Bestil produkt 5 PHP: $products = $_POST['produkt']; $message = "Nedenstående er blevet bestilt af: $yourname $add1 $add2 $add3 $email3 $telefon Kontaktperson: $kyourname $ktelefon Bestilling: Produkt: ".(($last = array_pop($products)) && count($products) ? implode(", ",$products)." og ".$last : $last).". Accepterer handelsbetingelserne: $handel Evt. bemærkning: $comments ";
27. januar 2009 - 00:46
#5
Det er simpelthen perfekt! Mange tak for hjælpen; hvis du smider et svar skal du få nogle velfortjente point
27. januar 2009 - 01:03
#6
Selv tak =)
27. januar 2009 - 22:02
#7
Hej TMI, det kan være du også kan hjælpe mig her. Jeg har forsøgt at inkludere en dropdown-menu, og det fungerer også fint når den er i brug. <select name="produkt[]"> <option value=""> -- Nej tak -- </option> <option>Bestil produkt 6A</option> <option>Bestil produkt 6B</option> <option>Bestil produkt 6C</option> <option>Bestil produkt 6D</option> </select> Men når man bare lader den stå på 'Nej tak' - så kommer ingen af de produkter valgt i checkboxene med. Lyder det ikke underligt?
27. januar 2009 - 23:44
#8
Jo, det kan ikke passe. Måske kommer du til at ændre værdierne i din PHP kode.
28. januar 2009 - 00:08
#9
Det er rigtigt nok at jeg har ændret lidt i PHP koden - men jeg er ret sikker på det kun er af designmæssig betydning. HTML koden ser sådan her ud nu: <form action="kontakt.php" method="post"> <p><strong>Produktliste:</strong><br /> <input type="checkbox" name="produkt[]" value="Produkt 1" /> Bestil produkt 1 <br /> <input type="checkbox" name="produkt[]" value="Produkt 2" /> Bestil produkt 2 <br /> <input type="checkbox" name="produkt[]" value="Produkt 3" /> Bestil produkt 3 <br /> <input type="checkbox" name="produkt[]" value="Produkt 4" /> Bestil produkt 4 <br /> <input type="checkbox" name="produkt[]" value="Produkt 5" /> Bestil produkt 5</p> <select name="produkt[]"> <option value=""> -- Nej tak -- </option> <option>Bestil produkt 6A</option> <option>Bestil produkt 6B</option> <option>Bestil produkt 6C</option> <option>Bestil produkt 6D</option> </select> <p><input type="submit" value="Bestil"></p> </form> PHP koden således: $comments = check_input($_POST['comments']); $products = $_POST['produkt']; $message = "Nedenstående er blevet bestilt af: Bestilling: Produkt: ".(($last = array_pop($products)) && count($products) ? implode(" ",$products)." og ".$last : $last).". Evt. bemærkning: $comments "; mail($myemail, Bestilling, $message); Sådan ser mailen ud når jeg bestiller produkt 2,4 og 5 + 6c: Nedenstående er blevet bestilt af: Bestilling: Produkt: Produkt 2 Produkt 4 Produkt 5 og Bestil produkt 6C. Evt. bemærkning: Men når jeg vælger samme produkter - men ikke vælger noget fra dropdown menuen: Nedenstående er blevet bestilt af: Bestilling: Produkt: . Evt. bemærkning: TMI, det er fedt at du gider at hjælpe !
28. januar 2009 - 12:03
#10
Det var underligt: Når jeg sætter et mellemrum ind i option value sker der ingen fejl, godt nok er der et halvirriterende mellemrum i emailen - men det overlever folk nok. <option value=" "> -- Nej tak -- </option> Eller kan det løses på en anden måde?
28. januar 2009 - 19:57
#11
Ah, det er pga.: $last = ($last = array_pop($products)) der skal rettes til: (($last = array_pop($products)) !== NULL) Men så vil den bare skrive " og " efterfulgt af ingenting. I stedet skal du gøre sådan her: $products = $_POST['produkt']; foreach ($products as $k => $v) if (!$v) unset($products[$k]);
28. januar 2009 - 21:44
#12
nårjeg bare erstatter $products = $_POST['produkt']; med $products = $_POST['produkt']; foreach ($products as $k => $v) if (!$v) unset($products[$k]); i to linier, så sker der ingenting. Heller ikke når jeg oveni det indsætter: Bestilling: ".((($last = array_pop($products)) !== NULL) && count($products) ? implode(" ",$products)." ".$last : $last).".
28. januar 2009 - 22:01
#13
Hvad skriver den her? $products = $_POST['produkt']; foreach ($products as $k => $v) if (!$v) unset($products[$k]); die(print_r($products, true));
29. januar 2009 - 00:54
#14
Nu printer den samtlige produkter, og tæller dem, jeg har valgt på en website der ender med /kode.php Sådan her: Array ( [0] => Produkt 1 [1] => Produkt 2.....)
29. januar 2009 - 00:57
#15
Har lige tænkt mig om, det er nok det her du ville undersøge: Array ( [0] => Produkt 1 [1] => Produkt 2 [2] => [3] => [4] => Produkt 6C...)
29. januar 2009 - 12:53
#16
Ja, pointen er at du skal fjerne dem der er tomme først, og det ser ud til at nr. 2 og nr. 3 er tomme. Hvorfor den ikke har fjernet dem ved jeg ikke, prøv det her i stedet: $products = $_POST['produkt']; foreach ($products as $k => $v) if (!trim($v)) unset($products[$k]);
29. januar 2009 - 21:28
#17
Nu virker det! Behøver vist ikke fortælle dig at du er genial: Endnu engang tak for hjælpen
Vi tilbyder markedets bedste kurser inden for webudvikling