Just nu i M3-nätverket
Gå till innehåll

Radera post i accessdatabas


Benghaaa

Rekommendera Poster

Nu orkar jag inte mer, jag har tittat igenom hele e-forum och aspsidans forum känns det som. Som trådnamnet säger så vill jag enkelt radera en post i min databas.

 

Jag har allt på en sida och använder mig utav request.querystring för att få fram informationen jag vill visa.

 

Länken till att radera ett inlägg ser ut såhär: index.asp?do=tabort&id=<%= RecSet("ID")%>

 

alla rader har fått ett id tilldelat i access databasen

 

 

Såhär ser koden ut:

[log]

<%

If Request.Querystring("do")= "tabort" Then

 

Set Conn = Server.CreateObject("ADODB.Connection")

Conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("db/db.mdb")

 

SQL="Delete * From kommande Where ID=" & Request.Querystring("ID")

Response.Write SQL

Conn.Execute(SQL)

 

Conn.Close

Set Conn = Nothing

 

Response.Redirect "index.asp?do=raderat"

 

End If

%>

[/log]

 

när jag provar så försvinner allt och inget syns, inlägget raderas heller inte.

Snälla hjälp!

 

[inlägget ändrat 2007-01-08 15:24:36 av Benghaaa]

Länk till kommentar
Dela på andra webbplatser

Mr Andersson

 

DELETE FROM tabellnamn WHERE id=xxx

 

Alltså ingen *

 

(Glömmer du WHERE id=xxx så raderas ALLA poster)

 

 

 

 

 

Länk till kommentar
Dela på andra webbplatser

Okej, om vi tar en sak i taget.

Är där något värde i QueryStringen?

 

Gör så här på din sida:

If Request.Querystring("do")= "tabort" Then
Response.Write Request.QueryString("id")
Response.End

Vad skrivs ut nu?

 

Länk till kommentar
Dela på andra webbplatser

Och hur ser länken ut när du för musen över den?

Är där alltså något värde på platsen där du skriver ut RecSet("ID")?

 

Det gick inte att se någon sida.

 

[inlägget ändrat 2007-01-08 15:43:33 av Micke_skane]

Länk till kommentar
Dela på andra webbplatser

Jag ser varje inläggs id, prova igen http://benghaa.mine.nu/kvk

 

admin, redigera kommande matcher

 

usr: Admin

pw:bollvolley

 

[inlägget ändrat 2007-01-08 15:45:34 av Benghaaa]

[inlägget ändrat 2007-01-08 15:45:52 av Benghaaa]

[inlägget ändrat 2007-01-08 15:48:33 av Benghaaa]

Länk till kommentar
Dela på andra webbplatser

Kan ändå inte se någon sida :)

 

Om du provar att byta ut utskiften jag visade innan till den här:

Response.Write "Test: "&Request.QueryString("id")

Vad skrivs där nu ut?

Vill bara se så att du kommer in i rätt if-sats så det inte är där felet är.

 

Länk till kommentar
Dela på andra webbplatser

Nu ser koden ut såhär:

 

 

<%

If Request.Querystring("do")= "tabort" Then

Response.Write "Test: "&Request.QueryString("id")

end if%>

 

Men får inte ut ett dret :E

 

 

har du msn, irc eller liknande så vi kan prata där, går smidigare.

[inlägget ändrat 2007-01-08 15:53:31 av Benghaaa]

Länk till kommentar
Dela på andra webbplatser

Tar det gärna här i forumet, dels så är där fler ögon som kan se på det och är det så att jag inte har mer tid helt plötsligt så är det lättare för nästa att se vad som hänt i tråden.

 

Utan att göra för stora förändringar eller kontroller i din övriga kod så kan du ju testa att göra en separat sida för att radera posterna.

Om nu sidan heter radera.asp så blir länken dit:

radera.asp?id=<%=RecSet("ID")&>

 

Länk till kommentar
Dela på andra webbplatser

