Avatar billede steen_hansen Forsker
17. oktober 2002 - 14:08 Der er 43 kommentarer og
1 løsning

Rette i egne informationer: checkbox

Jeg har en medlemsside (som her på Eksperten), hvor brugeren kan rette i egne oplysninger, som f.eks. e-mail adresse, hjemmeside etc.

Jeg vil også gerne have, at brugeren kan fravælge at få vist i medlemslisten, hvornår vedkommende sidst har logget ind v.hj.a. en checkbox.

Jeg har manuelt sat et hak i min egen profil (i databasen), og derefter lagt noget kode ind på min "Rediger profil"-side:

<input type="checkbox" value="<%=Server.HTMLEncode(RS("showlastseen"))%>" name="shwlstseen">&nbsp;&nbsp;Jeg ønsker ikke vist hvornår jeg sidst har logget ind!

Men der sker ikke en dyt. Nogen der kan hjælpe?
Avatar billede steen_hansen Forsker
17. oktober 2002 - 14:13 #1
UNDSKYLD, der er jo mere der skal opdateres. Øjeblik ...
Avatar billede rasmuslund Nybegynder
17. oktober 2002 - 14:24 #2
Du skal jo lige tjekke om din værdi fra DB er valgt eller ikke valgt.

Jeg plejer at gører således:

<input type="checkbox" value="<%=Server.HTMLEncode(RS("showlastseen"))%>" name="shwlstseen"<% if RS("showlastseen") = "sand" then %> checked<% end if %>>&nbsp;&nbsp;Jeg ønsker ikke vist hvornår jeg sidst har logget ind!

Hvis dit felt RS("showlastseen") er lig med "sand" så bliver den afkrydset.

Rasmus :-)
Avatar billede steen_hansen Forsker
17. oktober 2002 - 14:26 #3
Hej Rasmus :o)

Så skal standardværdien være "Sand"?
Avatar billede rasmuslund Nybegynder
17. oktober 2002 - 14:31 #4
Ja eller hvad du nu vælger at skrive ned i din DB, når du gemmer posterne :-)
Avatar billede steen_hansen Forsker
17. oktober 2002 - 14:43 #5
Hmm? Jeg bruger denne linie til at opdatere med, men jeg kan ikke ændre noget i chekbox (som godt nok viser, om der er hakket af eller ej):

Conn.Execute "UPDATE profiles SET email='" & Trim(SQLEncode(Request.Form("email"))) & "', homepage='" & Trim(SQLEncode(Request.Form("homepage"))) & "', description='" & Trim(SQLEncode(Request.Form("description"))) & "', lastseen='" & Now() & "', lastIP='" & SQLEncode(Request.ServerVariables("REMOTE_ADDR")) & "' WHERE username='" & SQLEncode(Session("username")) & "'"

Jeg har prøvet med dette:

showlastseen='" & Trim(SQLEncode(Request.Form("showlastseen"))) & "'

