Avatar billede plato Juniormester
07. juni 2006 - 09:25 Der er 17 kommentarer og
1 løsning

ASP loop/Insert problem

Hejsa NG.

Jeg bruger følgende kode til at trække noget ud fra en tabel som skal over i en anden tabel. Problemet er, at når jeg trykker på knappen i formen så sætter koden, hvis der er flere felter, det hele ind i én tabel adskilt med komma. Jeg vil gerne at formen som bliver loop'et også bliver sat ind i nye felter hver for sig.

Nogen der kan hjælpe?:
<%
strSQL = "SELECT * FROM commentsnyhed WHERE nyhedid LIKE '" & Request.QueryString("id") & "'"
Set rsNews = objConn.Execute(strSQL)

Set conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.Mappath("../db/data.mdb")
if Request("emne") <> "" AND Request("indhold") <> "" AND Request("forfatter") <> "" AND Request("forumid") <> "" AND Request("forumtopic") <> "" AND Request("dato") <> "" AND Request("avatar") <> "" AND Request("replyid") <> "" AND Request("newxcommentid") <> "" then
                       

emne = Request.Form("emne")
indhold = Request.Form("indhold")
forfatter = Request.Form("forfatter")
forumid = Request.Form("forumid")
forumtopic = Request.Form("forumtopic")
dato = Request.Form("dato")
avatar = Request.Form("avatar")
replyid = Request.Form("replyid")
newxcommentid = Request.Form("newxcommentid")

Set rs = Server.CreateObject("ADODB.Recordset")
sql = "select * from forumindlaeg"
rs.open sql, conn, 1, 3

rs.addnew
rs("emne") = emne
rs("indhold") = indhold
rs("forfatter") = forfatter
rs("forumid") = forumid
rs("forumtopic") = forumtopic
rs("dato") = dato
rs("avatar") = avatar
rs("replyid") = replyid
rs("newxcommentid") = newxcommentid

rs.update

rs.close
set rs = Nothing
Response.Write("Done!")
end if
Do While not rsNews.EOF%>
<form method="post" action="">
<input type="hidden" name="emne" value="&nbsp;"><br>
<input type="hidden" name="forumid" value="&nbsp;"><br>
<input type="hidden" name="forumtopic" value="&nbsp;"><br>
<textarea name="indhold" cols="40" rows="6" ><%=rsNews("comments")%></textarea><br><br>
<input class="forms" size="40" type="text" name="forfatter" value="<%=rsNews("navn")%>"><br><br>
<input class="forms" size="40" type="text" name="dato" value="<%=rsNews("date")%>"><br><br>
<input class="forms" size="40" type="text" name="avatar" value="_blank"><br><br>
<input class="forms" size="40" type="text" name="replyid" value=""><br><br>
<input class="forms" size="40" type="text" name="newxcommentid" value="<%=rsNews("nyhedid")%>"><br><br>

<%
rsNews.movenext
loop
%>
<input class="formsknap" type="submit" value="Tilføj Alle">
</form>
Avatar billede ellebaek Nybegynder
07. juni 2006 - 10:58 #1
mon ikke hvis du skifter ud indtil rs.close med følgende...

strSQL = "SELECT * FROM commentsnyhed WHERE nyhedid LIKE '" & Request.QueryString("id") & "'"
Set rsNews = objConn.Execute(strSQL)

Set conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.Mappath("../db/data.mdb")
if Request("emne") <> "" AND Request("indhold") <> "" AND Request("forfatter") <> "" AND Request("forumid") <> "" AND Request("forumtopic") <> "" AND Request("dato") <> "" AND Request("avatar") <> "" AND Request("replyid") <> "" AND Request("newxcommentid") <> "" then
                     

emne = split(Request.Form("emne"), ", ")
indhold = split(Request.Form("indhold"), ", ")
forfatter = split(Request.Form("forfatter"), ", ")
forumid = split(Request.Form("forumid"), ", ")
forumtopic = split(Request.Form("forumtopic"), ", ")
dato = split(Request.Form("dato"), ", ")
avatar = split(Request.Form("avatar"), ", ")
replyid = split(Request.Form("replyid"), ", ")
newxcommentid = split(Request.Form("newxcommentid"), ", ")

Set rs = Server.CreateObject("ADODB.Recordset")
sql = "select * from forumindlaeg"
rs.open sql, conn, 1, 3
i = 0
while i < UBound(dato)
rs.addnew
rs("emne") = emne(i)
rs("indhold") = indhold(i)
rs("forfatter") = forfatter(i)
rs("forumid") = forumid(i)
rs("forumtopic") = forumtopic(i)
rs("dato") = dato(i)
rs("avatar") = avatar(i)
rs("replyid") = replyid(i)
rs("newxcommentid") = newxcommentid(i)

rs.update
i = i+1
wend

Hmm, men det her virker nok kun hvis det ikke er nogen kommaer i dine indlæg (ser det som noget forum kode?)
Avatar billede plato Juniormester
07. juni 2006 - 11:00 #2
Ja, det er forumkode.. Så teksten kan sagtens indeholde komma'r?

