Avatar billede encorez Nybegynder
08. november 2009 - 12:52 Der er 6 kommentarer og
1 løsning

Fang checkboxes

Hej

Hvis jeg har 150 checkboxes, som en bruger kan krydse én eller flere af, er der så nogen måde hvorpå jeg kan fange alle de afkrydsede felter?

Hvis ikke jeg kan fange de afkrydsede felter er alternativet at gå alle 150 checkbox-igennem for at tjekke om de er valgt.

Håber I forstår spørgsmålet og kan hjælpe
Avatar billede Slettet bruger
08. november 2009 - 13:27 #1
Det er sådan her du skal gøre:

<form action="checkbox-form.php" method="post">
    Which buildings do you want access to?<br />
    <input type="checkbox" name="formDoor[]" value="A" />Acorn Building<br />
    <input type="checkbox" name="formDoor[]" value="B" />Brown Hall<br />
    <input type="checkbox" name="formDoor[]" value="C" />Carnegie Complex<br />
    <input type="checkbox" name="formDoor[]" value="D" />Drake Commons<br />
    <input type="checkbox" name="formDoor[]" value="E" />Elliot House
<input type="submit" name="formSubmit" value="Submit" />
</form>


Og i a.php

<?php
  $aDoor = $_POST['formDoor'];
  if(empty($aDoor))
  {
    echo("You didn't select any buildings.");
  }
  else
  {
    $N = count($aDoor);

    echo("You selected $N door(s): ");
    for($i=0; $i < $N; $i++)
    {
      echo($aDoor[$i] . " ");
    }
  }
?>


Du skal bare skrive det om.
Avatar billede Slettet bruger
08. november 2009 - 13:28 #2
Kom til at lave en lille fejl :D

Det er sådan her du skal gøre:

<form action="checkbox-form.php" method="post">
    Which buildings do you want access to?<br />
    <input type="checkbox" name="formDoor[]" value="A" />Acorn Building<br />
    <input type="checkbox" name="formDoor[]" value="B" />Brown Hall<br />
    <input type="checkbox" name="formDoor[]" value="C" />Carnegie Complex<br />
    <input type="checkbox" name="formDoor[]" value="D" />Drake Commons<br />
    <input type="checkbox" name="formDoor[]" value="E" />Elliot House
<input type="submit" name="formSubmit" value="Submit" />
</form>


Og i checkbox-form.php

<?php
  $aDoor = $_POST['formDoor'];
  if(empty($aDoor))
  {
    echo("You didn't select any buildings.");
  }
  else
  {
    $N = count($aDoor);

    echo("You selected $N door(s): ");
    for($i=0; $i < $N; $i++)
    {
      echo($aDoor[$i] . " ");
    }
  }
?>


Du skal bare skrive det om.
Avatar billede encorez Nybegynder
08. november 2009 - 14:13 #3
Det virker sgu. Det vidste jeg ikke man kunne. Tak for det :)
Avatar billede dkfire Nybegynder
08. november 2009 - 15:03 #4
I stedet for en for-løkke bør du bruge en foreach.
http://dk.php.net/manual/en/control-structures.foreach.php
Avatar billede encorez Nybegynder
08. november 2009 - 16:51 #5
dkfire -> hvad er forskellen. Jeg kan se at man ved foreach slipper for at skal "tælle" elementerne først, men hvorfor skulle man ellers overveje foreach?
Avatar billede dkfire Nybegynder
08. november 2009 - 21:00 #6
Hmmm skulle måske også have sagt "kan" i stedet for bør.
Jeg er ikke helt sikker på om der i forhold til ydelse er nogen forskel.
Ud over det, så har du mulighed for at arbejde arrayets key.
Avatar billede showsource Seniormester
09. november 2009 - 08:00 #7
jahh, en forløkke er vist lidt hurtigere.
Men en foreach henter arraykeys, hvilket forløkken ikke gør.
Nok derfor den er lidt hurtigere ?
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