Avatar billede peder77 Nybegynder
10. oktober 2007 - 10:36 Der er 10 kommentarer og
1 løsning

Checkbox skal medtage alle.

Hej Eksperter.

Jeg har lavet en formular.
Der er bl.a. 21 checkboxe.

<input name="dag" type="checkbox" id="checkbox" value="mandag_dag" />
Det eneste der ændre sig er value.

Jeg sender formularen videre ved hjælp af et php script, hvor jeg bruger

$msg .= "Dage: $_POST[dag]\n";

Mit problem er at den kun medtager en checkbox. Hvad gør jeg når $msg .= "Dage: $_POST[dag]\n"; skal tage alle de markerede checkboxe og ikke kun en.

Håber i kan hjælpe.
På forhånd tak.

Mvh
Peter
Avatar billede pidgeot Nybegynder
10. oktober 2007 - 10:38 #1
Smid [] ind sidst i navnet. Så får du alle de markerede checkbokse i et array.
Avatar billede nielle Nybegynder
10. oktober 2007 - 10:39 #2
Gætter på at du har givet dem alle sammen navnet "dag"?

Prøv så at ændre til:

<input name="dag[]" type="checkbox" id="checkbox" value="mandag_dag" />

Derved vil $_POST[dag] så optræde som et array med dage.

Bemærk du får kun dem med hvor der er hakket af i cb'en.
Avatar billede pidgeot Nybegynder
10. oktober 2007 - 10:43 #3
En anden ting er at din linje kunne tyde på de alle har id="checkbox" - det er ikke tilladt, id'er skal være unikke.

Jeg gætter på det er for at style dem - i hvilket tilfælde du skal bruge class (og tilsvarende ændre din CSS til . i stedet for #).
Avatar billede peder77 Nybegynder
10. oktober 2007 - 10:52 #4
Jeg har ændret id til unikke navne.
Jeg har sat [] bag på navnet:
<input name="dag[]" type="checkbox" id="checkbox2" value="mandag_aften" />

Men når jeg afsender formularen får jeg følgende besked i mailen:
Dage: Array

Hvad gør jeg galt?
Mvh
Peter
Avatar billede michael_stim Ekspert
10. oktober 2007 - 10:55 #5
Du skal splitte arrayet.
foreach()
implode()
eller lignende.
Avatar billede peder77 Nybegynder
10. oktober 2007 - 11:10 #6
kan du give et eksempel?
Avatar billede pidgeot Nybegynder
10. oktober 2007 - 11:12 #7
$dage=implode(', ',$_POST['dag']);
Avatar billede michael_stim Ekspert
10. oktober 2007 - 11:17 #8
Der er www.php.net hvor der er tonsvis af eksempler.
www.php.net/implode
Altså bare skrive funktionen til sidst, så kommer du direkte til siden ;o)
Avatar billede peder77 Nybegynder
10. oktober 2007 - 11:19 #9
Så virker det.
Rigtig mange tak for interessen.

$dage=implode(', ',$_POST['dag']); did the job!
Avatar billede nielle Nybegynder
10. oktober 2007 - 11:20 #10
Den skal vel ikke splittes - det er jo allerede et array.

foreach ($_POST[''] as $key => $value)
{
    echo "$key = $value<br>";
}
Avatar billede nielle Nybegynder
10. oktober 2007 - 11:20 #11
Ups:

foreach ($_POST['dag'] as $key => $value)
{
    echo "$key = $value<br>";
}
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