Avatar billede mskjoldp Novice
26. januar 2002 - 19:56 Der er 16 kommentarer og
1 løsning

Checkbox til visning af indhold i database. samt ændring af checkbox value

Men det failer 2 steder...
1. sted
Koderne er:
<--- bla bla forbindelse  = OK
<%While not objRec.EOF%>...
.....<td width="20%"><% = "<a href=""retsb.asp?id=" & objRec("OrderID") & """>" & objRec("onoff")%>
</td>
<---- hvor retsb.asp er denne fil. OrderID = autonr. og onoff er den tabel i databasen der et true/false felt.
Det ovenstående giver et output på skærmen med henholdvis true og false i tekstform(jeg har sat dem direkte i databasen).
Så har jeg prøvet at få det vist via en checkbox, enten hvor der er "hak" i eller ej:
<--- ...forsat...<td width="20%"><% if objRec("onoff") = true Then
Response.write "<input type='checkbox' value='true'>"
else
Response.write "<input type='checkbox' value='false'>"
end if%>
...bla bla bla...--->
Men det virker ikke. Der er ingen af dem(6 records) der har et hak i checkbox'en, og jeg har sat 4 af dem til true i databasen.
Men de 4 vises i tekstform til true og de 2 sidste til false(øverste eks.) som det er i databasen...  mystisk?!.

2. sted
Her kan jeg ikke få skrevet ændringerne til databasen, om der er sat "hak" i en checkbox eller ej.
Koderne er:
<--- forsat forbindelse fra ovenstående valg(OrderID) vis alt(*) = OK
...bla....
Response.Write "<FORM ACTION=""" & "retnusb.asp" & """>"
while Not objRec.EOF
Response.Write "<TR><TD>checkbox:</TD><TD><INPUT TYPE=checkbox VALUE=""" & objRec("onoff") & """ NAME=onoff><br>"
<---- hvor retnusb.asp er den fil ændringerne sendes til. Outputtet viser bare at der ikke er sat et "hak" i checkbox'en, selvom jeg har valgt en record der er sat til true?!

Ved tryk på en submit knap sendes formularen til ressbnu.asp, hvor koderne er til at skrive update recordsettet, det virker også bortset fra checkboxen, hmmm..

Jeg gør et eller andet forkert her. Jeg syntes jeg har prøvet at ændre true til 1 og false til 0 samt ændret if true til if "true"..... når derfor til EKSPERTEN  ...igen ...  denne
smøre er vist lidt lang, men forhåbenlig præsist beskrevet??

Skal jeg gribe sagen anderledes an??


VH Skjold
Avatar billede goose Nybegynder
26. januar 2002 - 20:43 #1
Jeg plejer at gøre følgende. Felter i min database som refererer til checkbokse, har jeg sat til tekstfelter med standarden "checked".
Når jeg så laver udtrækket, så gør jeg følgende:

<INPUT TYPE="checkbox" VALUE="checked" NAME="vis" <%=rs("checkboks1")%>>

Dette betyder, at hvis den er sat til "checked" i databasen, så er den også checket af i udtrækket, og hvis den er blank i databasen, ja så er den ikke checket af.
På samme måde gør du så når du gemmer i databasen, hvis dit formfelt er sat til "checked", ja så sættes den til checked i databasen.
Du skal blot huske på, at den pågældende række i din database skal tillade nullængde.

/Goose
Avatar billede goose Nybegynder
26. januar 2002 - 20:45 #2
ups, skulle have været:

<INPUT TYPE="checkbox" VALUE="checked" NAME="checkboks1" <%=rs("checkboks1")%>>

/Goose
Avatar billede coltau Juniormester
26. januar 2002 - 23:14 #3
<--- ...forsat...<td width="20%"><% if objRec("onoff") = true Then
Response.write "<input type='checkbox' checked value='ligegyldig'>"
else
Response.write "<input type='checkbox' value='ligegyldig'>"
end if%>
...bla bla bla...--->
I html er værdien i en checkbox ligegyldig. Til visning er det parametren checked der angvier om den er sat eller ej.

Når du skal gemme checkbox i databsen:
if Request.Form("checkbox1") <> "" then
  RS("checkbox1") = true
else
  RS("checkbox1") = false
end if
Avatar billede mskjoldp Novice
27. januar 2002 - 02:12 #4
skal lige se på det ...
Avatar billede mskjoldp Novice
27. januar 2002 - 02:49 #5
coltau det virker... med at få vist om de er tjekket af.... FEDT TAAAK... men det failer stadigvæk i update stringen...
jeg har lavet :
<-- bla bla bla...
if Request.QueryString("onoff") <> "" then 'Form eller QueryString ingen forskel
objrec("onoff") = true
else
objrec("onoff") = false
end if
<--- bla bla bla..
Set objRec = Server.CreateObject ("ADODB.Recordset")
objRec.Open "UPDATE BG1 set onoff='" & onoff & "', link='" & link & "' ...bla bla bla... where OrderID=" & hvilken, Session("DB")
<--- Den fejl jeg  får er:
Error Type:
Microsoft VBScript runtime (0x800A000D)
Type mismatch
<--- Det gør ingen forskel om jeg har den tjekket af eller ej, fejlen er bare to liner op eller nede....  hmmm...

Jeg prøver lige med.
Request.QueryString("onoff") istedet for objrec("onoff")

vh skjold
Avatar billede mskjoldp Novice
27. januar 2002 - 02:57 #6
Det her virker indtil update stringen:

onoff = Request.QueryString("onoff")

if Request.QueryString("onoff") <> "" then
onoff = true
else
onoff = false
end if

men så er det her det failer:
Set objRec = Server.CreateObject ("ADODB.Recordset")
objRec.Open "UPDATE BG1 set onoff='" & onoff & "', link='" & link & "' ...bla bla bla... where OrderID=" & hvilken, Session("DB")
<-- den fejl jeg får er:
Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)
[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.
<----hmm..... ja jeg er blank over for dette.
Jeg ville mene det skulle virke, men jeg overser noget.
hvad er det der mismatch'er?????

vh skjold
Please help....  ynik ynik....
Avatar billede mskjoldp Novice
28. januar 2002 - 17:22 #7
lave onoff feltet om til et tekstfelt......
Avatar billede mskjoldp Novice
28. januar 2002 - 21:52 #8
det virker nu. Har lavet onoff om til tekstfelt istedet for checkbox.
Tal for hjælpen =:)

Og så fandt jeg ud af, at jeg mangler at kunne updatere flere "checkbox/tekstfelt" på samme til og til forskellige tabeller.
Skal jeg oprette et nyt spg. for det??
Hvis jeg ikke har fået svar inden 2 dage oprettes et nyt spg.

VH Skjold
Og igen tak for hjælpen....... :)
Avatar billede coltau Juniormester
28. januar 2002 - 22:17 #9
Jeg har først set problemet nu. Desværre. :'

Med hensyn til dit nye problem så er jeg ikke sikker på at jeg forstår - men skal du anvende flere forskellige checkboxe i samme form kan de adskilles/genkendes med name eller value.

Response.write "<input type='checkbox' name='C1' value='C1'><br>"
Response.write "<input type='checkbox' name='C2' value='C2'><br>"

og kan dermed genkendes i asp-koden.
Avatar billede mskjoldp Novice
29. januar 2002 - 17:27 #10
hmmm...
Forklaring:

Jeg prøver at lave en side(til admins), hvor der bliver vist fornavn, efternavn og tlfnr og så tjekboxen. Tjekboxen's funktion er så, at hvis checkbox = True skal de vises på en anden side(ses af brugerne). OK, jeg kan få vist siden, men hvordan gemmer jeg ændringerne(True/False) af, måske 20 poster fra datbasen, i et submit-klik(form)?

Det siden skal, er jo at sørge for at admins kan ændre, om medlemmer skal kunne ses udaftil(ses af brugere), via disse checkboxe. Admins skal bare kunne "hakke" af om medlemmer skal vises og trykke opdater.

Hvordan gøres dette???
Jeg ved ikke hvordan man skriver/UPDATE til flere poster i en database på én gang.
Jeg har en database, hvori der er én kolonne til disse True/False (tekstfelt) værdier.

hm....  er det forklaret så det kan forståes???
<----
Response.write "<input type='checkbox' name='C1' value='C1'><br>"
Response.write "<input type='checkbox' name='C2' value='C2'><br>"
<----
Kan disse sætninger skelne mellem til hvilke poster den enkelte checkbox tilhører i databasen??? nej vel....??

Jeg skal vel have noget med autonummer med i UPDATE-sætningen pr. post..... hvordan??
Jeg har trukket autonr("OrderID") ud af databasen så det er "bare" at genbruge det, til UPDATE-sætningen......
Skal jeg lave en UPDATE-sætning pr. post jeg vil UPDATE...???

vh Skjold  =:D

PS håber det er til at forstå!
Avatar billede coltau Juniormester
29. januar 2002 - 22:17 #11
Det kan lade sig gøre og du skal lave en sql-sætning for hver sletning - men fortvivl ikke - det kan gøres sådan:

Dine checkboxe skal laves sådan:
Response.Write("<input type='checkbox' name='delit" & RS("OrderID") & "'>")
Dermed bliver name for checkboxene forskellige: (delit1, delit2, delit3 osv.)
Når der så skal slettes kan du anvende denne sub:

sub DeleteAllChecked
  ' *** Gennemkør felter ***
  For Each key in Request.Form
    strKey = LCase(Mid(key, 1, 5))
    strOrderID = Right(key, Len(key) - 5)
    ' *** Feltet skal være et "delit"-checkbox/OrderID skal være <> 0
    If (strKey = "delit") and (strOrderID <> "") then
      ' *** Slet denne OrderID ***
      Conn.Execute("DELETE FROM tabel WHERE ID = " & strOrderID)
    End if
  Next
end sub

Den må gi' point hva'
Avatar billede mskjoldp Novice
29. januar 2002 - 22:19 #12
øhhh prøver lige...... vent... !!!! :D
Avatar billede mskjoldp Novice
04. februar 2002 - 00:36 #13
prøver stadigvæk ....
Avatar billede mskjoldp Novice
04. februar 2002 - 00:45 #14
Til at starte med så går jeg ud fra at jeg kan ændre DELETE med UPDATE! ik?
Avatar billede mskjoldp Novice
04. februar 2002 - 01:15 #15
jeg er lost....
Avatar billede coltau Juniormester
04. februar 2002 - 20:35 #16
Selvfølgelig skal delete-sætningen ændres til en korrekt update-sætning og det skal kunne lade sig gøre.
Avatar billede mskjoldp Novice
04. februar 2002 - 22:06 #17
jeg prøver stadigvæk, og vil gerne prøve selv noget tid endnu :)
Det er jo udfordring... hehe og det kan jeg lide... og når jeg går helt i stå    ja så    www.eksperten.dk  FEDT :D
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