Avatar billede deqel Nybegynder
29. oktober 2001 - 13:06 Der er 20 kommentarer og
2 løsninger

indhold af multiple select array til email

Hvordan kan jeg outputte de værdier en bruger har valgt ved hjælp af en multiple select box i en email?

Når jeg skriver:

$message.= $multiple_select
mail(\"$mailto\",\"$subject \",\"$message\");

bliver indholdet af mailen til:

Array

På forhånd tak
Deqel

Avatar billede tdaugaard Nybegynder
29. oktober 2001 - 13:09 #1
for ($index = 0; $index < sizeof($multiple_select); $index++)
    $message.= $multiple_select[$index];

mail($mailto, $subject, $message);

sådan :o)
Avatar billede limemedia Nybegynder
29. oktober 2001 - 13:12 #2
kunne også finde på at bruge en
while (list(,$value) = each ($multiple_select)) $message .= $value.\"\\n\";
mail(\"$mailto\",\"$subject \",$message);


Avatar billede limemedia Nybegynder
29. oktober 2001 - 13:16 #3
tdaug >> her er det næsten irellevant, men det performer bedre at lave en

$multiple_select_size = sizeof($multiple_select);
for ($i=0; $i<$multiple_select_size; $i++) {
  $message .= $multiple_select[$i];
}

fremfor

for ($index = 0; $index < sizeof($multiple_select); $index++)
    $message.= $multiple_select[$index];

og man plejer at anvende $i og $j i loops - ved ikke hvorfor, men lig mærke til kode - den er der næsten hver gang
Avatar billede jakoba Nybegynder
29. oktober 2001 - 14:00 #4
Kan det passe at begge routiner lister samtlige valgbare values?
Eller er der et sted i koden der tester så det kun er dem brugeren har valgt der kommer med. Resten ønskes da vel næppe :-))

mvh JakobA
Avatar billede tdaugaard Nybegynder
29. oktober 2001 - 14:02 #5
jakoba, alle der ikke er valgt vil have værdien \"\" (ingenting) så derfor gør det ingen forskel i mit foreslag.

Men jow da:

for ($index = 0; $index < sizeof($multiple_select); $index++)
    if ($multiple_select[$index]) $message.= $multiple_select[$index];
Avatar billede myplacedk Nybegynder
29. oktober 2001 - 14:03 #6
jakoba>> Det er kun de valgte værdier der vises. Resten bliver slet ikke sendt fra browseren.

Her går jeg selvfølgelig ud fra at $message er skabt ud fra hvad browseren har sendt, fx. med navnet \"message[]\" i formen.

/Niels Andersen
Avatar billede tdaugaard Nybegynder
29. oktober 2001 - 14:09 #7
myplacedk, passer ikke.

Hvis du har et textfelt med navn text[] og det er tomt vil det stadig blive ført med, og det samme gælder for checkboxe.
Avatar billede limemedia Nybegynder
29. oktober 2001 - 14:12 #8
tdaug >> men vi snakker en dropdown her og kun de værdier der er valgt sendes i et array, resten sendes ikke. derfor er det ikke aktuelt at checkke på om der er indhold i feltet
Avatar billede myplacedk Nybegynder
29. oktober 2001 - 14:21 #9
tdaugaard >> Hvem snakker om tekst-felter?
Og værdien i checkboxe bliver IKKE først med, hvis ikke den er valgt. Hvordan vil du ellers se, om den er valgt?

/Niels Andersen
Avatar billede tdaugaard Nybegynder
29. oktober 2001 - 14:24 #10
myplacedk, en checked checkbox har by default værdien \"on\". og \"\" unchecked.
Avatar billede jakoba Nybegynder
29. oktober 2001 - 14:43 #11
Tak :)
Avatar billede morw Nybegynder
29. oktober 2001 - 15:01 #12
implode() er også god til at lave lister ud af et array:

$mailto = implode(\", \", $multiple_select)

Skal der ikke være komma eller simikolon mellem mailadresser hvis det skal være helt rigtigt i følge RFC nummer ditdat?
Avatar billede myplacedk Nybegynder
29. oktober 2001 - 15:12 #13
tdaugaard >> Jeg ved ikke lige hvad rfc\'erne siger, men i min IE6 bliver checkboxe uden kryds slet ikke nævnt over for serveren. Og det uanset om jeg har angive en værdi eller ej.

Hvor har du dine oplysninger om checkboxe fra?

/Niels Andersen
Avatar billede tdaugaard Nybegynder
29. oktober 2001 - 15:14 #14
myplacedk, RFC ?? det er morw der snakker om RFC ;o)

Oplysninger er vel så meget sagt, der er hvad jeg selv har prøvet... (IE6 her too)
Avatar billede myplacedk Nybegynder
29. oktober 2001 - 15:28 #15
tdaugaard >> morw snakker om noget helt andet. Det er mig, der bringer RFC på banen hvad det her angår. :)

Prøv lige at lave en checkbox, og method=\"get\". Står navnet på checkboxen i urlen, selv om du ikke sætter kryds?

Der er mange der ikke lige kender forskellen på \"eksisterer ikke/er ikke sat\", \"null\", \"nul\", \"en tom streng\" osv...

/Niels Andersen
Avatar billede tdaugaard Nybegynder
29. oktober 2001 - 15:30 #16
myplacedk, sæt method=\"post\", sæt navne til check[] og prøv ...

der vil stå

?check[]=&check[]=on

f.eks.

Der er også mange der tror vi andre ikke ved noget ... ;-)
Avatar billede morw Nybegynder
29. oktober 2001 - 15:42 #17
html vil altid sætte checkbokse op i url via get, men det er jo php der sørger for at danne et rigtig array.

Hvis et element i en checkboks eller i en select for den sags skyld IKKE er checked eller selected, så så vil PHP ikke sætte et tomt/null værdi ind i arrayet, men springe elementet over.

Avatar billede myplacedk Nybegynder
29. oktober 2001 - 15:43 #18
tdaugaard >> Hvis jeg sætter method=\"post\" vil der slet ikke stå noget!
Men det er de samme værdier der dukker op i PHP, bare i HTTP_POST_VARS i stedet.

Og checkboxes hvor jeg IKKE sætter kryds bliver stadig ikke nævnt. Den eneste måde jeg kan få en checkbox til at blive en tom streng, er hvis jeg sætter value=\"\", og sætter kryds.
Avatar billede tdaugaard Nybegynder
29. oktober 2001 - 15:46 #19
Hmm ...
Avatar billede morw Nybegynder
29. oktober 2001 - 15:48 #20
Jeg tror i snakker forbi hinanden.

tdaugaard har ret i at alle værdi sendes fra html.

myplacedk  har ret i alt php kun opfanger dem der har værdi.

I får 2 point hver især ;-D
Avatar billede myplacedk Nybegynder
29. oktober 2001 - 15:50 #21
morw >> PHP fanger alt hvad der sendes, hvis du ved hvordan...
Men det er jo derfor jeg vælger method=\"get\", så kan du se præcist hvad browseren gør.
Og her sender den altså ikke navne på checkboxes der ikke er checked.

Jeg har lige kigget i W3C\'s html 4.01-specifikation, men der kunne jeg ikke lige finde noget om hvad der skal ske, når en checkbox IKKE er valgt.

/Niels Andersen
Avatar billede myplacedk Nybegynder
29. oktober 2001 - 15:52 #22
morw >> Så lige din kommentar fra 15:42...

> html vil altid sætte checkbokse op i url via get
BROWSEREN gør. Og min IE6 gør det kun, hvis der er sat kryds.

/Niels Andersen
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester