Avatar billede jansangill Nybegynder
24. juli 2007 - 16:13 Der er 18 kommentarer og
1 løsning

checkbox småproblemer

Har et lille simpelt spørgsmål, som jeg ikke kan huske hvordan gøres lige pt.

Jeh har nogle checkboxe. Dem af de checkboxe der er markeret skal skrive 1 til databasen, og hvis de ikke er checked skal der skrives 0 til databasen.

Den skal også huske hvis de er checked. Derved mener jeg, at hvis jeg har tjekket en af, skal det huskes næste gang jeg besøger samme side at den er checked.
Avatar billede w13 Novice
25. juli 2007 - 14:05 #1
Drejer det sig om checkbokse med samme name eller om forskelligt navngivne checkboxe?
(Kan jeg se lidt kode?)

Skal checkboxene huskes selvom man har haft lukket browseren og åbner den igen flere dage senere? For så må du ud i noget Cookie, om du så vælger at bruge JavaScript eller ASP til det. Alternativt kan du bare bruge Sessions i ASP, som dog kun huskes indtil browseren lukkes (eller i 20 minutter uden aktivt brug af hjemmesiden).
Avatar billede jansangill Nybegynder
25. juli 2007 - 20:27 #2
ved ike hvor meget kode kan bruges til her.

Det vil være forskeligt navngivne checkboxe, hvoraf de skal registreres i en database med enten en værdi af 0(hvis checkbox ikke er tjekket af) eller værdi af 1 (hvis checkbox er tjekket af)

Og hvis værdi = 1, så skal checkboxen være krydset af næste gang man kommer ind i systemet.

Hvordan ville man smartest gøre dette?


Her er lidt af html'en:, eller et eksempel på det.

click: &nbsp;<input type="checkbox" name="click"><br>
Høj:&nbsp;<input type="checkbox" name="hoej"><br>
Click2:&nbsp;<input type="checkbox" name="click2">
Høj2: &nbsp;<input type="checkbox" name="hoej2">
Avatar billede w13 Novice
25. juli 2007 - 20:34 #3
Ja, når du ikke har angivet en value, så bliver det enten "" (blank, hvis der ikke er krydset af) eller "on" (hvis der er krydset af). Jeg tror også, "on" svarer til "true". Så hvis du nu sætter dit databasefelt til at være numerisk (tal), så kan det varer, at den del af det bare funger!
Avatar billede jansangill Nybegynder
25. juli 2007 - 20:49 #4
Nemlig ja, har sat database felted mySQL til at være int.

Men indtil videre har jeg haft lidt problemer med at skrive den rigtige værdi til feltet, og gøre sålades at den er checked når værdi = 1.

Har du en forsøg på hvordan det eventuelt kunne lade sig gi sådan kode mæssigt, da det jeg har prøvet ikke har virket.
Avatar billede w13 Novice
25. juli 2007 - 20:51 #5
"lidt problemer med at skrive den rigtige værdi til feltet" er jeg ikke lige med på, hvad du mener.

Og om de er krydset af skal kunne huskes flere dage senere?
Avatar billede jansangill Nybegynder
25. juli 2007 - 20:55 #6
Hvis de har krydset dem af ja, så skal værdien 1 skrives til databasen. Og den værdi skal være = 1. Hvis værdi = 1 i databasen, så skal checkboxene være krydset af. Hvis værdi ikke = 1, så skal de ikke være tjekket af.


Hvordan ville man gribe det an at få dettte til at virke?

Problemet er, at jeg ikke ved hvordan det skulle lade sig gi.
Avatar billede jansangill Nybegynder
25. juli 2007 - 20:58 #7
sig endelig til hvis vi taler forbi hinanden:)
Avatar billede w13 Novice
25. juli 2007 - 20:58 #8
Sorry, jeg duer ikke til cookies. Håbede det gik med Sessions. Desværre.

Men det med at gemme dem i databasen skulle da gerne automatisk give 1, hvis de er klikket, og 0, hvis de ikke er, når dit felt er numerisk.
Avatar billede jansangill Nybegynder
25. juli 2007 - 21:01 #9
Okay jeg håbede på at man via nogle if sætninger kunne særge for at input feltet er tjekket hvis værdi = 1.
Avatar billede w13 Novice
25. juli 2007 - 21:12 #10
Du mener hvis værdien i databasen er 1?

Måske har jeg fat i en ASP-cookies-løsning:
-------------------------------------------
I asp-filen som gemmer i db:
-------------------------------------------
Class SaveFormCookie(fieldname,plusdays)
  If Request.Form(fieldname) Then
    Response.Cookies(fieldname)=1
    Response.Cookies(fieldname).expires=Now()+60
  Else
    Response.Cookies(fieldname)=""
  End If
End Function

Call SaveFormCookie("click",60)
Call SaveFormCookie("hoej",60)
Call SaveFormCookie("click2",60)
Call SaveFormCookie("hoej2",60)
-------------------------------------------
Og ved selve felterne:
-------------------------------------------
click: &nbsp;<input type="checkbox" name="click"<%If Request.Cookies("click")=1 Then Response.Write " checked"%>><br>
-------------------------------------------
Jeg har dog ikke selv afprøvet det.
Avatar billede thesurfer Nybegynder
26. juli 2007 - 00:12 #11
jansangill> Der er lige nogle ting du skal forklare..

Du går ind på siden.. Hvad sker der så?
Hvornår skal ændringerne gemmes i databasen?
Er det kun dig der bruger websiden, eller er det en webside med flere brugere?
Hvis det er flere brugere, er der så noget login?
Hvis der er flere brugere, er der så forskellige checkbox-indstillinger, eller er det dig der bestemmer?
Avatar billede jansangill Nybegynder
26. juli 2007 - 00:32 #12
Okay the surfer.

