Avatar billede andeershansen Nybegynder
21. marts 2013 - 15:30 Der er 4 kommentarer

Checkbox preset ud fra array

Hej Eksperter.

Jeg er i øjeblikket igang med en side med cirka 25 checkboxes.
Værdierne i checkboxene bliver lavet om til et array på 25 tegn og smidt i min DB.
Dvs hvis checkbox 1 og 3 er krydset af ser mit input til databasen således ud: 1010000000000000000000000 (0'erne kommer fra hidden inputs)
Så langt så godt!
Jeg er nu kommet videre til den næste side i mit system hvor checkboxene efterfølgende bliver vist igen denne gang skal de være krydset af i de felter som man har valgt på side 1.

Jeg har nu siddet og spekuleret over hvordan det skal lykkedes det meste af dagen og jeg er efterhånden på grænsen til at hive håret af mig selv.

Er der har forslag til hvorledes dette problem løses?
Avatar billede michael_stim Ekspert
21. marts 2013 - 15:44 #1
Ja, læg hver værdi i hver deres felt ;o)
Avatar billede michael_stim Ekspert
21. marts 2013 - 15:46 #2
Og på den besværlige måde, er der substring:

http://php.net/manual/en/function.substr.php
Avatar billede michael_stim Ekspert
21. marts 2013 - 15:49 #3
Eller lave din string om til et array igen:

http://www.php.net/manual/en/function.str-split.php
Avatar billede olebole Juniormester
21. marts 2013 - 16:27 #4
<ole>

Den elegante løsning er at bruge bit shifting af en integer og så gemme den i databasen. Et lille eksempel:

<?php
if (isset($_GET['foo'])) {
    $bar = array_sum($_GET['foo']);
   
    echo '$bar contains the number: ' . $bar . '<br>';
   
    if ($bar & 1) echo 'Box #1 was checked<br>';
    if ($bar & 2) echo 'Box #2 was checked<br>';
    if ($bar & 4) echo 'Box #3 was checked<br>';
    if ($bar & 8) echo 'Box #4 was checked<br>';
    if ($bar & 16) echo 'Box #5 was checked<br>';
    if ($bar & 32) echo 'Box #6 was checked<br>';
    if ($bar & 64) echo 'Box #7 was checked<br>';
    if ($bar & 128) echo 'Box #8 was checked<br>';
}
?>

<form action="">
    1: <input value="1" name="foo[]" type="checkbox"><br>
    2: <input value="2" name="foo[]" type="checkbox"><br>
    3: <input value="4" name="foo[]" type="checkbox"><br>
    4: <input value="8" name="foo[]" type="checkbox"><br>
    5: <input value="16" name="foo[]" type="checkbox"><br>
    6: <input value="32" name="foo[]" type="checkbox"><br>
    7: <input value="64" name="foo[]" type="checkbox"><br>
    8: <input value="128" name="foo[]" type="checkbox">

    <p><button type="submit">TEST</button></p>
</form>

/mvh
</bole>
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