Grejjen är att jag vill helst ha det på en sida, med tanke på att designen blir knepig, jag vill helst inte köra med i-frames eftersom de inte ändrar storleken efter innehållet, och då måste man ladda om hela sidan, vilket inte är jättehändigt, ganska så mycket grafik :/

 

Länk till kommentar
Dela på andra webbplatser

Det kan inte ha någon större betydelse om du lägger radera-funktionen i en egen sidan istället för inom egen if-sats.

Du bara flyttar funktionen och efter det är klart så kommer du tillbaka till index.asp?do=raderat .

Testa!

 

Kan se ut så här(enkel grundform):

[log]

[MÄRK]<%[/MÄRK]
[color="#0000ff"]Dim[/color] PostId
[color="#0000ff"]If[/color] [b]Request[/b].Querystring([GRÅ]"id"[/GRÅ]).Count = 0 [color="#0000ff"]Then[/color]
  PostId = -1
[color="#0000ff"]Else[/color]
  PostId = [color="#0000ff"]CLng[/color]([b]Request[/b].QueryString([GRÅ]"id"[/GRÅ]))
[color="#0000ff"]End[/color] [color="#0000ff"]If[/color]
[color="#0000ff"]Set[/color] Conn = [b]Server[/b].[color="#0000ff"]CreateObject[/color]([GRÅ]"ADODB.Connection"[/GRÅ])
Conn.Open [GRÅ]"Driver={Microsoft Access Driver (*.mdb)}; DBQ="[/GRÅ] & [b]Server[/b].MapPath([GRÅ]"db/db.mdb"[/GRÅ])

SQL=[GRÅ]"Delete From kommande Where ID="[/GRÅ]& PostId
Conn.[color="#0000ff"]Execute[/color](SQL)

Conn.Close
[color="#0000ff"]Set[/color] Conn = [color="#0000ff"]Nothing[/color]

[b]Response[/b].Redirect [GRÅ]"index.asp?do=raderat"[/GRÅ]
[MÄRK]%>[/MÄRK]

[/log]

[inlägget ändrat 2007-01-08 16:29:14 av Micke_skane]

Länk till kommentar
Dela på andra webbplatser

http://benghaa.mine.nu/kvk/index.asp?do=789456

If Request.Querystring("do")= "tabort" Then

Response.Write Request.QueryString("id")

Response.End

 

 

Så som jag ser det har fel länk i "ta bort"

 

Använd den SQL du fått beskrivit (DELETE FROM ... WHERE ID= request.querystring("id"))

 

Ta-bort-länken skall se ut så här:

 

http://benghaa.mine.nu/kvk/index.asp?do=tabort&id=789456

 

 

 

Länk till kommentar
Dela på andra webbplatser

nej den ska inte se ut så, den är den enda jag är helt säker på att den är rätt :P

 

 

ingen som har något förslag förutom att lägga det på en extern sida?

 

det borde ju inte vara svårt att fixa, eller?

 

försök även att titta: http://benghaa.mine.nu/KVK/index.asp

så kanske ni förstå bättre hur jag vill ha det

[inlägget ändrat 2007-01-08 23:02:47 av Benghaaa]

Länk till kommentar
Dela på andra webbplatser

nej den ska inte se ut så, den är den enda jag är helt säker på att den är rätt

Håller med Jonas_Bo, dvs. minst do=tabort och id=78xxx måste vara med i länken om din kod ser ut som ovan.

 

Hur ser din ta-bortlänk ut nu?

 

 

/Cluster

------------------------------------------------------------

Ditt vetande är värdelöst om inte andra vet att du vet

-----------> http://eforum.kicks-ass.net <------------

 

Länk till kommentar
Dela på andra webbplatser

Håller med Jonas_Bo, dvs. minst do=tabort och id=78xxx måste vara med i länken om din kod ser ut som ovan.
Jag vet inte hur ni gör för att se hans sida och tabort-länkarna för oavsett vilken länk jag provar så syns aldrig hans sida :)

 

