Användarna ska ha möjligheten att svar på en del frågor, vilka lagras i tabellen 'fragor'.
Svaren lagras sen i tabellen 'info'. Varför jag vill ha det så här är för att jag vill senare på ett enkelt sätt kunna lägga till fler frågor.
Problemet är nu när jag loopar fram alla frågorna med alla textinputs så vill jag även att om man redigerar sin info att de gamla svaren ska synas. Men det går ju inte så bra eftersom det är i loopen då frågorna loopas upp och svaren ligger inte samma tabell = RecSet i RecSet vilket inte fungerar vad jag vet...
något förslag på hur jag ska lösa detta ?
<%
Fragor = "SELECT * FROM fragor Inner join info on fragor.id = info.id ORDER BY fragor.ID "
RecSet.Open Fragor, Connect, adOpenStatic, adLockOptimistic
och sedan lägga in svaret i fältet.
(Nu vet jag inte hur dina tabeller är relaterade så att du får kanske ändra på join-villkoret.)
Kan det vara så att användaren bara har svar på en fråga eller vet du att det finns poster för alla frågor i infotabellen? I så fall får du skriva frågan som en outer join
Fragor = "SELECT * " & " FROM fragor left outer join info " & " on fragor.id = info.fragid and info.userid = " & session("userid") & " ORDER BY fragor.ID "
Kan du testa ut sql-frågan separat?
Fragor = "SELECT * " & " FROM fragor Inner join info " & " on fragor.id = info.fragid " & " where info.userid = " & session("userid") & " ORDER BY fragor.ID "
response.write fragor
så kan du klippa ut sql-satsen och köra den i något verktyg.
användaren har bara svar på en fråga i info-tabellen. Han ska ju kunna redigera sin info även om han inte fyllt i allting innan, sorry
Provade då din outerjoin-kod och fick det här meddelandet:
Feltyp:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][Drivrutin för ODBC Microsoft Access] Kopplingsuttrycket stöds inte.
sql = _
"select f.id,f.fraga,i.svar " &_
" from fragor as f inner join " &_
" info as i on f.id = i.fragid " & _
" where i.userid = 1 " & _
" union " & _
" select f.id,f.fraga,' ' " & _
" from fragor as f " & _
" where id not in " & _
" (select fragid from info " & _
" where userid = " & session("userid") & ")"
sql = _
"select f.id,f.fraga,i.svar " &_
" from fragor as f inner join " &_
" info as i on f.id = i.fragid " & _
" where i.userid = [b]" & session("userid") [/b]& _
" union " & _
" select f.id,f.fraga,' ' " & _
" from fragor as f " & _
" where id not in " & _
" (select fragid from info " & _
" where userid = " & session("userid") & ")"
haha.. skulle vara dig evigt tacksam gånger två om jag fick lite hälp med koden som tar emot informationen.
Vill jag alltså göra med Request.Form men det blir ju lite jobbigt eftersom jag inte har ett bestämt antal "inputboxar"/frågor. Samt är det ju inte säkert att det ska göras en ny post(RecSet.AddNew) utan den kanske bara ska ersättas...
skulle verkligen uppskattas om jag fick lite hjälp med detta också.
På sidan som tar emot formuläret så kan du göra så här
set connect = server.createobject("adodb.connection")
connect.open "dsn"
for i = 1 to request.form("id").count
sql = "update info set svar = '" & replace(request.form("svar")(i),"'","''") & "'" _
& " where userid = " & session("userid") _
& " and fragid = " & request.form("id")(i)
connect.execute sql,rows,128
if rows = 0 then 'fanns ej sedan tidigare, gör insert
sql = "insert into info values(userid,fragid,svar) values " _
& "(" & session("userid") & "," & request.form("id")(i) & ",'" _
replace(request.form("svar")(i),"'","''") & "')"
connect.execute sql,,128
end if
next
connect.close