php koden i formular med afkrydsningsfelt

Her kan du få hjælp til programmer eller funktioner, der er omtalt på Ludvigs Hjørne.

php koden i formular med afkrydsningsfelt

Indlægaf majer711 » man mar 07, 2011 15:32

Jeg har fundet en "færdig " php kode til mine formularer, så "sprang jeg over hvor gærdet var lavest". Jeg kan også godt få den til at virke men mine afkrydsningsfelter driller. Brugeren skal have mulighed for at afkrydse flere salgs foder ved bestilling - det kan man også sagtens, men den mail der sendes med bestillingen i, den sender kun det første valg. Jeg læste så et eller andet sted at jeg skulle sætte [] efter <input name="Type".... så det bliver <input name="Type[]"...... Men så sker der bare det at der i bestillingsmailen står Foder(der er typen:-): ARRAY

Så hvad skal jeg lige gøre for at få alle typer af foder med i min mail bestilling?

I selve bestillingsformen står der ved afkrydsningsfelterne som herunder:
<td style="width: 267px;"><input name="Type"
value="Start u 25 kg" type="checkbox"> Start u. 25
kg &nbsp;a 360 kr /157 kr <br>

(Der er så flere valgmuligehder men alle med name="Type[]")

I contact2.php som den kalder står der:
<?php
$to = $_REQUEST['modtager'] ;
$from = $_REQUEST['Email'] ;
$name = $_REQUEST['Navn'] ;
$headers = "Fra: $from";
$subject = "Bestilling";

$fields = array();
$fields{"Kg"} = "Mægde";
$fields{"Type"} = "Foder";
$fields{"guf"} = "Andet";
$fields{"Sum"} = "I alt at betale";
$fields{"Hold"} = "Hold";
$fields{"Tlf"} = "Tlf";
$fields{"Besked"} = "Bemærkninger";

$body = "Vi har modtaget følgende foderbestilling:\n\n"; foreach($fields as $a => $b){ $body .= sprintf("%20s: %s\n",$b,$_REQUEST[$a]); }

$headers2 = "From: webmaster@dragsholmhundeskole.dk";
$subject2 = "Tak for din bestilling";
$autoreply = "Tak for din Bestilling. Hvis du har nogen spørgsmål er du velkommen til at kontakte Helle.";

if($from == '') {print "Du har ikke indtastet en email adresse - prøv igen";}
else {
if($name == '') {print "Du har ikke indtastet dit navn - prøv igen";}
else {
$send = mail($to, $subject, $body, $headers);
$send2 = mail($from, $subject2, $autoreply, $headers2);
if($send)
{header( "Location: http://www.dragsholmhundeskole.dk/svar2.php" );}
else
{print "Der skete en fejl ved afsendelse af din bestilling. Kontakt venligst webmaster@dragsholmhundeskole.dk"; }
}
}
?>

på forhånd tak for hjælpen ( og tak til Kim for al hans tidligere hjælp :-))

mvh
Maj-Britt
majer711
 

Re: php koden i formular med afkrydsningsfelt

Indlægaf Kim Ludvigsen » man mar 07, 2011 18:13

majer711 skrev:(Der er så flere valgmuligehder men alle med name="Type[]")


Og det er garanteret der fejlen er. De skal have forskellige navne. Og ingen [], så vidt jeg da ved.

Jeg er på vej ud ad døren, så det er et lidt overfladisk svar, men prøv først med andre navne, fx name="type1" og name="type2" - eller endnu bedre, så brug nogle mere sigende navne, hvilket vil gøre koden mere overskuelig, fx name="kalvefoder", name="svinefoder" osv.
Mvh.
Kim Ludvigsen
Kim Ludvigsen
Site Admin
 
Indlæg: 7263
Tilmeldt: tors jun 08, 2006 0:49

Re: php koden i formular med afkrydsningsfelt

Indlægaf Gæst » tirs mar 08, 2011 0:00

hm det skulle efter hvad jeg har læst netop ikke være nødvendigt, når det er afkrydsningsfelter, som er i samme gruppe.
Det vil helt sikkert virke hvis jeg giver hvert felt sit eget navn, men så vil der også være rigtig mange "blanke" felter i bestillingsmailen. Ideen er at i bestillingsmailen er der kun et felt, hvor hver af de angivne typer af foder (deraf navnet type :-) man har valgt står med komma.