ingen som har något förslag förutom att lägga det på en extern sida?
Vad är det för fel med att prova det på en annan sida?

Tanken är ju att kolla ifall koden fungerar utan att försöka komma rätt ibland dina if-satser, som uppenbart inte fungerar.

Fungerar det på en egen sida så är där ju inga fel med att få tag i ett id ur din querystring.

Kallas för felsökning :)

 

det borde ju inte vara svårt att fixa, eller?
Nä, bara man vet vad felet är.

 

[inlägget ändrat 2007-01-09 07:13:15 av Micke_skane]

Länk till kommentar
Dela på andra webbplatser

Nu löste jag det, jag slängde ihop ett tabortscript på en egen sida, alltså allt även ID-länkar osv och då funkade det, se copy pastade jag bara, och det funkade utan problem. Såhär blev det

 

[log]<html>

<!-- #include virtual="adovbs.inc" -->

<head>

<title>Untitled Document</title>

</head>

<body>

<div align="center">

 

 

<%if request.querystring("do")="" then%>

 

<p>HEHEHEH

<a href="radera.asp?do=visa">Visa matcher</a></p>

<p>

 

<%elseif request.querystring("do")="visa" then%>

<% Set Connect = Server.CreateObject("ADODB.Connection")

Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=c:\www\KVK\db\db.mdb"

 

Set RecSet = Server.CreateObject("ADODB.Recordset")

Visa = "SELECT * FROM kommande ORDER BY ID"

RecSet.Open Visa, Connect, adOpenStatic, adLockOptimistic %>

Följande matcher finns att redigera </p>

</div>

</div>

<p align="center">

<% Do Until RecSet.EOF %>

</p>

 

<div align="center">

<div align="center">

<table border="0">

<tr>

<td><% =RecSet("Hemma") %>

- </td>

<td><% =RecSet("Borta") %>

</td>

<td><b>

<% =RecSet("Div") %>

</b> </td>

</tr>

<tr>

<td colspan="3"><center>

<% =RecSet("Datum") %>

</center></td>

</tr>

</table>

</div>

<p align="center"><a href="radera.asp?do=tabort&id=<%=RecSet("ID")%>">Radera denna match</a></p>

<hr align="center" width="50">

<p align="center"></p>

<p align="center">

<% RecSet.MoveNext

Loop

RecSet.Close

 

Connect.Close

%>

 

<%elseIf Request.Querystring("do")= "tabort" Then

 

Set Connect = Server.CreateObject("ADODB.Connection")

Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=c:\www\KVK\db\db.mdb"

Set RecSet = Server.CreateObject("ADODB.Recordset")

Radera = "SELECT * FROM kommande WHERE ID = " & Request.QueryString("ID") & " "

 

RecSet.Open Radera, Connect, adOpenStatic, adLockOptimistic

 

RecSet.Delete

 

response.write "Du har nu raderat posten!<br>"

response.write "<a href=radera.asp?do=visa>Radera flera matcher</a>"

 

RecSet.Close

Connect.Close

 

 

%>

<% end if %>

 

</body>

</html>[/log]

 

Tack för all hjälp :)

 

Länk till kommentar
Dela på andra webbplatser

Nu löste jag det[...]

Så bra då. Antagligen var det då, som Micke misstänkte, strul med dina IF-satser

 

Några reflektioner:

* Tycker att det är onödigt att läsa ut den rad som skall raderas från databasen.

* Brukar själv aldrig använda adovbs.inc då det oftast bara är helt onödigt att läsa in/parsa allt dess innehåll.

* Vad händer när du klickar på "Radera flera matcher"-länken?

 

 

/Cluster

------------------------------------------------------------

Ditt vetande är värdelöst om inte andra vet att du vet

-----------> http://eforum.kicks-ass.net <------------

 

[inlägget ändrat 2007-01-09 16:31:48 av Cluster]

Länk till kommentar
Dela på andra webbplatser