Grunden til min kode er at jeg gerne vil have samlet alle kommentarer jeg nu har på siden, til et stort forum. Men det tager sgu lang tid hvis jeg selv skal indsætte alle sammen.
Avatar billede plato Juniormester
07. juni 2006 - 11:04 #3
Koden virker næsten. Men hvis der er mere end ét felt der skal sættes ind, sætter den kun den første ind.?
Avatar billede softspot Forsker
07. juni 2006 - 11:07 #4
Du skal nok også flytte dit start form-tag ud af løkken (der hvor du genererer formularen)... ellers får du (potentielt) mange forms som ikke bliver lukket.
Avatar billede plato Juniormester
07. juni 2006 - 11:08 #5
Det har jeg lige gjort. Den tilføjer stadig kun et formfelt selvom der er flere.
Avatar billede softspot Forsker
07. juni 2006 - 11:08 #6
...altså hernede:

%>
<form method="post" action="">
<%
  Do While not rsNews.EOF
%>
  <input type="hidden" name="emne" value="&nbsp;"><br>
  <input type="hidden" name="forumid" value="&nbsp;"><br>
  <input type="hidden" name="forumtopic" value="&nbsp;"><br>
  <textarea name="indhold" cols="40" rows="6" ><%=rsNews("comments")%></textarea><br><br>
  <input class="forms" size="40" type="text" name="forfatter" value="<%=rsNews("navn")%>"><br><br>
  <input class="forms" size="40" type="text" name="dato" value="<%=rsNews("date")%>"><br><br>
  <input class="forms" size="40" type="text" name="avatar" value="_blank"><br><br>
  <input class="forms" size="40" type="text" name="replyid" value=""><br><br>
  <input class="forms" size="40" type="text" name="newxcommentid" value="<%=rsNews("nyhedid")%>"><br><br>

<%
    rsNews.movenext
  loop
%>
  <input class="formsknap" type="submit" value="Tilføj Alle">
</form>
Avatar billede softspot Forsker
07. juni 2006 - 11:09 #7
ok :)
Avatar billede plato Juniormester
07. juni 2006 - 11:17 #8
Jepsen. Den tilføjer stadig kun én post. Den skulle helst tage dem alle.
Avatar billede ellebaek Nybegynder
07. juni 2006 - 11:17 #9
hmm...

Tror jeg laver en lille omrokering...

prøv det her:

<%
strSQL = "SELECT * FROM commentsnyhed WHERE nyhedid LIKE '" & Request.QueryString("id") & "'"
Set rsNews = objConn.Execute(strSQL)
strSQL2 = "select count(*) As found from commentsnyhed WHERE nyhedid LIKE '"&Request.QueryString("id")&"'"
set rsAntal = objCOnn.execute(strSQL2)

Set conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.Mappath("../db/data.mdb")
if Request("emne") <> "" AND Request("indhold") <> "" AND Request("forfatter") <> "" AND Request("forumid") <> "" AND Request("forumtopic") <> "" AND Request("dato") <> "" AND Request("avatar") <> "" AND Request("replyid") <> "" AND Request("newxcommentid") <> "" then

Set rs = Server.CreateObject("ADODB.Recordset")
sql = "select * from forumindlaeg"
rs.open sql, conn, 1, 3

for i = 0 to (rsAntal("found") -1)
emne = Request.Form("emne" & i)
indhold = Request.Form("indhold" & i)
forfatter = Request.Form("forfatter" & i)
forumid = Request.Form("forumid" & i)
forumtopic = Request.Form("forumtopic" & i)
dato = Request.Form("dato" & i)
avatar = Request.Form("avatar" & i)
replyid = Request.Form("replyid" & i)
newxcommentid = Request.Form("newxcommentid" & i)

rs.addnew
rs("emne") = emne
rs("indhold") = indhold
rs("forfatter") = forfatter
rs("forumid") = forumid
rs("forumtopic") = forumtopic
rs("dato") = dato
rs("avatar") = avatar
rs("replyid") = replyid
rs("newxcommentid") = newxcommentid

rs.update
next
rs.close
set rs = Nothing
Response.Write("Done!")
end if
i = 0
response.write "<form method=""post"" action="""">"
Do While not rsNews.EOF

response.write "<input type=""hidden"" name=""emne" & i & """ value=""&nbsp;""><br><input type=""hidden"" name=""forumid" & i & """ value=""&nbsp;""><br><input type=""hidden"" name=""forumtopic" & i & """ value=""&nbsp;""><br><textarea name=""indhold" & i & """ cols="40" rows=""6"" >" & rsNews("comments") & "</textarea><br><br><input class=""forms"" size=""40"" type=""text"" name=""forfatter" & i & """ value=""" & rsNews("navn") & """><br><br><input class=""forms"" size=""40"" type=""text"" name=""dato" & i & """ value=""" & rsNews("date") & """><br><br><input class=""forms"" size=""40"" type=""text"" name=""avatar" & i & """ value=""_blank""><br><br><input class=""forms"" size=""40"" type=""text"" name=""replyid" & i & """ value=""><br><br><input class=""forms"" size=""40"" type=""text"" name=""newxcommentid" & i & """ value=""" & rsNews("nyhedid") & """><br><br>"

