Avatar billede foxladi Nybegynder
07. oktober 2004 - 10:24 Der er 18 kommentarer og
1 løsning

Kun afsætte en linje i mail, hvis værdien er valgt

Jeg har lavet et php-script, der henter data fra en formular. Herefter sendes der en e-mail til den, der har udfyldt formularen. Vedkommende kan vælge imellem nogle forskellige felter.

Når jeg sender mailen, er der lige nu tomme linjer de steder, hvor gæsten ikke har valgt noget. Det ser jo ikke godt ud.

Er der en mulighed for kun at tage feltet med i e-mailen, hvis det er udfyldt?

Lige nu ser den del af min kode sådan her ud:

[Kode]
Du har bestilt $antal licenser af typen:
$licens1
$licens2
$licens3
$licens4
[/Kode]
Avatar billede morteeart Nybegynder
07. oktober 2004 - 10:28 #1
lav en total streng eller lign.

$total = $licens1."\n".$liencs2."\n". osv..

og så evt. kun sætte \n med en if() sætning.
Avatar billede kammeyer Nybegynder
07. oktober 2004 - 10:29 #2
Tjo - du kunne fylde et array med de forskellige licenser:

$licens[] = ".....";
$licens[] = "......";

Sikkert et udtræk fra noget andet det har valgt - men så kan du i mailen:

for ($i = 0; $i < count($licens); $i++)
  echo $licens[$i] . "<br>"; 
// <br> hvis det er html mail ellers ret selv til linieskift.

Så får du kun de linier ud der er relevante.
Avatar billede foxladi Nybegynder
07. oktober 2004 - 10:47 #3
Tak for hurtig respons.

morteeart -- jeg kan ikke helt forstå, hvad du mener.
kammeyer -- jeg prøvede, men der opstår et problem med for-sætningen inde i mailen. Jeg prøvede forskellige varianter, men uden held.

Min kode:

[Kode]
$header = "From: bla bla <e@mail.dk>";
$emne = "Bestilling af licenser";
$besked = "Goddag $navn\n\n
Tak for din bestilling, som fremgår nedenfor:\n\n$gratis\n
Skole/Firma: $skole
Navn: $navn
Adresse: $adresse
Postnr. og by: $postnr $by
Telefon: $tlf\n
Ønsket betalingsform: $betaling\n\n
Du har bestilt $antal licenser af typen:
Kommentar: $kommentar
";

// Sender mailen ud fra ovenstående oplysninger.
mail($email, $emne, $besked, $header);
[/Kode]

Så hvordan får jeg $licens[$i] ind i mailen?
Avatar billede sukos Juniormester
07. oktober 2004 - 10:58 #4
Nu ved jeg ikke hvordan din formular ser ud, kodemæssigt, men hvis du kalder dem noget relevant, de forskellige felter, kan du brug en while

Lad os sige du har
<input type="text" name="Skole/Firma">
<input type="text" name="Navn">
<input type="text" name="Adresse">
o.s.v.

$besked = "";
while(list($key, $value) = each($_POST)) {
if(trim($value) == "") {
continue;
}
$besked .= urldecode($key) .": ". urldecode($value) ."\n";

}
Avatar billede foxladi Nybegynder
07. oktober 2004 - 11:06 #5
Hej sukos

Jo, hvert felt har et navn, men der er en rulleliste med valgmuligheder ud for hvert felt.

I php-dokumentet har jeg derfor brugt:

fx $firma = $_REQUEST["firma"];

og herefter for ikke at få de uvalgte felter med:

if ($firma == "Vælg her") {
    $firma = ""; }

Når jeg indsætter dit forslag, får jeg fx
firma: Vælg her
i mailen.
Avatar billede sukos Juniormester
07. oktober 2004 - 11:13 #6
Hvis du f.eks. også bruger hiddenfelter kan du putte dem ind så'n:

if(trim($value) == "" || urldecode($value) == "Vælg her" || $value == "hiddenfelt") {
continue;
}

eller lægge værdier i et array
$ejmed = array("", "Vælg her", "Hiddenfelt", "Et andet hiddenfelt");

if(in_array(urldecode($value), $ejmed)) {
continue;
}
Avatar billede sukos Juniormester
07. oktober 2004 - 11:14 #7
hmm,
$ejmed = array("Vælg her", "Hiddenfelt", "Et andet hiddenfelt");

if(trim($value) == "" || in_array(urldecode($value), $ejmed)) {
continue;
}
Avatar billede foxladi Nybegynder
07. oktober 2004 - 11:24 #8
Hm, jeg har nok ikke forstået det rigtigt ...

Jeg havde efter forslag fra kammeyer lavet et array:


$licens[0] = $licens1;
[...]
$licens[7] = $licens8;

// Forslag sukos

if(trim($value) == "" || in_array(urldecode($value), $licens)) {
continue;
}

Herefter har jeg i $besked blandt andet indsat $licens

Men jeg får en fejl: Cannot break/continue 1 level

Siger det dig noget?
Avatar billede sukos Juniormester
07. oktober 2004 - 11:27 #9
Hvordan ser formularen for din licenser ud?
Avatar billede sukos Juniormester
07. oktober 2004 - 11:27 #10
ehh, og nej det siger mig ik' lige noget, den fejl! :O)
men noget gør du forkert! :O)))
Avatar billede foxladi Nybegynder
07. oktober 2004 - 11:32 #11
Formularen er meget rodet. Det er ikke mig, der har lavet den, men den, der skal bruge den, bruger Frontpage, og der er også javascript i m.m.

