03. september 2002 - 21:34
Der er
22 kommentarer og 1 løsning
Tilføj post i DB
Jeg ved stort set intet om ASP, men ligger alligevel og roder lidt med en gæstebog. Jeg har følgende kode: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <link href="logInd.css" rel="stylesheet" type="text/css"> <TITLE>Teen-Club.dk | Gæstebog</TITLE> </HEAD> <BODY bgcolor="#FFE9BB" scroll=yes> <% Response.Buffer = True Set Con = Server.CreateObject("ADODB.Connection") Con.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.mappath("db.mdb") strSQL = "Select * From bruger Where brugernavn = '" & Request.Querystring("brugernavn") & "' " Set rs = Con.Execute(strSQL) %> <div class="brugerHead"><%=rs("brugernavn")%></div> <div style="margin-top:0px;width:100%;"> <span class="brugerOption"><a href="profil.asp?brugernavn=<%=rs("brugernavn")%>">Profil</a></span> <span class="brugerOption"><a href="gaestebog.asp">Gæstebog</a></span> <span class="brugerOption"><a href="billeder.asp">Billeder</a></span> <span class="brugerOption"><a href="venner.asp">Venner</a></span></div> <div style="margin-left:30px;margin-right:30px;"> <br><br><span class="head">Gæstebog</span><br><br><br> <% rs.close %> <% strSQL = "Select * From gaestebog Where modtager = '" & Request.Querystring("brugernavn") & "' order by dato desc " Set rs = Con.Execute(strSQL) %> <% if Request("besked") <> "" then gModtager = rs("brugernavn") gBesked = Server.HTMLEncode(Request.Form("besked")) Set rs = Server.CreateObject("ADODB.Recordset") sql = "select * from gaestebog" rs.open sql, conn, 1, 3 rs.addnew rs("modtager") = gModtager rs("afsender") = Session("brugernavn") rs("besked") = gBesked rs("dato") = Now() rs.update rs.close set rs = Nothing Response.Redirect("gemt.asp") end if %> <form method="post" action="ny.asp"> <input type="text" name="besked"> <input type="submit" value="send"> <% Con.Close Set Con = Nothing %> </div> </BODY> </HTML> Det, der skal ske er, at beskeden (skrevet i form'en) skal tilføjes som post i tabellen 'gaestebog' i databasen. Det virker ik. Er den helt gal eller er det en lille fejl?
Annonceindlæg tema
Cloud & AI
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
03. september 2002 - 21:43
#2
Hvad står der i linie 59 i ny.asp ?? Det kunne tyde på du angiver et forkert kolonnenavn i et rscordset rs("forkrt_navn_her") /clevzter/logInd/ny.asp, line 59
03. september 2002 - 21:46
#3
59. <form method="post" action="ny.asp?brugernavn=<%=rs("brugernavn")%>"> nej, recordsettet er sådan set rigtigt nok, men jeg kan se at jeg tidligere i filen har lukket det <% rs.close %> har byttet det ud med <form method="post" action="ny.asp?brugernavn=ramsteinfan18"> nu er den gal her: rs.open sql, conn, 1, 3
03. september 2002 - 21:48
#4
hvad betyder 'rs.open sql, conn, 1, 3' helt præcist? det er noget med database-strukturen ik? for den er jo anderledes end i den fil hvor det her er stjålet fra...
03. september 2002 - 21:49
#5
Din connection hedder con med et n ikke to som i linie så det skal være: rs.open sql, con, 1, 3
03. september 2002 - 21:52
#6
03. september 2002 - 21:58
#7
det var rigtigt nok fejlen så skal jeg bare have gjort sådan at jeg kan bruge rs("brugernavn") længere nede på siden...
03. september 2002 - 22:18
#8
Nu virker det perfekt! men hvorfor må jeg nu ik skrive: Response.Redirect("gaestebog.asp?brugernavn=rs('brugernavn')")
03. september 2002 - 22:20
#9
Der skal være " i kolonnenavnet: men hvorfor må jeg nu ik skrive: Response.Redirect("gaestebog.asp?brugernavn=rs("brugernavn")")
03. september 2002 - 22:28
#10
så opstår der en intern 500-fejl
03. september 2002 - 22:29
#11
er recordset åben på det tidspunkt?
03. september 2002 - 22:38
#12
ups nej, der står jo: rs.close set rs = Nothing Response.Redirect("gaestebog.asp?brugernavn=rs("brugernavn")") men kan jeg så bare slette de 2 øverste linier?
03. september 2002 - 22:40
#13
Det "pæneste" ville være at lave en variable som man gemmer brugernavnet i inden man lukker det for ikke at havde et åbent recordset inden redirect: strBrugernavn = rs("brugernavn") rs.close set rs = Nothing Response.Redirect("gaestebog.asp?brugernavn="&strBrugernavn)
03. september 2002 - 22:44
#14
Det giver mening, men! ADODB.Recordset error '800a0cc1' Item cannot be found in the collection corresponding to the requested name or ordinal. /clevzter/logInd/ny.asp, line 42
03. september 2002 - 22:44
#15
42. strBrugernavn = rs("brugernavn")
03. september 2002 - 22:46
#16
Det betyder den ikke kan finde brugernavn i recordset'et Har du en kolonne som hedder det?
03. september 2002 - 22:47
#17
der er en kolonne i min db, som hedder brugernavn ja den er i tabellen bruger
03. september 2002 - 22:48
#18
<% if Request("besked") <> "" then gModtager = rs("brugernavn") gBesked = Server.HTMLEncode(Request.Form("besked")) Set rs = Server.CreateObject("ADODB.Recordset") sql = "select * from gaestebog" rs.open sql, con, 1, 3 rs.addnew rs("modtager") = gModtager rs("afsender") = Session("brugernavn") rs("besked") = gBesked rs("dato") = Now() rs.update strBrugernavn = rs("brugernavn") rs.close set rs = Nothing Response.Redirect("gaestebog.asp?brugernavn="&strBrugernavn) end if %> Det gir jo ingen mening at den ved hvad rs("brugernavn") er i toppen men ik i bunden af det her stykke kode
03. september 2002 - 23:01
#19
I toppen åbner du et recordet med denne SQL strSQL = "Select * From bruger Where brugernavn = '" & Request.Querystring("brugernavn") & "' " Og det ligger du ind i rs.... Så udskriver du med rs("brugernavn") Så lukkes rs Så åbnes rs igen med denne SQL strSQL = "Select * From gaestebog Where modtager = '" & Request.Querystring("brugernavn") & "' order by dato desc " Nu er modtager så brugernavnet hvis denne if er opfyldt if Request("besked") <> "" then Så overskrives det rs du lige har åbend med det som skal bruges til at gemme beskeden i : Set rs = Server.CreateObject("ADODB.Recordset") sql = "select * from gaestebog" rs.open sql, con, 1, 3 rs.addnew rs("modtager") = gModtager rs("afsender") = Session("brugernavn") rs("besked") = gBesked rs("dato") = Now() rs.update Så enten skal du fra start af gemme brugernavnet elle skal du evt skrive: Response.Redirect("gaestebog.asp?brugernavn="&request.querystring("brugernavn"))
03. september 2002 - 23:04
#20
ok det blev vist lidt forvirne ;)
03. september 2002 - 23:30
#21
nej, det gav skam mening jeg prøver lige noget...
03. september 2002 - 23:32
#22
jo, nu virker det tusind tak for hjælpen og godnat
03. september 2002 - 23:34
#23
OK det lyder godt.... godnat
Kurser inden for grundlæggende programmering