Avatar billede newbie Nybegynder
14. november 2000 - 14:49 Der er 5 kommentarer og
4 løsninger

Gemme checkboxværdi i db

Hvordan gemmer jeg men checkboxværdi i databasen ??

true eller false
Avatar billede sone Nybegynder
14. november 2000 - 14:57 #1
En checkbox der ikke er klikket af, returnerer ikke nogen værdi. Du skal derfor lave et check på serveren:

IF request.form(\"chkbox\") = \"\" THEN
  chkbox = False
ELSE
  chkbox = True
END IF

Det vil i mange tilfælde være mindst lige så nemt at gemme et 0 eller 1, fremfor false eller true (så passer det til flere databaser)
Avatar billede etlekana Nybegynder
14. november 2000 - 14:57 #2
FORM SIDEN
---------------
<Input name=\"box1\" type=\"checkbox\">

ASP SIDEN
---------------
request.form(\"box1\")


Sådanner så simpel er det..
Avatar billede januskh Nybegynder
14. november 2000 - 14:57 #3
Ja det er en god ide at gem en checkbox som True/False i databasen. Dette kan gøre på flere måder. Her den letteste:

<SIDE.ASP>
<FORM ACTION=\"SAVE.ASP\" METHOD=\"POST\">
<INPUT TYPE=\"CHECKBOX\" NAME=\"CHKTEST\" VALUE=\"1\">
</FORM>

<SAVE.ASP>

StrConnect = \"Driver={Microsoft Access Driver (*.mdb)};\" & _
\"DBQ=\" & \"d:\\data\\databaser\\web.mdb\"
 
If mvarMainCon.State = 1 Then mvarMainCon.Close
mvarMainCon.Open strConnect

RS.Source = \"SELECT * FROM TABEL WHERE ID=0\"
RS.Open , mvarMainCon, 1,3,1
If RS.RecordSet = 0 Then RS.AddNew

If Request.Form(\"CHKTEST\") = \"1\" Then
  RS(\"JANEJ\") = True
Else
  RS(\"JANEJ\") = False
End If

RS.Update

\'Husk at sætte alt til nothing

If Not RS Is Nothing Then
  If RS.State <> 0 Then RS.Close
  Set RS = Nothing
End if

If Not mvarMainCon Is Nothing Then
  If mvarMainCon.State <> 0 Then mvarMainCon.Close
  Set mvarMainCon = nothing
End if

Håber at du kan bruge det til noget...



Avatar billede newbie Nybegynder
14. november 2000 - 14:58 #4
hvordan skal sql-strengen se ud???
Avatar billede januskh Nybegynder
14. november 2000 - 15:03 #5
Hvis det er mig, som du spørger, så er svaret som følger:

RS er et recordset, som jeg åbner udfra et eller andet kriterie. Afhængigt af om du vil opdatere allerede eksisterende poster i databasen, så udformer du din SQL streng.

I det eksempel, som jeg har lavet til dig, kan du se at hvis RS.RecordCount er lig 0, så er det fordi der ikke er fundet nogen poster, og skal det oprette en ny. (ADDNEW)

RS.Update opretter/opdaterer endeligt i databasen.

Det er svær at forklare, hvordan SQL strengen skal se ud, idet det er afhængigt af din database.
Avatar billede sone Nybegynder
14. november 2000 - 15:06 #6
Hvis du har VALUE=\"1\" på din checkbox, så kan du bruge noget smart:

INSERT INTO tabelnavn (chkbox) VALUES (\" & CInt(request.form(\"chkbox\")) & \")\"

CInt(\"\") returnerer 0 - det udnytter vi når boksen ikke er klikket af.
Avatar billede etlekana Nybegynder
14. november 2000 - 15:19 #7
jeg ville nok vælge at skrive true i checkboxen og så ville jeg tjekke med en boolean udtryk i stedet for en integer :o)
Avatar billede sth Novice
14. november 2000 - 15:57 #8
Dette er noget af det jeg har haft flest problemer med, grunden var den at min lokale pc, kørte med Win i DK ver. og serveren kørte som win uk, min access db var dansk, dette betød at nå jeg hentede data skulle jeg skrive \"true\" og når jeg gemte skulle jeg skrive \"sand\" !!!

Dog skal du lige huske at access gemmer værdien \"sand/true\" som -1 og ikke 1, hvis du da altså har oprettet dit felt som et ja/nej felt i access. spørgsmålet har været her på eksperten en del gange, prøv evt at se dette spørgsmål:
http://www.eksperten.dk/spm/17799
http://www.eksperten.dk/spm/17809
Avatar billede sone Nybegynder
14. november 2000 - 16:03 #9
...alt-i-alt... meget nemmere at bruge et tal.
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
Kurser inden for grundlæggende programmering

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