24. juli 2007 - 16:13Der 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.
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).
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.
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!
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.
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: <input type="checkbox" name="click"<%If Request.Cookies("click")=1 Then Response.Write " checked"%>><br> ------------------------------------------- Jeg har dog ikke selv afprøvet det.
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?
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.
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: <input type="checkbox" name="click"<%If strClick Then Response.Write " checked"%>><br> Høj: <input type="checkbox" name="hoej"<%If strHoej Then Response.Write " checked"%>><br> Click2: <input type="checkbox" name="click2"<%If strClick2 Then Response.Write " checked"%>> Høj2: <input type="checkbox" name="hoej2"<%If strHoej2 Then Response.Write " checked"%>> ------------------------------------------------- Men det kommer lidt an på, hvordan din database er opbygget.
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"))
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.