webForumDet fria alternativet

Borttagning av en post

ASP

18 svar · 310 visningar · startad av January

Medlem sedan okt. 200325 inlägg
Frågan#1

Hejsan!

Jag har ett problem med min asp-kod. Jag har en sida med frågor som är kopplade till en access databas där frågorna sparas. Jag vill kunna ta bort en post så den inte syns på sidan men även ska tas bort från databasen. Jag har lagt in en länk som man klickar på för att ta bort posten som visas och då kommer det upp en confirmbox där man kan välja ok eller avbryt. När jag avbryter så kommer jag tillbaka till sidan (inget händer) och när jag klickar på OK så ska jag komma till en sida som inte visas utan bara tar bort posten och sedan omdirigerar till en sida där det står att posten är borttagen. Koden jag har skrivit in ser ut så här:

<% option explicit%>

<% dim koppling, sql, id

   id=request.form("id")

	set koppling=server.createobject("adodb.connection")

   ' koppling.open("wordtest.mdb") ELLER

   koppling.open("driver={microsoft access driver (*.mdb)};    dbq="&server.mappath("wordtest.mdb"))

	sql="delete * from tbwordtest where id=" & id & ";"

   	koppling.execute(sql)

	response.redirect("tabort2.asp")
 
	koppling.close
	
   	set koppling=nothing

%>

Vad kan det vara för fel jag har gjort?

Medlem sedan mars 2003772 inlägg
#2

Ligger textfältet "id" innanför <form> taggen på den förra sidan? Annars kan du inte använda request.form

<% option explicit%>

<% dim koppling, sql, id

   id=request.form("id")

	set koppling=server.createobject("adodb.connection")

   ' koppling.open("wordtest.mdb") ELLER

   koppling.open("driver={microsoft access driver (*.mdb)};    dbq="&server.mappath("wordtest.mdb"))

	[b]sql="delete * from tbwordtest where id=" & id[/b]

   	koppling.execute(sql)

	response.redirect("tabort2.asp")
 
	koppling.close
	
   	set koppling=nothing
Medlem sedan okt. 200325 inlägg
#3

Tack för ditt snabba svar.
Nej, id ligger inte i >form>. Koden ser ut på detta sätt:

<% option explicit %>

<% dim id

   id=request.querystring("id") 

   dim koppling

   dim sql

   dim rslista

	set koppling=server.createobject("adodb.connection")

	'koppling.open("koppladbwordtest") ELLER

	koppling.open("driver={microsoft access driver (*.mdb)}; dbq="&server.mappath("wordtest.mdb"))

	sql="select * from tbwordtest where id="& id &";"

	set rslista=koppling.execute(sql)

%>

