Varför inte lägga det tigidare värdet i textrutan som value ? från start då. Visa lite kod och ditt inlägg vad inte långt ;) välkommen till wf föresten
------------------
Real mad hiphop flavaz kickin' it right from tha street without no FEAR, Yo !
17 svar · 183 visningar · startad av nill
Försöker göra detta:
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 ?
oj, det blev långt.. hoppas nån orkar läsa det :)
Varför inte lägga det tigidare värdet i textrutan som value ? från start då. Visa lite kod och ditt inlägg vad inte långt ;) välkommen till wf föresten
------------------
Real mad hiphop flavaz kickin' it right from tha street without no FEAR, Yo !
Jo men det är precis det jag vill göra. Men det blir ju RecSet i RecSet :(
Nuvarande kod (där jag inte fått till value som ska egentligen ska hämta gamla svaren)
<FORM METHOD="post" NAME="formen" onSubmit="return ValidateSite()" ACTION="normal.asp?what=edited">
\<%
Fragor = "SELECT \* FROM fragor ORDER BY ID "
RecSet.Open Fragor, Connect, adOpenStatic, adLockOptimistic
Do Until RecSet.EOF
%\>
\<B\>\<%=RecSet("fraga")%\>\</B\>\<BR\>
\<input type="text" SIZE="30" MAXLENGTH="30" VALUE="" name="\<%=RecSet("ID")%\>" CLASS="input"\>\<P\>
\<%
RecSet.MoveNext
Loop
RecSet.Close
%\>
\<P\>
\<input type="submit" value="OK" CLASS="input" STYLE="font-weight: 900;"\>\<P\>
\<input type="reset" value="Återställ" CLASS="input" STYLE="font-weight: 900;"\>
\</FORM\>
Tack förresten :)
Du kan väl hämta svaret i samma
sql-fråga.
<%
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.)
------------------
essentitia preter non sans multiplicandum
Nu ligger tyvärr join-grejs utöver min kunskap :( Finns det någon bra guide till det ? (typ webstudio)
Det jag vill göra är:
har en tabell (fragor)
men måset i samma sql-sats ha med kolunnen 'svar' från taballen 'info'
och det ska bara vara svaren där Session("userid") är userid i tabellen info samt där ID i tabellen fragor är = fragID i tabellen info
frågorna loopas alltså ut och då måste de kopplas ihop med rätt svar samt rätt användare :/
jobbigt värre...
<%
Fragor = "SELECT * " & _
" FROM fragor Inner join info " & _
" on fragor.id = info.fragid " & _
" where info.userid = " & session("userid") & _
" ORDER BY fragor.ID "
RecSet.Open Fragor, Connect, adOpenStatic, adLockOptimistic
info om sql:
http://www.w3schools.com/sql/
------------------
essentitia preter non sans multiplicandum
tack så jättemycket.. ursäkta att jag är lite jobbig men, det fungerade inte riktigt.
Så här är koden nu:
<FORM METHOD="post" NAME="formen" onSubmit="return ValidateSite()" ACTION="normal.asp?what=edited">
\<%
Fragor = "SELECT \* " & " FROM fragor Inner join info " & " on fragor.id = info.fragid " & " where info.userid = " & session("userid") & " ORDER BY fragor.ID "
RecSet.Open Fragor, Connect, adOpenStatic, adLockOptimistic
Do Until RecSet.EOF
%\>
\<B\>\<%=RecSet("fraga")%\>\</B\>\<BR\>
\<input type="text" SIZE="30" MAXLENGTH="30" VALUE="\<%=RecSet("svar")%\>" name="\<%=RecSet("ID")%\>" CLASS="input"\>\<P\>
\<%
RecSet.MoveNext
Loop
RecSet.Close
%\>
\<P\>
\<input type="submit" value="OK" CLASS="input" STYLE="font-weight: 900;"\>\<P\>
\<input type="reset" value="Återställ" CLASS="input" STYLE="font-weight: 900;"\>
\</FORM\>
Det som hände var att att Loopen gjordes en gång.. alltså endast en inputbox loopades fram. förstår inte riktigt varför.
Då verkar det som om du bara får 1 post.
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.
------------------
essentitia preter non sans multiplicandum
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.
var det ingen som kunde det eller glömde ni bort det ? :)
Verkar vara lite begränsningar i Access
Ett (något) krångligare alternativ.
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") & ")"
------------------
essentitia preter non sans multiplicandum
Tack så mycket men hmm igen..
Nu loopades alla inputboxar och frågor ut men svaren (value i inputboxarna) kom inte ut ...
samt att ifall alla svar är ifyllda så loopas ingen fråga, inputbox eller svar ut..
endast de frågor vars svar som är tomma loopas alltså ut.
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") & ")"
Lite cut och paste problem, ursäkta.
------------------
essentitia preter non sans multiplicandum
Åhhy... my saviour. Det fungerade.. är dig evigt tacksam :)
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å.
Döp alla textfält till samma namn. Lägg till ett hidden fält som innehåller id för frågan
Do Until RecSet.EOF
%>
<B><%=RecSet("fraga")%></B><BR>
<input type="text" SIZE="30" MAXLENGTH="30" VALUE="<%=RecSet("svar")%>" name="svar" CLASS="input"><P>
<input type="hidden" name="id" value="<% =recset("id")%>">
<%
RecSet.MoveNext
Loop
RecSet.Close
%>
<P>
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
------------------
essentitia preter non sans multiplicandum
tackar så jättemycket. nu ska jag nog inte vara jobbig på ett tag.