- men det giver en fejlmeddelelse :o(
Avatar billede steen_hansen Forsker
17. oktober 2002 - 14:46 #6
Microsoft JET Database Engine error '80040e07'

Data type mismatch in criteria expression.

edituser.asp, line 26

Linie 26 er denne:

Conn.Execute "UPDATE profiles SET email='" & Trim(SQLEncode(Request.Form("email"))) & "', homepage='" & Trim(SQLEncode(Request.Form("homepage"))) & "', showlastseen='" & Trim(SQLEncode(Request.Form("showlastseen"))) & "', description='" & Trim(SQLEncode(Request.Form("description"))) & "', lastseen='" & Now() & "', lastIP='" & SQLEncode(Request.ServerVariables("REMOTE_ADDR")) & "' WHERE username='" & SQLEncode(Session("username")) & "'"
Avatar billede steen_hansen Forsker
17. oktober 2002 - 14:56 #7
Har du noget bud på denne fejlmeddelelse, Rasmus?
Avatar billede steen_hansen Forsker
17. oktober 2002 - 14:59 #8
Værdien bliver hentet fint nok ud. Jeg prøvede at logge på en profil, hvor der ikke var hakket af i RS("showlastseen"), og på en anden, hvor der VAR hakket af. Der var hak, hvor der skulle være det, og der var ikke hak, hvor der IKKE skulle være det, så det er jo fint nok. Men denne her "Data type mismatch" .... :o/
Avatar billede rasmuslund Nybegynder
17. oktober 2002 - 14:59 #9
Prøv at fjerne  value="<%=Server.HTMLEncode(RS("showlastseen"))%>" fra din checkbox. Det gør at når du submitter den form den er i hvis den så er afkrydset så har den værdien "on" - det kan du jo tjekke på og gemme i databasen.

Lige et spm. til:
SQLEncode er det en funktion/subrutine du benytter?
Avatar billede steen_hansen Forsker
17. oktober 2002 - 15:00 #10
... den må skyldes linie26. Men hvad?
Avatar billede rasmuslund Nybegynder
17. oktober 2002 - 15:02 #11
Prøv evt. at udskrive din SQL sætning inden du fyrer den af - gå så ind i din DB og kør den som en forespørgsel !! se hvad den siger.
Avatar billede steen_hansen Forsker
17. oktober 2002 - 15:02 #12
Så skal jeg fjerne showlastseen='" & Trim(SQLEncode(Request.Form("showlastseen"))) & "' fra linie 26?
Avatar billede rasmuslund Nybegynder
17. oktober 2002 - 15:04 #13
Jeg tror det har noget at gører med at du forsøger at gemme noget som tekst med '' i SQL og det kan ikke lade sig gører, tror det er showlastseen='" & Trim(SQLEncode(Request.Form("showlastseen"))) & "' den er gal med.
Avatar billede rasmuslund Nybegynder
17. oktober 2002 - 15:04 #14
prøv at fjerne ' før og efter værdien
Avatar billede steen_hansen Forsker
17. oktober 2002 - 15:05 #15
Ok, udskrive SQL-sætningen?

SQLEncode:
Function SQLEncode(strSQL)
    SQLEncode = Replace(strSQL,"'","''")
End Function
Avatar billede steen_hansen Forsker
17. oktober 2002 - 15:07 #16
Jeg fjernede ' før og efter, men med det samme resultat
Avatar billede rasmuslund Nybegynder
17. oktober 2002 - 15:08 #17
ja udskriv den så du kan se hvorledes den ser ud.

mySQLStr = "UPDATE profiles SET email='" & Trim(SQLEncode(Request.Form("email"))) & "', homepage='" & Trim(SQLEncode(Request.Form("homepage"))) & "', showlastseen='" & Trim(SQLEncode(Request.Form("showlastseen"))) & "', description='" & Trim(SQLEncode(Request.Form("description"))) & "', lastseen='" & Now() & "', lastIP='" & SQLEncode(Request.ServerVariables("REMOTE_ADDR")) & "' WHERE username='" & SQLEncode(Session("username")) & "'"

Conn.Execute mySQLstr
Avatar billede rasmuslund Nybegynder
17. oktober 2002 - 15:08 #18
okay hvilken DB bruger du??
Avatar billede steen_hansen Forsker
17. oktober 2002 - 15:09 #19
Jeg bruger Access
Avatar billede rasmuslund Nybegynder
17. oktober 2002 - 15:15 #20
Okay udskriv din SQL streng gå ind i access og opret en tom forespørgsel og indsæt den SQL du har udskrevet. Kør nu forespørgslen og se hvor den melder fejl.

mySQLStr = "UPDATE profiles SET email='" & Trim(SQLEncode(Request.Form("email"))) & "', homepage='" & Trim(SQLEncode(Request.Form("homepage"))) & "', showlastseen='" & Trim(SQLEncode(Request.Form("showlastseen"))) & "', description='" & Trim(SQLEncode(Request.Form("description"))) & "', lastseen='" & Now() & "', lastIP='" & SQLEncode(Request.ServerVariables("REMOTE_ADDR")) & "' WHERE username='" & SQLEncode(Session("username")) & "'"
response.write mySQLstr
'Conn.Execute mySQLstr
Avatar billede steen_hansen Forsker
17. oktober 2002 - 15:15 #21
Der skete ikke meget ved at udskrive mySQLStr
Avatar billede steen_hansen Forsker
17. oktober 2002 - 15:16 #22
ok, øjeblik ...
Avatar billede steen_hansen Forsker
17. oktober 2002 - 15:18 #23
Siden ser nøjagtig ud som før, men jeg kan jo så ikke rette i profilen.
Avatar billede steen_hansen Forsker
17. oktober 2002 - 15:19 #24
Ups, hvad skal jeg kalde den tomme forespørgsel?
Avatar billede rasmuslund Nybegynder
17. oktober 2002 - 15:20 #25
har den ikke udskrevet din SQL streng på siden hvor du opdatere??
Avatar billede steen_hansen Forsker
17. oktober 2002 - 15:21 #26
Nej, det har den ikke. Hvad gør jeg galt?
Avatar billede rasmuslund Nybegynder
17. oktober 2002 - 15:24 #27
kalder du en ny side når du skal gemme posten?
Avatar billede rasmuslund Nybegynder
17. oktober 2002 - 15:26 #28
i edituser.asp set en kommentar tegn ' foran der hvor du sender brugeren tilbage til oversigten - sikekrt vha. en response.redirect - kør siden igen nu burde den udskrive SQL strengen
Avatar billede steen_hansen Forsker
17. oktober 2002 - 15:26 #29
Nej, jeg bruger

Response.Redirect "edituser.asp?msg=Din+profil+er+blevet+rettet."

- hvilket er det samme dokument.
Avatar billede steen_hansen Forsker
17. oktober 2002 - 15:27 #30
Ok
Avatar billede steen_hansen Forsker
17. oktober 2002 - 15:29 #31
Så blev den udskrevet. Nu får jeg en fejlmeddelelse, der siger:

Microsoft VBScript runtime error '800a000d'

Type mismatch

edituser.asp, line 106

LINIE 106: <input type="text" name="email" size="<%=Size%>" value="<%=Server.HTMLEncode(RS("email"))%>" class="input"><br>
Avatar billede rasmuslund Nybegynder
17. oktober 2002 - 15:32 #32
ja det er fordi at vi har udkommenteret conn.execute - det betyder ingenting nu - prøv at poste SQL sætningen her
Avatar billede steen_hansen Forsker
17. oktober 2002 - 15:36 #33
Ok, jeg skjuler lige et par ting, men ellers ser den sådan her ud:

UPDATE profiles SET email='MinEmail@adresse.dk', homepage='www.MinHjemmeside.dk/', showlastseen='', description='Dette er en beskrivelse, som brugeren kan sætte på sin profil.', lastseen='10/17/2002 15:29:40', lastIP='xxx.xxx.xxx.xxx' WHERE username='MitProfilNavn'

Og andet står der ikke
Avatar billede rasmuslund Nybegynder
17. oktober 2002 - 15:37 #34
Hvad type af felt i access er showlastseen ?
Avatar billede steen_hansen Forsker
17. oktober 2002 - 15:40 #35
Det er Ja/Nej - Standardværdi = Falsk - Obligatorisk = Nej
Avatar billede rasmuslund Nybegynder
17. oktober 2002 - 15:46 #36
okay så ligger fejlen i af feltet showlastseen forventer en værdi "Falsk" eller "Sand" - du forsøger bare at gemme '' det går ikke.

Prøv dette her:
Input feltet :
<input type="checkbox" name="shwlstseen"<% if RS("showlastseen") = "sand" then %> checked<% end if %>>&nbsp;&nbsp;Jeg ønsker ikke vist hvornår jeg sidst har logget ind

SQL :
<%
if Request.Form("showlastseen") = "on" then
    lastseen = true
else
    lastseen = false
end if
mySQLstr = "UPDATE profiles SET email='" & Trim(SQLEncode(Request.Form("email"))) & "', homepage='" & Trim(SQLEncode(Request.Form("homepage"))) & "', showlastseen=" & lastseen &", description='" & Trim(SQLEncode(Request.Form("description"))) & "', lastseen='" & Now() & "', lastIP='" & SQLEncode(Request.ServerVariables("REMOTE_ADDR")) & "' WHERE username='" & SQLEncode(Session("username")) & "'"
Conn.Execute
%>
Avatar billede steen_hansen Forsker
17. oktober 2002 - 15:51 #37
Så får jeg denne fejl:

Microsoft VBScript runtime error '800a01c2'

Wrong number of arguments or invalid property assignment: 'Execute'

edituser.asp, line 35



LINIE 35: Conn.Execute
Avatar billede rasmuslund Nybegynder
17. oktober 2002 - 15:52 #38
undskyld glemte
Conn.Execute mySQLstr
Avatar billede steen_hansen Forsker
17. oktober 2002 - 15:54 #39
Ok. Så er det denne fejl:

Microsoft JET Database Engine error '80040e14'

Syntax error in UPDATE statement.

edituser.asp, line 35
Avatar billede steen_hansen Forsker
17. oktober 2002 - 15:55 #40
Nej, øjeblik ...

Jeg troede

lastseen = true

skulle være

showlastseen = true
Avatar billede rasmuslund Nybegynder
17. oktober 2002 - 15:59 #41
okay jeg bliver nødt til at gå nu - men den er gal med dit SQL kald - prøv at udskrive det på siden igen og kopiere det ind i Access og kør det som en forespørgsel...

Håber du finder ud af det - ellers kigger jeg senere

Rasmus :-)
Avatar billede steen_hansen Forsker
17. oktober 2002 - 15:59 #42
Jeg kan opdatere uden nogen fejl, men jeg kan ikke sætte hak/fjerne hak
Avatar billede steen_hansen Forsker
17. oktober 2002 - 16:00 #43
Ok. Foreløbigt 1000 tak for hjælpen :o)
Avatar billede steen_hansen Forsker
17. oktober 2002 - 22:27 #44
Jeg har fundet ud af det, jeg poster svaret i morgen. Er det ok?

1000 tak for hjælpen, Rasmus :o)
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