<%
rsNews.movenext
loop
%>
<input class="formsknap" type="submit" value="Tilføj Alle">
</form>

tror noget i den stil kan klare det.... men kan ikke rigtig hverken teste, eller se om der er fejl i ", men dem kan du selv rette...
Avatar billede softspot Forsker
07. juni 2006 - 11:19 #10
Jeg tror du skal ændre strategien lidt. Du skal nok have et indeks på de enkelte felter, så du kan adskille dem fra hinanden. Dette indeks kan du så aflæse felterne med (kombinationen af feltnavnet og indekset bliver til et entydigt felt i formularen). Noget i stil med dette:

<%
strSQL = "SELECT * FROM commentsnyhed WHERE nyhedid LIKE '" & Request.QueryString("id") & "'"
Set rsNews = objConn.Execute(strSQL)

Set conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.Mappath("../db/data.mdb")
                       
Set rs = Server.CreateObject("ADODB.Recordset")
sql = "select * from forumindlaeg"
rs.open sql, conn, 1, 3

continueSaving = true
i = 0
while continueSaving

if Request("emne" & i) <> "" _
  AND Request("indhold" & i) <> "" _
  AND Request("forfatter" & i) <> "" _
  AND Request("forumid" & i) <> "" _
  AND Request("forumtopic" & i) <> "" _
  AND Request("dato" & i) <> "" _
  AND Request("avatar" & i) <> "" _
  AND Request("replyid" & i) <> "" _
  AND Request("newxcommentid" & i) <> "" then

emne = Request.Form("emne" & i)
indhold = Request.Form("indhold" & i)
forfatter = Request.Form("forfatter" & i)
forumid = Request.Form("forumid" & i)
forumtopic = Request.Form("forumtopic" & i)
dato = Request.Form("dato" & i)
avatar = Request.Form("avatar" & i)
replyid = Request.Form("replyid" & i)
newxcommentid = Request.Form("newxcommentid" & i)


rs.addnew
rs("emne") = emne
rs("indhold") = indhold
rs("forfatter") = forfatter
rs("forumid") = forumid
rs("forumtopic") = forumtopic
rs("dato") = dato
rs("avatar") = avatar
rs("replyid") = replyid
rs("newxcommentid") = newxcommentid

rs.update
rs.update
i = i+1
else
  continueSaving = false
end if
wend
rs.close
set rs = Nothing
Response.Write("Done!")
%>
<form method="post" action="">
<%
idx = 0
Do While not rsNews.EOF
%>
<input type="hidden" name="emne<%=idx%>" value="&nbsp;"><br>
<input type="hidden" name="forumid<%=idx%>" value="&nbsp;"><br>
<input type="hidden" name="forumtopic<%=idx%>" value="&nbsp;"><br>
<textarea name="indhold<%=idx%>" cols="40" rows="6" ><%=rsNews("comments")%></textarea><br><br>
<input class="forms" size="40" type="text" name="forfatter<%=idx%>" value="<%=rsNews("navn")%>"><br><br>
<input class="forms" size="40" type="text" name="dato<%=idx%>" value="<%=rsNews("date")%>"><br><br>
<input class="forms" size="40" type="text" name="avatar<%=idx%>" value="_blank"><br><br>
<input class="forms" size="40" type="text" name="replyid<%=idx%>" value=""><br><br>
<input class="forms" size="40" type="text" name="newxcommentid<%=idx%>" value="<%=rsNews("nyhedid")%>"><br><br>

<%
  idx = idx + 1
  rsNews.movenext
loop
%>
<input class="formsknap" type="submit" value="Tilføj Alle">
</form>
Avatar billede softspot Forsker
07. juni 2006 - 11:20 #11
OK, rart at se vi er enige ellebaek :D
Avatar billede plato Juniormester
07. juni 2006 - 11:24 #12
Det er eddermame fedt! Det virker. Dog eneste lille detalje er, at den skriver "Done!" uanset hvad, men det er ligemeget. :)

Nu virker begge to...Skal jeg dele?
Avatar billede softspot Forsker
07. juni 2006 - 11:30 #13
ellebaek var jo hurtigst, så point går vel til den side... :)
Avatar billede ellebaek Nybegynder
07. juni 2006 - 11:33 #14
Super :-)

Du er sikker på du hopper over soft...?
Avatar billede softspot Forsker
07. juni 2006 - 11:38 #15
Ja, tag du bare point her, så kan jeg jo øve mig på at skrive (og tænke) lidt hurtigere imens :)
Avatar billede plato Juniormester
07. juni 2006 - 11:49 #16
Jeg siger mange tak!
Avatar billede softspot Forsker
07. juni 2006 - 11:53 #17
Velbekomme... :)
Avatar billede ellebaek Nybegynder
07. juni 2006 - 11:54 #18
any time :-)
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