Jeg læste det i PHP og MySQL hæftet fra Libris. Sside 37. Jeg kan bare ikke få det til at virke hvis jeg skriver det de har skrevet i eksemplet - så ender jeg bare med et PHP script dcer melder fejl i en linie der ikke er der.
Deres eksempel lyder:

<b>Brugeren indtastede følgende:</b><br/>
<?php

echo "Navn: " . $_REQUEST["navn"] . "<br/>";
echo "Køn: " . $_REQUEST["kon"] . "<br/>";
echo "Musik: ";

$musik = $_REQUEST["musik"];
for ($tal = 0; $tal < count($musik); $tal++) {
echo $musik[$tal] . " ";
}
?>

men som sagt kan jeg ikke lige finde ud af at få det ind i mit script ;.))
Gæst
 

Re: php koden i formular med afkrydsningsfelt

Indlægaf Kim Ludvigsen » tirs mar 08, 2011 10:44

Ok, jeg tænkte på rullemenuer til at vælge.

Hvis du får en fejl i en linje, der ikke er der, så er det sikkert fordi, fejlen ligger i en af linjerne lige inden. Det kan fx være et glemt " ; eller }. Jeg laver konstant den slags fejl :oops:

Koden [] laver et array på en streng så fx $type[] bliver et array, der kan indeholde flere strenge. Når du prøver at udskrive et array direkte, vil du blot få udskrevet "array". Arrayet skal "pakkes op", før det kan udskrives til dit brug. Hæftets eksempel med nedenstående pakker netop arrayet op ved at lave en løkke, hvor hver enkelt streng udskrives i hver gennemgang af løkken.

for ($tal = 0; $tal < count($type); $tal++) {
echo $type[$tal] . " ";
}
count($type) tæller, hvor mange værdier der findes i arrayet, og løkken gentages så det antal gange.
echo $type[$tal] udskriver værdierne.

Denne kode i dit eksempel bør vist gøre det samme:
foreach($fields as $a => $b)
Så egentlig burde det virke.

Jeg håber, dette kan sætte dig på sporet. Ellers må du vende tilbage, gerne med en prøveside med formularen og en kopi af hele php-filen - men med forvansket mailadresse. Det er lidt svært ud fra brudstykker.
Mvh.
Kim Ludvigsen
Kim Ludvigsen
Site Admin
 
Indlæg: 7263
Tilmeldt: tors jun 08, 2006 0:49

Re: php koden i formular med afkrydsningsfelt

Indlægaf Gæst » tors mar 10, 2011 19:58

Det ville være super hvis du vil kate et blik på det, for jeg kan simpelthen ikke få det til at virke. Nu kommer der en melding op på skærmen, men ingen mail og den melding er ikke den der skal komme, det er noget af det der skal kommme i mailen, men med felter der ikke er helt udfyldt. Men det er nok nemmere at se det selv, end at jeg prøver at beskrive det :-))

Du kan se en prøveside af formularen på www.dragsholmhundeskole.dk/bestilfoder.php - den fil den så kigger i er contact4.php.
Gæst
 

Re: php koden i formular med afkrydsningsfelt

Indlægaf Kim Ludvigsen » fre mar 11, 2011 8:56

HTML-koden fejler i hvert fald ikke noget. Fejlen må således være i PHP-koden, og den kan jeg ikke se. Du kan evt. sende PHP-filen til mig i en mail, eller kopiere hele indholdet af den ind her. Hvis du kopierer ind her, så husk lige at forvanske din mailadresse og andre oplysninger som måske ikke skal offentliggøres i et forum.

Men hvis du stadig får meddelelsen om en fejl i en linje, så tjek lige allerførst, om du mangler et af disse tegn i en af linjerne lige over den nævnte linje:
' - skal være i par, der må ikke kun være en
" - skal være i par, der må ikke kun være en
; - skal normalt afslutte linjen - dog inden næste tegn, hvis der er sådan et
{ } - skal være i par, der må ikke kun være en
( ) - skal være i par, der må ikke kun være en
Det er ganske givet det, der udløser fejlmeddelelsen.
Mvh.
Kim Ludvigsen
Kim Ludvigsen
Site Admin
 
Indlæg: 7263
Tilmeldt: tors jun 08, 2006 0:49


Tilbage til Hjælp til Ludvigs Hjørne

Hvem er online

Brugere der læser dette forum: Ingen og 9 gæster