Avatar billede hundevennen Nybegynder
03. november 2009 - 07:33 Der er 16 kommentarer og
1 løsning

insert væardier fra flere checkboxe til et felt?

Jeg har en form med 50 checkbokse og for ikke at skulle oprette 50 felter i databasen vil jeg gerne kunne opdatere værdien af dem der bliver checked i et felt i databasen.
Jeg har googlet lidt og set at det kan lade sig gøre, men bare ikke fundet løsningen.
Jeg bruger asp så kunne man ikke lave en variabel ud af alt der er checked i  formen, - ? eller en anden løsning
Avatar billede keysersoze Guru
03. november 2009 - 07:53 #1
umiddelbart ville jeg ikke mene at nogle af de to løsninger er særlig optimale - den rigtige løsning lyder til at være en mange-til-mange tabel, altså en ekstra tabel hvor der indsættes en række for hver aftjekkede værdi.
Avatar billede hundevennen Nybegynder
03. november 2009 - 10:27 #2
skal jeg forstå det sådan, at man ikke kan lave en insert into felt1 values fra checkbox1, checkbox2 osv, så der i felt1 kommer til at stå f.eks 1,2,3,5,9,35,
Avatar billede keysersoze Guru
03. november 2009 - 10:41 #3
jo - du kan godt men det er en rigtig dårlig løsning både set fra et kode- og databasemæssigt synspunkt.
Avatar billede teepee Nybegynder
03. november 2009 - 10:56 #4
Du skal bare bruge den binære værdi.
Jeg har brugt det nogle gange til at repræsentere ugedage.
Den første checkbox er den første bit osv.
Alle unchecked 0, alle checked 1.
00101010100101010101010101010101010101010101010...
Alle dine tal vil altså være 50 bit lange.
Det smarte ved det er at du kan lave f.eks XOR behandlinger af dine data.
Avatar billede teepee Nybegynder
03. november 2009 - 11:00 #5
Glemte lige at sige at du gemmer det bare som integer i basen, og konverterer når du skal bruge det: 0000001110 gemmer du bare som 14. Dvs. at 2. 3. og 4. checkbox var checked.
Avatar billede Syska Mester
03. november 2009 - 12:32 #6
ja, men husk det skal være en long/Int64, ... da int kun er 32bit :-)

mvh
Avatar billede teepee Nybegynder
03. november 2009 - 14:02 #7
Det er da også rigtigt. Du kan evt. splitte dine svar lidt op hvis der er en form for gruppering blandt alle dine checkboxe. Så skal maskinen ikke regne med helt så store tal.
Avatar billede janus_007 Nybegynder
03. november 2009 - 21:55 #8
uhauha.. og så pludselig bliver byttet om på checkboxene.. og vam... så røg de data *LOL*

Du vil være langt bedre tjent med det som keysersoze skrev, det andet der er sku noget biks.
Avatar billede Syska Mester
03. november 2009 - 22:02 #9
Ja, det er i hvert fald noget rod for den udvikler som måske skal bygge videre på det i fremtiden ... og så hvis dokumentationen omkring det ikke er at finde ... irk :-s

mvh
Avatar billede teepee Nybegynder
04. november 2009 - 09:25 #10
Du kan da bytte om på de checkboxes lige så tosset du vil. De har vel et navn/nummer som ikke ændrer sig?
Avatar billede janus_007 Nybegynder
04. november 2009 - 17:53 #11
teepee, ikke hvis det er repræsenteret som en bitmask! (og jo man kan godt lave noget halløj med blabla... men godt bliver det aldrig)
Avatar billede teepee Nybegynder
04. november 2009 - 19:09 #12
positionen af din bitmask er jo repræsenteret på en eller anden måde i dine checkboxes, det behøver absolut ikke at være den rækkefølge at de bliver postet i dit html request. Du kalde satgens registrer dem efter deres navn som kunne være et nummer. Du tænker endimensionelt.
Avatar billede keysersoze Guru
04. november 2009 - 19:23 #13
en ting er hvad man kan - en anden ting hvad der er praktisk. Løsningen med en "bitmask" er overordentlig svær at dokumentere, den kan være svær at forespørge på og kan for en evt ny udvikler være vanskelig at vedligeholde - hvorimod en rigtig databaseløsning ikke falder på nogle af de ting. Det gode af det hele er at det ikke tager længere tid at udvikle - derfor kan jeg til stadighed ikke forstå hvorfor bitmask-løsningen stadig bliver diskuteret.
Avatar billede hundevennen Nybegynder
05. november 2009 - 11:04 #14
Keysersoze - kan du udvide min horisont lidt mere med din løsning.
Skal den ekstra tabel indeholde et felt for hver checkboks og hvordan kan man lave en forespørgsel ind i den. på et tidspunkt vil jeg f.eks gerne vide hvormange gange checkboks nr. 7 er anvendt?
Avatar billede keysersoze Guru
05. november 2009 - 23:15 #15
nej - en række for hvor checkboks-værdi der er værd at gemme, fx kunne det være at det kun var nødvendigt at gemme dem der var sat hak i;

PARENTID | CHECKBOXID

Så kunne du også have en tabel med dine checkboxe i så du kunne have relationer hele veje rundt.

Dette ville nemlig betyde at du dine forespørgsler blev lette at udføre - fx;

select count(*) from tabel where CHECKBOXID = 7

Er begge værdier værd at gemme kunne du gøre det sådan;

PARENTID | CHECKBOXID | VALUE
Avatar billede hundevennen Nybegynder
10. november 2009 - 15:18 #16
keysersoze - jeg laver en tabel med checkboxe - tak for hjælpen og læg et svar
Avatar billede keysersoze Guru
10. november 2009 - 19:51 #17
svar :)
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
Computerworld tilbyder specialiserede kurser i database-management

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