23. juli 2005 - 02:32
Der er
12 kommentarer og 1 løsning
Slette i DB.
Skal kunne slette en post i en DB. Det jeg har/roder med nu, ser sådan her ud, det er self. kun en bid af det ;) - men virker ikke. Ved heller ikke om det overhoved er den korrekte måde at lave det på, eller om der er en bedre måde.. :) Nogen der gider hjælpe? :) ------------- <a href="news_overview.asp?mode=delete_news=<%=rs("ID")%>">Delete</a></font> <% if mode = "delete_news" then Set rs = Conn.Execute("select * from news where ID = " & Request.QueryString("ID")) Response.Redirect("news_overview.asp") end if %> -------------
Annonceindlæg fra Barco
Jeg ville umiddelbart kalde delete-kommandoen i databasen, hvis det er sletning jeg er ude efter... :) Noget i stil med dette: SQL = "DELETE FROM news WHERE ID = " & Request.QueryString("ID") Conn.Execute SQL
+ en korrekt url <a href="news_overview.asp?mode=delete_news&id=<%=rs("ID")%>">Delete</a>
Jeg smider lige hele skidtet ind.. for fatter ikke ret meget lige nu, måske jeg bare skulle gå i seng :-P .. hehe -------------- <body> <% Function FormatStr(String) on Error resume next String = Replace(String, CHR(10), "<br>") FormatStr = String End Function Set cn = Server.CreateObject("ADODB.Connection") OpenString = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & server.mappath("../db/ubc_news.mdb") cn.Open OpenString Set rs = Server.CreateObject("ADODB.RecordSet") rs.Open "SELECT TOP 6 * FROM news ORDER BY dato Desc", cn do while not rs.eof %> <table border="0" cellpadding="3" cellspacing="0" width="60%"> <tr> <td valign="top" width="1%">*</td> <td valign="top"> <font size="1"><% = rs("dato") %></font> <br> <font size="2"><b><% = rs("headline") %></b><br><% = FormatStr(rs("message"))%></font> <br><br> <font size="1">Written by: <b><% = rs("author") %></b></font> <br><br> <font size="1"><a href="news_overview.asp?mode=delete_news=<%=rs("ID")%>">Delete</a></font> <% if mode = "delete_news" then Set rs = Conn.Execute("select * from news where ID = " & Request.QueryString("ID")) Response.Redirect("news_overview.asp") end if %> </td> </tr> </table> <br><hr><br> <% rs.MoveNext loop rs.close cn.close %> </body> </html> --------------
Der er lige nogle umiddelbare rettelser ifm. parametre og sletning... Noget i stil med dette: <body> <% Function FormatStr(String) on Error resume next String = Replace(String, CHR(10), "<br>") FormatStr = String End Function Set cn = Server.CreateObject("ADODB.Connection") OpenString = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & server.mappath("../db/ubc_news.mdb") cn.Open OpenString Set rs = Server.CreateObject("ADODB.RecordSet") rs.Open "SELECT TOP 6 * FROM news ORDER BY dato Desc", cn do while not rs.eof %> <table border="0" cellpadding="3" cellspacing="0" width="60%"> <tr> <td valign="top" width="1%">*</td> <td valign="top"> <font size="1"><% = rs("dato") %></font> <br> <font size="2"><b><% = rs("headline") %></b><br><% = FormatStr(rs("message"))%></font> <br><br> <font size="1">Written by: <b><% = rs("author") %></b></font> <br><br> <font size="1"><a href="news_overview.asp?mode=delete_news&id=<%=rs("ID")%>">Delete</a></font> <% if mode = "delete_news" then Set rs = Conn.Execute("DELETE FROM news WHERE ID = " & Request.QueryString("ID")) Response.Redirect("news_overview.asp") end if %> </td> </tr> </table> <br><hr><br> <% rs.MoveNext loop rs.close cn.close %> </body> </html>
Jeg kunne måske endda foreslå at du flyttede sletningen op foran udvælgelsen, da du så kunne spare et redirect... :) Altså: <body> <% Function FormatStr(String) on Error resume next String = Replace(String, CHR(10), "<br>") FormatStr = String End Function Set cn = Server.CreateObject("ADODB.Connection") OpenString = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & server.mappath("../db/ubc_news.mdb") cn.Open OpenString <% if mode = "delete_news" then Conn.Execute("DELETE FROM news WHERE ID = " & Request.QueryString("ID")) end if %> Set rs = Conn.Execute("SELECT TOP 6 * FROM news ORDER BY dato Desc") do while not rs.eof %> <table border="0" cellpadding="3" cellspacing="0" width="60%"> <tr> <td valign="top" width="1%">*</td> <td valign="top"> <font size="1"><% = rs("dato") %></font> <br> <font size="2"><b><% = rs("headline") %></b><br><% = FormatStr(rs("message"))%></font> <br><br> <font size="1">Written by: <b><% = rs("author") %></b></font> <br><br> <font size="1"><a href="news_overview.asp?mode=delete_news&id=<%=rs("ID")%>">Delete</a></font> </td> </tr> </table> <br><hr><br> <% rs.MoveNext loop rs.close cn.close %> </body> </html>
Møj! Kan du ikke lige selv fjern <% og %> omkring koden der sletter...
Hejsa softspot Har lige prøvet det (dit sidste) men den sletter intet :-/
denne? <a href="news_overview.asp?mode=delete_news&id=<%=rs("ID")%>">Delete</a> så det er.. <a href="news_overview.asp?mode=delete_news&id==rs("ID")">Delete</a></a> ?
Nej, jeg har rettet det i denne udgave (hvor mode nu også bliver hentet ud af querystring :))... <body> <% Function FormatStr(String) on Error resume next String = Replace(String, CHR(10), "<br>") FormatStr = String End Function Set cn = Server.CreateObject("ADODB.Connection") OpenString = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & server.mappath("../db/ubc_news.mdb") cn.Open OpenString if Request.QueryString("mode") = "delete_news" then Conn.Execute("DELETE FROM news WHERE ID = " & Request.QueryString("ID")) end if Set rs = Conn.Execute("SELECT TOP 6 * FROM news ORDER BY dato Desc") do while not rs.eof %> <table border="0" cellpadding="3" cellspacing="0" width="60%"> <tr> <td valign="top" width="1%">*</td> <td valign="top"> <font size="1"><% = rs("dato") %></font> <br> <font size="2"><b><% = rs("headline") %></b><br><% = FormatStr(rs("message"))%></font> <br><br> <font size="1">Written by: <b><% = rs("author") %></b></font> <br><br> <font size="1"><a href="news_overview.asp?mode=delete_news&id=<%=rs("ID")%>">Delete</a></font> </td> </tr> </table> <br><hr><br> <% rs.MoveNext loop rs.close cn.close %> </body> </html>
23. juli 2005 - 03:32
#10
ups.. Nu får jeg denne ---------- Microsoft VBScript runtime error '800a01a8' Object required: '' /ubc_news/news_overview.asp, line 31 ---------- 30) if Request.QueryString("mode") = "delete_news" then 31) Conn.Execute("DELETE FROM news WHERE ID = " & Request.QueryString("ID")) 32) end if
23. juli 2005 - 04:18
#11
Fordømt! Jeg var ikke lige opmærksom på at du havde brugt to forskellige objekter til at referere din connection (hvilket ikke var korrekt i dette tilfælde). Mon så det her så fungerer... <body> <% Function FormatStr(String) on Error resume next String = Replace(String, CHR(10), "<br>") FormatStr = String End Function Set cn = Server.CreateObject("ADODB.Connection") OpenString = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & server.mappath("../db/ubc_news.mdb") cn.Open OpenString if Request.QueryString("mode") = "delete_news" then cn.Execute "DELETE FROM news WHERE ID = " & Request.QueryString("ID") end if Set rs = cn.Execute("SELECT TOP 6 * FROM news ORDER BY dato Desc") do while not rs.eof %> <table border="0" cellpadding="3" cellspacing="0" width="60%"> <tr> <td valign="top" width="1%">*</td> <td valign="top"> <font size="1"><% = rs("dato") %></font> <br> <font size="2"><b><% = rs("headline") %></b><br><% = FormatStr(rs("message"))%></font> <br><br> <font size="1">Written by: <b><% = rs("author") %></b></font> <br><br> <font size="1"><a href="news_overview.asp?mode=delete_news&id=<%=rs("ID")%>">Delete</a></font> </td> </tr> </table> <br><hr><br> <% rs.MoveNext loop rs.close cn.close %> </body> </html>
23. juli 2005 - 04:30
#12
Hejsa softspot Jamen jeg har ikke helt styr på ASP., hvilke du sikkert måske har bemærket.. lol :P ... Det er altsammen noget jeg har fundet rundt omkring på nettet og sat sammen, og prøver ihærdigt at lære af andre :) Det virker nu.. tuinde tak skal du have, pænt af dig at gide hjælpe på dette ukristelige tidspunkt og så med vedligeholdelse midt i det hele ;) Post venligst et svar :)
23. juli 2005 - 04:35
#13
Velbekomme! :)
Kurser inden for grundlæggende programmering