1) Man går ind på siden, så har brugeren en valgmulighed for at opdatere mange forskellige oplysninger, som så skal vises på en hjemmeside.

2) Ændringer gemmes når brugeren trykker på submit kannepn, hvori han gemmer alle de ændringer der er lavet til formularen eller opdaterer formularern.

3)Det sted hvor formularen er, og han kan inputte forskellige oplysninger er bag et lukket system. Men diverse oplysninger som brugeren fylder ud vil vises på hjemmesiden. Når han checker "click" af f.eks, så siger det at "click" skal vises på hjemmesiden som en mulighed.

4) ja man skal bruge login for at komme hen til formularen. Lukket for de fleste.

5) Jeg bestemmer checkbox indstillingerne. Men det skal være således at det huskes om checkboxen er checked af eller ej.


Håber det forklarer alle dine spørgsmål

jan
Avatar billede w13 Novice
26. juli 2007 - 14:25 #13
Har du prøvet min kode? Hvis den ikke virker, kan man bare bruge databasen, når nu du siger, man er logget ind. Det er jo alligevel gemt deri.

Dvs. noget à la:
----------------------------------------------
<%strSQL = "SELECT * FROM [settings] WHERE [username]='login'"

Set rs = Conn.Execute(strSQL)
If Not (rs.BOF Or rs.EOF) Then
    strClick=rs("click")
    strHoej=rs("hoej")
    strClick2=rs("click2")
    strHoej2=rs("hoej2")
End If

rs.Close%>

click: &nbsp;<input type="checkbox" name="click"<%If strClick Then Response.Write " checked"%>><br>
Høj:&nbsp;<input type="checkbox" name="hoej"<%If strHoej Then Response.Write " checked"%>><br>
Click2:&nbsp;<input type="checkbox" name="click2"<%If strClick2 Then Response.Write " checked"%>>
Høj2: &nbsp;<input type="checkbox" name="hoej2"<%If strHoej2 Then Response.Write " checked"%>>
-------------------------------------------------
Men det kommer lidt an på, hvordan din database er opbygget.
Avatar billede thesurfer Nybegynder
26. juli 2007 - 20:36 #14
jansangill> Du skrev "Her er lidt af html'en:, eller et eksempel på det."..

Hvis du skriver lidt mere af HTML'en, eller det hele, kan vi nemmere se om der er noget smart man kan gøre..

Evt. omdøbe checkboxene, så det bliver nemmere..
Avatar billede jansangill Nybegynder
26. juli 2007 - 23:39 #15
w13, det virkede ikke. Den skriver værdien 0 lige meget hvad. Og den checker heller ikke den af.


thesurfer-->


Her er lidt af det:


<!--#include file="../../includes/config.asp"-->
<!--#include file="../../includes/functions.asp"-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="../../includes/css/style.css" rel="stylesheet" type="text/css">
<%

      if request.form("save") = "Gem" then
      SQL = "UPDATE destination_info SET hoejde_by="&nn("hoejde_by")&", hoejde_bjerg="&nn("hoejde_bjerg")&", clickski="&nn("clickski")&", hoejmark="&nn("hoejmark")" WHERE dest_id ="&nn("id")
      Conn.Execute(SQL)
      end if
      %>
</head>

<body>

<br>

<%
Set RS = Server.CreateObject("ADODB.Recordset")
SQL = "SELECT * from destination_info WHERE dest_id ="&request("id")
RS.Open SQL, Conn, 1, 3


if RS.eof then

DB = "INSERT INTO destination_info (dest_id) VALUES ("&request("id")&")"
Conn.Execute(DB)
response.Redirect(request.ServerVariables("HTTP_REFERER"))

else

hoejde_by_Vis = RS("hoejde_by")
hoejde_bjerg_Vis = RS("hoejde_bjerg")
clickski = RS("clickski")
hoejmark = RS("hoejmark")

%>



<form action="<%request.ServerVariables("URL")%>" method="post">

 
    By:
  <input type="text" value="<%=hoejde_by_Vis%>" name="hoejde_by"/>
    Bjerg:
  <input type="text" value="<%=hoejde_bjerg_Vis%>" name="hoejde_bjerg"/>
  --------------------------------------------------------------------
  click: &nbsp;<input type="checkbox" name="click"><br>
  Høj:&nbsp;<input type="checkbox" name="hoej"><br>

  --------------------------------------------------------------------- 

    <input type="submit" name="save" value="Gem">
        <%
      if request.form("save") = "Gem" then
      response.write "<b>Databasen er opdateret</b>"
    end if
   
        %>
</form>
<%end if%>
</body>
</html>
Avatar billede w13 Novice
26. juli 2007 - 23:52 #16
Hvis den har gemt 0 uanset hvad, så bør den vel heller ikke krydse af. Men prøv at give dine checkboxes value="1" så.
Avatar billede jansangill Nybegynder
27. juli 2007 - 00:13 #17
det ver nemlig rigtigt.

Og ja havde fundet ud af at den bare skulle have en value="1" på for at virke, efter jeg skrev.

Nu håber jeg bare at det er den rigtige løsning jeg vælger.

Men ligemeget hvad, mange tak for svarene og hjælpen. Nu ved jeg da at dette problem kan løses ufattelig simpelt næste gang.

Smid du bare et svar.Mange mange tak for tiden og hjælpen.

thesurfer-->Hvis du har en smartere måde at få maskineriet til at køre på, skal du bare  sige til:)
Avatar billede thesurfer Nybegynder
27. juli 2007 - 10:47 #18
jansangill> Er der kun 2 checkboxe? Hvilken relation/forbindelse er der mellem texkboxene og checkboxene..?
Avatar billede w13 Novice
27. juli 2007 - 14:38 #19
svar her :)
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