Men fx for en af licenserne står der (navne lavet om):

<select name="Skolelicens" class="textbox" >
                    <option selected>Vælg her
                    <option value="Licens 1">Licens 1</option>
                    <option value="Licens 2">Licens 2</option>
Avatar billede sukos Juniormester
07. oktober 2004 - 11:50 #12
Det her:
<option selected>Vælg her
Er ihvertfald forkert. Der mangler en </option>, og hvorfor lade den være selected?

Prøv:

<html><head></head>
<body>
<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post">
<input type="hidden" name="bestil">
<input type="hidden" Name="Bestillingsdato" value="<?php echo date("d-m-Y"); ?>">
Navn:<br>
<input type="text" name="Navn"><br>

Adresse:<br>
<input type="text" name="Adresse"><br>
By:<br>
<input type="text" name="By"><br>

<select name="Vuggestuelicens" class="textbox" >
                    <option value="">Vælg her</option>
                    <option value="Licens 1">Licens 1</option>
                    <option value="Licens 2">Licens 2</option>
</select>
<br>
<select name="Børnehavelicens" class="textbox" >
                    <option value="">Vælg her</option>
                    <option value="Licens 1">Licens 1</option>
                    <option value="Licens 2">Licens 2</option>
</select>
<br>
<select name="Skolelicens" class="textbox" >
                    <option value="">Vælg her</option>
                    <option value="Licens 1">Licens 1</option>
                    <option value="Licens 2">Licens 2</option>
</select>
<br>
<select name="Gymnasielicens" class="textbox" >
                    <option value="">Vælg her</option>
                    <option value="Licens 1">Licens 1</option>
                    <option value="Licens 2">Licens 2</option>
</select>
<br>
<input type="submit" value="Bestil">
</form>
<?php
if(isset($_POST["bestil"])) {

echo"<p>";

$ejmed = array("bestil", "Gymnasielicens");
$besked = "";
while(list($key, $value) = each($_POST)) {
if(trim($value) == "" || in_array(urldecode($key), $ejmed)) {
continue;
}
$besked .= urldecode($key) .": ". urldecode($value) ."\n";

}
echo $besked ."<p>";

echo nl2br($besked);
}
?>

</html></head>
Avatar billede foxladi Nybegynder
07. oktober 2004 - 15:01 #13
Hej sukos

Ja, der mangler en </option> -- ved ikke hvorfor. Frontpage? Hvorfor den er selected ved jeg heller ikke. Jeg piller ikke ved formularen ud over den smule, jeg har været nødt til.

Jeg har forsøgt mig med din kode, men jeg kan ikke få det til at virke. Det skyldes sandsynligvis manglende kendskab til -- fra min side -- hvordan jeg skal tilpasse min kode efter dit forslag.

Via ICQ gav en ven mig det råd at bruge if til at afgøre, om der skulle \n efter eller ej, og da jeg i forvejen brugte if til at finde ud af, om punktet var valgt eller ej, kunne jeg udvide med en else og få det rigtige resultat.

Imidlertid synes jeg, at du har gjort et enormt arbejde her så jeg ville gerne have lov til at give dig point. Kan du afgive et svar?
Avatar billede sukos Juniormester
07. oktober 2004 - 21:11 #14
ehh, du bruger det jo ikke, så du får ikke noget svar! :O)
Avatar billede sukos Juniormester
07. oktober 2004 - 21:12 #15
Og vi lever jo heldigvis ikke af point!!!
Avatar billede foxladi Nybegynder
07. oktober 2004 - 21:28 #16
Hej Sukos (hvad står det for i øvrigt? Det minder mig om løvhyttefesten (sukkot).

:-P

Taaarveligt!

Nej, vi lever jo ikke af point, men du gjorde et stort stykke arbejde, og det var kun min dumhed, der forhindrede mig i at forstå.
Avatar billede sukos Juniormester
07. oktober 2004 - 21:36 #17
sukos -> Startede her på exp som osku (finsk "version" af oskar, (min søn!))
Havde "noget bøvl" med point, og blev "afmeldt"
Nåh, tænkte jeg, fuckit, det var jo sjovt at være her så jeg oprettede brugeren fuckit.
Og blev afmeldt igen, fordi jeg ikke ville ta' imod point! :O)

Og, nåh, ja, så syntes jeg sukos "lagde sig lidt op af" osku, så derfor sukos

Og point gives jo for en løsning der bliver brugt. Så du får ikke noget svar.
Og det har nu ikke været noget stort arbejde! :O)
Avatar billede foxladi Nybegynder
07. oktober 2004 - 21:59 #18
Okay :-) Det må jeg så bøje mig for. Tak for din ihærdighed, og jeg glæder mig til at møde dig igen ved mit næste spørgsmål. Tak også for din forklaring på navnet sukos.

Mit eget dæknavn stammer fra sådan en omstændighed. Eftersom vi har ræven som logo, ville jeg oprette mig som foxilady på Geocities i tidernes morgen, men det navn var taget, så det blev foxladi, som jeg har beholdt lige siden.
Avatar billede foxladi Nybegynder
11. oktober 2004 - 15:59 #19
Tråd lukket
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