Ja, jag tror också att det var just problem med if-satserna, jag valde att läsa ut hela raden eftersom det är så IDG's APS guide säger, finns fler sätt har jag sett, men det kändes bäst så.

 

Väljer man radera flera matcher så kommer man bara tillbaka till sidan man kan välja vilka matcher man vill radera, var bara ett stavfel, det ska ju stå radera fler matcher.

 

Nu har jag ett till problem, när jag har raderat, och uppdaterar sidan, så får jag fram att det är fel "posten du försöker radera finns inte" typ (och det är ju logiskt) men finns det någon kodsnutt som man kan lägga till så att man skriver ut ett eget "felmedelande" som säger i princip samma sak, fast den passar in med de andra sidorna?

 

Länk till kommentar
Dela på andra webbplatser

[...]IDG's APS guide säger[...]
Den är från 1999 och lämnar enligt mig en hel att önska. :(

 

[...]när jag har raderat, och uppdaterar sidan[...]
Det bästa vore att redirecta besökaren (och visa ett meddelande) efter att databasoperationen slutförts. Om man då uppdaterar så händer ingenting.

 

Jag skulle ha gjort något sån't här:[log]

[MÄRK]<%[/MÄRK]@LANGUAGE=[GRÅ]"VBSCRIPT"[/GRÅ] CODEPAGE=[GRÅ]"1252"[/GRÅ][MÄRK]%>[/MÄRK]
[MÄRK]<%[/MÄRK] [color="#0000ff"]If[/color] [b]Request[/b]([GRÅ]"action"[/GRÅ])<>[GRÅ]""[/GRÅ] [color="#0000ff"]Then[/color] [MÄRK]%>[/MÄRK]
<!DOCTYPE HTML [color="#0000ff"]Public[/color] [GRÅ]"-//W3C//DTD HTML 4.01//EN"[/GRÅ] [GRÅ]"http://www.w3.org/TR/html4/strict.dtd"[/GRÅ]>
<html>
<head>
<meta http-equiv=[GRÅ]"Content-Type"[/GRÅ] content=[GRÅ]"text/html; charset=iso-8859-1"[/GRÅ]>
<title>Radera Match</title>
</head>

<body>
<div style=[GRÅ]"text-align:center"[/GRÅ]>
[MÄRK]<%[/MÄRK]
[color="#0000ff"]If[/color] [b]Request[/b]([GRÅ]"do"[/GRÅ])=[GRÅ]""[/GRÅ] [color="#0000ff"]Then[/color]
   [b]Response[/b].Write([GRÅ]"<p><a href="[/GRÅ][GRÅ]"?do=visa"[/GRÅ][GRÅ]">Visa matcher</a></p>"[/GRÅ])
[color="#0000ff"]Else[/color]
   [color="#0000ff"]If[/color] [b]Request[/b]([GRÅ]"do"[/GRÅ])=[GRÅ]"visa"[/GRÅ] [color="#0000ff"]Then[/color]
      [color="#0000ff"]Set[/color] conn = [b]Server[/b].[color="#0000ff"]CreateObject[/color]([GRÅ]"ADODB.Connection"[/GRÅ])
      connStr = [GRÅ]"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\www\KVK\db\db.mdb"[/GRÅ]
      conn.open connStr

      [color="#0000ff"]Set[/color] objRS=conn.[color="#0000ff"]Execute[/color]([GRÅ]"SELECT id, hemma, borta, datum, div FROM kommande ORDER BY id"[/GRÅ])
      [color="#0000ff"]If[/color] objRS.EOF [color="#0000ff"]Then[/color]
         [b]Response[/b].Write([GRÅ]"Inga matcher i databasen!"[/GRÅ])
      [color="#0000ff"]Else[/color]
         [b]Response[/b].Write([GRÅ]"<p>Följande matcher finns att redigera:</p>"[/GRÅ])
         [b]Response[/b].Write([GRÅ]"<table border="[/GRÅ][GRÅ]"0"[/GRÅ][GRÅ]" cellspacing="[/GRÅ][GRÅ]"0"[/GRÅ][GRÅ]" cellpadding="[/GRÅ][GRÅ]"1"[/GRÅ][GRÅ]" align="[/GRÅ][GRÅ]"center"[/GRÅ][GRÅ]"><tr>"[/GRÅ])
         [color="#0000ff"]Do[/color] Until objRS.EOF
            [b]Response[/b].Write([GRÅ]"<td>"[/GRÅ]&objRS([GRÅ]"Hemma"[/GRÅ])&[GRÅ]"</td>"[/GRÅ])
            [b]Response[/b].Write([GRÅ]"<td> - </td>"[/GRÅ])
            [b]Response[/b].Write([GRÅ]"<td>"[/GRÅ]&objRS([GRÅ]"Borta"[/GRÅ])&[GRÅ]"</td>"[/GRÅ])
            [b]Response[/b].Write([GRÅ]"<td><strong>"[/GRÅ]&objRS([GRÅ]"Div"[/GRÅ])&[GRÅ]"</strong></td>"[/GRÅ])
            [b]Response[/b].Write([GRÅ]"<td>"[/GRÅ]&objRS([GRÅ]"Datum"[/GRÅ])&[GRÅ]"</td>"[/GRÅ])
            [b]Response[/b].Write([GRÅ]"<td><a href="[/GRÅ][GRÅ]"?action=tabort&id="[/GRÅ]&objRS([GRÅ]"ID"[/GRÅ])&[GRÅ]""[/GRÅ][GRÅ]">Radera</a></td>"[/GRÅ])
            objRS.MoveNext
         [color="#0000ff"]Loop[/color]
         [b]Response[/b].Write([GRÅ]"</tr></table>"[/GRÅ])
      [color="#0000ff"]End[/color] [color="#0000ff"]If[/color]
      [color="#0000ff"]Set[/color] objRS=[color="#0000ff"]Nothing[/color]

      conn.close
      [color="#0000ff"]Set[/color] conn=[color="#0000ff"]Nothing[/color]
   [color="#0000ff"]End[/color] [color="#0000ff"]If[/color]

   [color="#0000ff"]If[/color] [b]Request[/b]([GRÅ]"do"[/GRÅ])=[GRÅ]"showResult"[/GRÅ] [color="#0000ff"]Then[/color]
      [color="#0000ff"]If[/color] [b]Request[/b]([GRÅ]"result"[/GRÅ])=[GRÅ]"done"[/GRÅ] [color="#0000ff"]Then[/color]
         [b]Response[/b].Write [GRÅ]"Du har nu raderat posten!<br>"[/GRÅ]
         [b]Response[/b].Write [GRÅ]"<a href="[/GRÅ][GRÅ]"?do=visa"[/GRÅ][GRÅ]">Radera fler matcher</a>"[/GRÅ]
      [color="#0000ff"]End[/color] [color="#0000ff"]If[/color]

      [color="#0000ff"]If[/color] [b]Request[/b]([GRÅ]"result"[/GRÅ])=[GRÅ]"failed"[/GRÅ] [color="#0000ff"]Then[/color]
         [b]Response[/b].Write([GRÅ]"<p><strong>ETT FEL UPPSTOD!</strong></p>"[/GRÅ])
         [color="#0000ff"]If[/color] [b]Request[/b]([GRÅ]"error"[/GRÅ])=[GRÅ]"noId"[/GRÅ] [color="#0000ff"]Then[/color]
            [b]Response[/b].Write([GRÅ]"<p>Ingen match angiven</p>"[/GRÅ])
         [color="#0000ff"]End[/color] [color="#0000ff"]If[/color]
         [color="#0000ff"]If[/color] [b]Request[/b]([GRÅ]"error"[/GRÅ])=[GRÅ]"nonnumeric"[/GRÅ] [color="#0000ff"]Then[/color]
            [b]Response[/b].Write([GRÅ]"<p>Inte en giltig match</p>"[/GRÅ])
         [color="#0000ff"]End[/color] [color="#0000ff"]If[/color]         
      [color="#0000ff"]End[/color] [color="#0000ff"]If[/color]      
   [color="#0000ff"]End[/color] [color="#0000ff"]If[/color]
[color="#0000ff"]End[/color] [color="#0000ff"]If[/color]
[MÄRK]%>[/MÄRK]
</div>
</body>
</html>
[MÄRK]<%[/MÄRK]
[color="#0000ff"]Else[/color]
   [color="#0000ff"]Function[/color] fixSQL(str)
      str=[color="#0000ff"]Trim[/color](str)
      str=[color="#0000ff"]Replace[/color](str, [GRÅ]"'"[/GRÅ], [GRÅ]""[/GRÅ])
      str=[color="#0000ff"]Replace[/color](str, [GRÅ]","[/GRÅ], [GRÅ]""[/GRÅ])
      str=[color="#0000ff"]Replace[/color](str, [GRÅ]"&"[/GRÅ], [GRÅ]""[/GRÅ])
      str=[color="#0000ff"]Replace[/color](str, [GRÅ]"|"[/GRÅ], [GRÅ]""[/GRÅ])
      str=[color="#0000ff"]Replace[/color](str, [GRÅ]""[/GRÅ][GRÅ]""[/GRÅ], [GRÅ]""[/GRÅ])   
      fixSQL=str
   [color="#0000ff"]End[/color] [color="#0000ff"]Function[/color]

   myId=fixSQL([b]Request[/b]([GRÅ]"id"[/GRÅ]))

   [color="#0000ff"]If[/color] [b]Request[/b]([GRÅ]"action"[/GRÅ])<>[GRÅ]"tabort"[/GRÅ] [color="#0000ff"]Then[/color]
      [color="#0000ff"]If[/color] myId<>[GRÅ]""[/GRÅ] [color="#0000ff"]Then[/color]
         [color="#0000ff"]If[/color] [color="#0000ff"]IsNumeric[/color](myId) [color="#0000ff"]Then[/color]
            [color="#0000ff"]Set[/color] conn = [b]Server[/b].[color="#0000ff"]CreateObject[/color]([GRÅ]"ADODB.Connection"[/GRÅ])
            connStr = [GRÅ]"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\www\KVK\db\db.mdb"[/GRÅ]
            conn.open connStr
            conn.[color="#0000ff"]Execute[/color]([GRÅ]"DELETE FROM kommande WHERE id="[/GRÅ]&myId)
            conn.close
            [color="#0000ff"]Set[/color] conn=[color="#0000ff"]Nothing[/color]
            strNextPage=[GRÅ]"?do=showResult&result=done"[/GRÅ]
         [color="#0000ff"]Else[/color]
            strNextPage=[GRÅ]"?do=showResult&result=failed&error=nonnumeric"[/GRÅ]
         [color="#0000ff"]End[/color] [color="#0000ff"]If[/color]
      [color="#0000ff"]Else[/color]
         strNextPage=[GRÅ]"?do=showResult&result=failed&error=noId"[/GRÅ]
      [color="#0000ff"]End[/color] [color="#0000ff"]If[/color]
   [color="#0000ff"]End[/color] [color="#0000ff"]If[/color]

   [b]Response[/b].Redirect(strNextPage)
[color="#0000ff"]End[/color] [color="#0000ff"]If[/color]
[MÄRK]%>[/MÄRK]

[/log]

Om det ser konstigt ut eller blir knas med klipp-å-klistra (vilket inte är helt ovanligt) kan du kolla här:

http://eforum.kicks-ass.net/codeview/?file=raderaMatch.asp'>http://eforum.kicks-ass.net/codeview/?file=raderaMatch.asp

 

/Cluster

------------------------------------------------------------

Ditt vetande är värdelöst om inte andra vet att du vet

-----------> http://eforum.kicks-ass.net <------------

 

[inlägget ändrat 2007-01-09 22:37:11 av Cluster]

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...