Forum Moderators: open
How do you display a list of checkboxes from a database, for 1 user, showing checked for those that the user selected and unchecked for all other available widgets.
Tables
widgets(ID,Name)
Selections(UserID,WidgetID)
Users(ID)
Something like this?
SELECT widgets.Name,widgets.ID,iif(Selections.WidgetID is NULL,""," selected ")
FROM?
WHERE Users.UserID=193
while (!rs.eof){
<%=rs(0) + "<input type=checkbox name=" + rs(1) + " " + rs(2) + "><BR>"%>
rs.movenext
}
I must have tried every combination of left, right, inner, outer join...Maybe theres a much easier way to get the same html output, Anyone know how to do this?
Because I couldnt figure out how to get the recordset returned with nulls.
Bit of a mission, but I have sorted it now with two recordsets and a find.
time for a break :)
strSQL="SELECT ID, Name FROM Widgets ORDER BY Name ASC"
strSQL2="SELECT WidgetID FROM Selections WHERE UserID=" & varID
set objRS=objConn.Execute(strSQL)
set objRS2=server.CreateObject("ADODB.Recordset")
objRS2.CursorLocation= 3
objRS2.Open strSQL2,objConn, 1, 3
while not objRS.eof
Response.write "<input type=checkbox name='" & objRS(0) & "'"
objRS2.Find "WidgetID=" & objRS(0),,1,1 ' search foward from 1
if not objRS2.EOF then
Response.Write " checked "
end if
Response.Write ">" & objRS(1) & "<BR>"
objRS.MoveNext
wend
Now this worked very well for a while, but with larger and larger recordsets it's becoming slower, so I will also try the "find" method.
I had to add a movefirst call, I dont know why it needs it as the find call specifies from 1.
objRS2.MoveFirst
objRS2.Find "WidgetID=" & objRS(0),,1,1
Its only an adminpage so wont get huge traffic and the options will stay at about 50, so this will do me for now. But I still think theres a way to return a single recordset with the IDs and true/false, some kinda wierd outer join......