Avatar billede Asky Forsker
06. februar 2012 - 13:53 Der er 15 kommentarer og
1 løsning

Checkboxe og Formmail

PHP Checkbox DATA

Denne kode kan skrive på skærmen, men ikke sende korrekt i FormMail:
<h5>Checkbox Vælg - frugt:
æbler <input type="checkbox" name="frugt[]" value="æbler">
  pærer <input type="checkbox" name="frugt[]" value="pærer">
  blommer  <input type="checkbox" name="frugt[]" value="blommer">
  kirsebær  <input type="checkbox" name="frugt[]" value="kirsebær">
jordbær <input type="checkbox" name="frugt[]" value="jordbær">

$afrugt= $_POST['frugt'];
  if(empty($afrugt))
  {
    echo("Du valgte ingen frugter.");
  }
  else
  {
    $N = count($afrugt);
    echo("Du valgte $N frugt(er): ");
  for($i=0; $i < $N; $i++)
    {
    $string_frugt = ($afrugt[$i] . " ");
      echo($afrugt[$i] . " ");
     
    }
  }


Den skriver fint på skærmen, men når jeg vil have den til at skrive det samme i en formmail,
Skriver den fint antallet af valg $N, men for $string_frugt kun navnet på den sidst valgte frugt.
Jeg har bøvlet med noget lignende ved en selectbox med multible valg.
Kan nogen hjælpe?
Avatar billede danco Nybegynder
06. februar 2012 - 14:20 #1
Jeg er ikke sikker på hvad dit problem er?

Jeg har lige testet det hos mig og der virker det fint med

<form action="Test.php" method="POST">
  <h5>Checkbox Vælg - frugt:</h5>
æbler <input type="checkbox" name="frugt[]" value="æbler">
  pærer <input type="checkbox" name="frugt[]" value="pærer">
  blommer  <input type="checkbox" name="frugt[]" value="blommer">
  kirsebær  <input type="checkbox" name="frugt[]" value="kirsebær">
jordbær <input type="checkbox" name="frugt[]" value="jordbær">
<input type="submit" name="submit" />
</form>

og så har jeg lagt en if(isset($_POST['submit'])) udenom din php del.
Avatar billede DeeDawg Nybegynder
06. februar 2012 - 14:29 #2
Først og fremmest, giver det ikke rigtig mening at benytte et for loop, når vi har foreach.

Og din kode skal se således ud, hvis der skal tilføjes til variablen og ikke overskrives, som du gør nu:

<?php
    $afrugt = (isset($_POST['frugt']) ? $_POST['frugt'] : "");
    if(empty($afrugt)){ echo "Du valgte ingen frugter."; }
   
    $N = count($afrugt);
    echo "Du valgte $N frugt(er): ");
   
    foreach($afrugt as $frugt){
        $string_frugt.= $frugt." ";
        echo $frugt." ";
    }
?>
Avatar billede DeeDawg Nybegynder
06. februar 2012 - 14:30 #3
Vi prøver lige igen. :)

<?php
    $afrugt = (isset($_POST['frugt']) ? $_POST['frugt'] : "");
    if(empty($afrugt)){ die("Du valgte ingen frugter."); }
   
    $N = count($afrugt);
    echo "Du valgte $N frugt(er): ");
   
    foreach($afrugt as $frugt){
        $string_frugt.= $frugt." ";
        echo $frugt." ";
    }
?>
Avatar billede DeeDawg Nybegynder
06. februar 2012 - 14:38 #4
Igen, igen!

Hvis mit eksempel i #3, skal fungerer, er du nok nødt til også at oprette din variabel før loopet. Så det kommer til at se sådan her ud:

    $string_frugt = "";
   
    foreach($afrugt as $frugt){
        // ...
    }
?>
Avatar billede Asky Forsker
06. februar 2012 - 17:00 #5
Senere på dagen vil jeg afprøve jeres forslag. Som sagt går det fint på skærmen med echo. Problemet er, at jeg vil have den til at tilføje det valgte i en større formmail affære med diverse indput


$besked = "Navn: ".$navn." Adresse: " .$adresse. " Tlf.: " .$telefon. " Postnummer: " .$postnummer. " By: " .$by."\n\r Valgt frugt: ".$N. " ".$string_frugt."\n\r Bemærkninger:  " .$_POST['bem'];

// send mail
$mail_status = mail("$modtagere[0]", $emne, $besked, $email);
Avatar billede olebole Juniormester
06. februar 2012 - 17:07 #6
<ole>

Du mangler headers i dit kald til mail.

Ser den streng i øvrigt rigtig ud, hvis du echo'er den? Altså:

echo "Navn: ".$navn." Adresse: " .$adresse. " Tlf.: " .$telefon. " Postnummer: " .$postnummer. " By: " .$by."\n\r Valgt frugt: ".$N. " ".$string_frugt."\n\r Bemærkninger:  " .$_POST['bem'];

/mvh
</bole>
Avatar billede olebole Juniormester
06. februar 2012 - 17:09 #7
Hvad indeholde $mail i:

$mail_status = mail("$modtagere[0]", $emne, $besked, $email);
Avatar billede olebole Juniormester
06. februar 2012 - 17:10 #8
Sorry ... Hvad indeholder $email?
Avatar billede Asky Forsker
06. februar 2012 - 18:04 #9
Det er noget jeg har fundet på for at få en lang $besked med i mail-delen, som jo ellers kun må indeholde højst 5 parametre. $headers har jeg udeladt med vilje, da det hele står i $besked, som egentlig er mere end dobbelt så lang indeholdende bl. a. 8 varer, CVR, kontonummer osv.
Avatar billede olebole Juniormester
06. februar 2012 - 18:14 #10
Den forklaring fattede jeg hat af. Du kan da ikke 'selv finde på', hvordan du bruger en fast defineret funktion. Så kan du ligeså godt udelade resten også. Du kan ikke undvære headers  =)
Avatar billede Asky Forsker
07. februar 2012 - 09:05 #11
så virker det :-) Nu vil jeg prøve samme opskrift i en multiple "rulleskakt"
Jeg lukker denne tråd.
Avatar billede Asky Forsker
07. februar 2012 - 09:07 #12
Nu er jeg endnu ikke så øvet, så ofte finder jeg kodestumper i bøger og på nettet, som jeg så afprøver. -Og den nævnte kodestump virker bare.
Avatar billede olebole Juniormester
07. februar 2012 - 16:33 #13
Nej, men det kan da godt være, det helt tilfældigt virker, når du tester med din mailklient. Hvis du ikke sætter noget i HTTP-header feltet, kan jeg garantere dig dig, at det kun er i ganske få tilfælde, det vil virke. Men er du tilfreds med det, tjahhh ...  =)
Avatar billede Asky Forsker
08. februar 2012 - 10:52 #14
Næ det skal sørme virke. nu har jeg indsat følgende headers:

$headers  = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n";
$headers .= "From: mig@email.dk" . "\r\n" ." CC:alternativ@email.dk";
$headers =("Location: http://www.domæne/dk/eksempel.php");
Avatar billede olebole Juniormester
12. februar 2012 - 22:17 #15
Undskyld, men hvad laver en location header i en email-header?
Avatar billede Asky Forsker
13. februar 2012 - 07:46 #16
Nej, den blev også smidt ud igen ;-)
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