Avatar billede wampiro-uha Nybegynder
03. marts 2004 - 21:41 Der er 14 kommentarer og
1 løsning

Flere checkboxe, på bar bund!

Jeg er interesseret i hvorledes man bygger en form op som består af flere checkbokse, som man kan krydse af. F.eks. med hensyn til interesser (film, gå-i-byen, osv. osv.)

Hvorledes behandler man disse data, for at finde ud af hvilke der er krydset af. Og hvordan vil en MySQL-DB typisk se ud, når man f.eks. har en tabel med brugere og deres ID?
Avatar billede jakobclausen Nybegynder
03. marts 2004 - 21:46 #1
Eksempel:

<input name="fritid" type="checkbox" value="film">
<input name="fritid" type="checkbox" value="Gå-i-byen">
<input name="fritid" type="checkbox" value="læse">

Jeg har oprettet tre checkbokse, med samme navne - hvilket betyder at kun én af dem kan være checked på en gang.
Dette vil blive til en variabel $fritid som indholder den værdi som man har checked. Altså hvis jeg sætter hak i "læse", vil jeg have en variabel der hedder $fritid som indholder værdien "læse"
Avatar billede wampiro-uha Nybegynder
03. marts 2004 - 21:47 #2
Yes yes. Ikke helt det der er mit problem.
Man skal kunne tjekke flere af dem af.
Måske kun 1, men også 2, 3 og alle sammen! Det er det der er problemet!
Avatar billede jakobclausen Nybegynder
03. marts 2004 - 21:51 #3
Så vil jeg anbefale dig at bruge en multiple select boks.

Eksempel fra en af mine sider:

<select name="interest[]" size="5" multiple id="select3" class="form">
            <option value="Sport">Sport</option>
            <option value="Mad &amp; vin">Mad &amp; vin</option>
            <option value="B&oslash;ger">B&oslash;ger</option>
            <option value="Teater">Teater</option>
            <option value="Kunst">Kunst</option>
            <option value="Musik">Musik</option>
            <option value="Spille/lave musik">Spille/lave musik</option>
            <option value="Fotografering">Fotografering</option>
            <option value="Male/tegne">Male/tegne</option>
            <option value="Film">Film</option>
            <option value="Mystik">Mystik</option>
            <option value="Religion">Religion</option>
            <option value="Videnskab">Videnskab</option>
            <option value="Computer">Computer</option>
            <option value="Spil">Spil </option>
            <option value="Natur">Natur</option>
            <option value="K&aelig;ledyr">K&aelig;ledyr</option>
            <option value="Landbrug">Landbrug</option>
            <option value="Rejser">Rejser</option>
            <option value="Friluftsliv">Friluftsliv</option>
            <option value="Diskotek">Diskotek</option>
            <option value="Cafe">Cafe</option>
            <option value="Job/karriere">Job/karriere</option>
            <option value="Skole/uddannelse">Skole/uddannelse</option>
        <option value="Familie">Familie</option>
          <option value="B&oslash;rn">B&oslash;rn</option>
        <option value="T&oslash;j">T&oslash;j</option>                              <option value="H&aring;ndarbejde">H&aring;ndarbejde</option>
        <option value="Politik">Politik</option>
        <option value="Samler">Samler</option>
        <option value="Biler">Biler</option>
</select>

På denne måde vil du få et array $interest, der indholder alle de valgte værdier
Avatar billede wampiro-uha Nybegynder
03. marts 2004 - 21:56 #4
Ok, hvad med selve behandlingen af dataerne (PHP'en) og specielt ens database-opbygning.

Hvordan hænger man dataerne sammen med brugeren?
Avatar billede jakobclausen Nybegynder
03. marts 2004 - 22:44 #5
Det er jo lidt svær at svare på, når jeg slet ikke ved hvad du skal lave.
Avatar billede jakobclausen Nybegynder
03. marts 2004 - 22:58 #6
Umiddelbart ville jeg da nok bare have én tabel, hvor du har alle data om de forskellige brugere samlet

ID - brugernavn - alder - adresse - telefon

Eller hvad du nu har brug for
Avatar billede morten-vadskaer Praktikant
04. marts 2004 - 10:50 #7
Kan du ikke lave den gode gamle:

<input name="fritid[]" type="checkbox" value="film">
<input name="fritid[]" type="checkbox" value="Gå-i-byen">
<input name="fritid[]" type="checkbox" value="læse">

Hvor du får et array, der hedder $fritid. Længden af $fritid afhænger af, hvor mange checkboxe brugeren har klikket af, således at f.eks. $fritid[0] indeholder "film" etc. etc.

Håber, det kan hjælpe dig.
Avatar billede wampiro-uha Nybegynder
04. marts 2004 - 17:06 #8
Jo, men den opstilling til databasen du har givet mig, er jo kun oplysninger om selve brugeren.

Hvordan skal jeg bedst linke det sammen med f.eks. vedkommendes fritidsinteresser?
Avatar billede jakobclausen Nybegynder
04. marts 2004 - 17:10 #9
wampiro-uha >> Vedkommendes fritidsinteresse er vel også oplysninger om brugeren, så jeg vil da blot gemme det i samme tabel, som en kommesepareret liste - udfra det der er checked af.
Avatar billede jakobclausen Nybegynder
04. marts 2004 - 17:14 #10
$interesser = implode(", ", $_POST["interest"]);

Ovenstående tager dit array $interest, som indeholder de forskellige interesser brugeren har valgt på din side. Dette bliver så lagt over i en ny variabel $interesser, som en kommesepareret liste - klar til at blive gemt i databasen.
Avatar billede wampiro-uha Nybegynder
04. marts 2004 - 18:04 #11
Hvordan skal jeg så gøre hvis vedkommende vil fjerne en interesse. Skal jeg så løbe hele array'et igennem og fjerne de interesser?

Jeg troede nemlig der var en smartere metode!
Avatar billede jakobclausen Nybegynder
04. marts 2004 - 18:07 #12
Sådan vil jeg gøre, men det er meget muligt der er en smartere løsning - jeg kender bare ikke til den.
Avatar billede wampiro-uha Nybegynder
04. marts 2004 - 18:07 #13
:-) Lader lige spm'et være lidt åben.
Avatar billede jakobclausen Nybegynder
04. marts 2004 - 18:16 #14
Synes ikke lige jeg kan finde det, men jeg har på et tidspunkt oprettet lign. spørgsmål hvor svaret blev dette (som jeg foreslår)
Avatar billede wampiro-uha Nybegynder
04. marts 2004 - 19:58 #15
Ok. Men havde troet at der fandtes en bedre metode! Men det kan da godt være metoden er go' nok!
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