<HTML>
<body bgcolor="#C0C0C0">
<body bgcolor="#C0C0C0">
<STYLE TYPE="TEXT/CSS"> 
<!--
A:Hover   { color: #666666 }
A                 { text-decoration: none; color: #000000}
-->
</STYLE>
	<b>Svar från:</b> <%=rslista("anvnamn")%> <%=rslista("fnamn")%> &nbsp; <%=rslista("enamn")%>
	den <%=rslista("datum")%> &nbsp; kl <%=rslista("tid")%> <br><br> 	

	<b>Fråga 1</b>, <%=rslista("fraga1")%><br>
	<b>Fråga 2</b>, <%=rslista("fraga2")%><br>
	<b>Fråga 3</b>, <%=rslista("fraga3")%><br>
	<b>Fråga 4</b>, <%=rslista("fraga4")%><br>
	<b>Fråga 5</b>, <%=rslista("fraga5")%><br>
	<b>Fråga 6</b>, <%=rslista("fraga6")%><br>
	<b>Fråga 7</b>, <%=rslista("fraga7")%><br>
	<b>Fråga 8</b>, <%=rslista("fraga8")%><br>
	<b>Fråga 9</b>, <%=rslista("fraga9")%><br>
	<b>Fråga 10</b>, <%=rslista("fraga10")%><br>
	

	<br><br><br>

	<a href="visa.asp"> Tillbaka till listan </A>
       <br><br><br>
	

	<a href="tabort.asp?id=<%=id%>" onClick="alert('ÄR det säkert att du vill ta bort den här posten?;"> Ta bort </A>

</Body>
</HTML>

<% koppling.close

   set koppling=nothing

%>
Medlem sedan mars 2003772 inlägg
#4

Ok men då ska du inte använda Request.form utan Request.Querystring eftersom länken är tabort.asp?id=<%=id%>

Du använder Request.form om du vill hämta ett värde som ligger i ett textfält.
t ex:

<form method="post" action="sida.asp">
<input type="text" name="id">
</form>

Men du använder Request.Querystring om du vill hämta ett värde som ligger i en adress
t ex:

<a href="sida.asp?id=<%=RecordSet("id")%>
<% option explicit%>

<% dim koppling, sql, id

   id=Request.Querystring("id")

	set koppling=server.createobject("adodb.connection")

   ' koppling.open("wordtest.mdb") ELLER

   koppling.open("driver={microsoft access driver (*.mdb)};    dbq="&server.mappath("wordtest.mdb"))

	sql="delete * from tbwordtest where id=" & id

   	koppling.execute(sql)

	response.redirect("tabort2.asp")
 
	koppling.close
	
   	set koppling=nothing
Medlem sedan okt. 200325 inlägg
#5

Hmmm, det funkar inte riktigt nu heller. Jag får upp följande felmeddelande:
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'id='.

tabort.asp, line 15

Vad kan det bero på då?

Medlem sedan mars 2003772 inlägg
#6

Du verkar inte få med dig något värde?

Byt till

<a href="tabort.asp?id=<%=rslista("id")%>" onClick="alert('ÄR det säkert att du vill ta bort den här posten?;"> Ta bort </A>

Om kolumnen heter "id"

Medlem sedan okt. 200325 inlägg
#7

Hmmm, det funkar inte alls. Får nu upp detta felmeddelande:
Microsoft VBScript runtime error '800a01c2'

Wrong number of arguments or invalid property assignment

Jag har iof kvar onClick confirm och inte alert för jag vill att man ska kunna välja ok eller avbryt....

Medlem sedan mars 2003772 inlägg
#8

Det spelar ingen roll.
Du måste kolla så du får med nåt värde i querystringen.

Medlem sedan okt. 200325 inlägg
#9

Vet inte vad felet är nu har jag ändrat till den senaste koden och då kommer följande felmeddelande upp:

Microsoft VBScript runtime error '800a01c2'

Wrong number of arguments or invalid property assignment

visa2.asp, line 61

Något förslag på vad det kan bero på eller vad det betyder?

Medlem sedan apr. 20003 174 inlägg
#10

Tips:

Visa alltid den aktuella koden som ger dig fel samt markera vilken rad felet pekar mot.
Det är helt omöjligt för oss att hjälpa dig annars.

Medlem sedan okt. 200325 inlägg
#11

Jag har nu på sidan visa2.asp denna kod:

<% option explicit %>

<% dim id

   id=request.querystring("id") 

   dim koppling

   dim sql

   dim rslista

	set koppling=server.createobject("adodb.connection")

	'koppling.open("koppladbwordtest") ELLER

	koppling.open("driver={microsoft access driver (*.mdb)}; dbq="&server.mappath("wordtest.mdb"))

	sql="select * from tbwordtest where id="& id &";"

	set rslista=koppling.execute(sql)

%>

<HTML>
<body bgcolor="#C0C0C0">

<STYLE TYPE="TEXT/CSS"> 
<!--
A:Hover   { color: #666666 }
A                 { text-decoration: none; color: #000000}
-->
</STYLE>
	<b>Svar från:</b> <%=rslista("anvnamn")%> <%=rslista("fnamn")%> &nbsp; <%=rslista("enamn")%>
	den <%=rslista("datum")%> &nbsp; kl <%=rslista("tid")%> <br><br> 	

	<b>Fråga 1</b>, <%=rslista("fraga1")%><br>
	<b>Fråga 2</b>, <%=rslista("fraga2")%><br>
	<b>Fråga 3</b>, <%=rslista("fraga3")%><br>
	<b>Fråga 4</b>, <%=rslista("fraga4")%><br>
	<b>Fråga 5</b>, <%=rslista("fraga5")%><br>
	<b>Fråga 6</b>, <%=rslista("fraga6")%><br>
	<b>Fråga 7</b>, <%=rslista("fraga7")%><br>
	<b>Fråga 8</b>, <%=rslista("fraga8")%><br>
	<b>Fråga 9</b>, <%=rslista("fraga9")%><br>
	<b>Fråga 10</b>, <%=rslista("fraga10")%><br>
	

	<br><br><br>
	
<a href="visa.asp"> Tillbaka till listan </A>
       <br><br><br>
	

<a href="tabort.asp?id=<%rslista("id")%>" onClick="alert('Vill du verkligen ta bort den här posten?;")>Ta bort</a>

</Body>
</HTML>

<% koppling.close

   set koppling=nothing

%>

och på sidan tabort.asp där posten ska tas bort denna kod:

<% option explicit%>

<% dim koppling, sql, id

   id=Request.Querystring("id")

	set koppling=server.createobject("adodb.connection")

   ' koppling.open("wordtest.mdb") ELLER

   koppling.open("driver={microsoft access driver (*.mdb)};    dbq="&server.mappath("wordtest.mdb"))

	sql="delete * from tbwordtest where id=" & id

   	koppling.execute(sql)

	response.redirect("tabort2.asp")
 
	koppling.close
	
   	set koppling=nothing

%>

Felmeddelandet jag får är nu på rad 56 (har tagit bort en del tomma rader)...
Och det står då:
Microsoft VBScript runtime error '800a01c2'

Wrong number of arguments or invalid property assignment

visa2.asp, line 56

Så det är något skumt i länk-koden som jag inte lyckas få till men har testat alla förslag jag fått ovan och ändrat så är det någon som vet hur jag ska få till det så blir jag väldigt glad...

Medlem sedan apr. 20003 174 inlägg
#12
[red]<%rslista("id")%>[/red]

Borde nog vara:

[red]<%= rslista("id") %>[/red]
Medlem sedan okt. 200325 inlägg
#13

Det funkar nu, tack så jättemycket för hjälpen allihopa.
Kram på er!!!

Medlem sedan okt. 200325 inlägg
#14

Har ytterligare en fråga gällande det här nu...
Jag har ju fått det att fungera när jag har en alertbox som visas och frågar om jag vill ta bort koden ser ut så här:

<a href="tabort.asp?id=<%= rslista("id") %>" onClick="alert('Vill du verkligen ta bort den här posten?');">Ta bort</a>

Men jag vill att det ska komma upp en confirmbox när jag klickar på tabort där jag kan välja att klicka på avbryt för att då komma tillbaka till sidan och om jag klickar på ok så ska jag komma till sidan tabort.asp

Medlem sedan okt. 200325 inlägg
#15

Måste jag lägga in det som JavaScript längst upp på sidan med en if-sats?

Medlem sedan apr. 20003 174 inlägg
#16

Då får du anropa confirm istället, ex.

[red]<a href="tabort.asp?id=<%= rslista("id") %>" onClick="return confirm('Vill du verkligen ta bort den här posten?');">Ta bort</a>[/red]
Medlem sedan okt. 200325 inlägg
#17

Tack, du är en ängel...

Medlem sedan apr. 20003 174 inlägg
#18

Np! :bire

Bara ett tips:
Du skall acceptera det svaret i tråden som löste ditt problem, detta för att underlätta
sökningar på uppklarade trådar, inte bara markera ett svar ur mängden. :)

Var det många frågor som du fick svar på i tråden,
markera då det svar som löste din först skapade fråga.

 

Medlem sedan okt. 200325 inlägg
#19

Ok, då är det ingen idé att acceptera här då eftersom det är flera svar som gjort att jag löst problemet...

271 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
141 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)