WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   problem med asp (https://www.wn.se/forum/showthread.php?t=783)

Viktor 2003-11-21 15:55

Sitter och bygger en "webb-butik", något som går mindre bra.

Jag kan inte mycket asp alls men måste få klart allt. (skolarbete)

Vad är fel:

Dim PID
PID = Request("txtPID")

objConn.Execute "DELETE FROM Prod WHERE PID = PID"

Bara utklipp nu alltså, men som ni ser så är det en variabel vid namn PID som ska ta bort en med det nummer som kommer från txtPID. Problemet är att den verkar ta bort alla poster som har ett PID.

foks 2003-11-21 16:07

testa med:
objConn.Execute "DELETE FROM Prod WHERE PID = '" & PID & "'"

innan uppfattade databasen det som att om PID=PID så ska raden bort (om PID på den raden är 3 så kollar den om 3 = 3 och tar bort raden).
Med det här fattar databasen att det första PID är kolumnnamnet i databasen och den andra PID är en variabel.

Viktor 2003-11-21 16:10

Hmm han vill inte ändå.

Han får värdet från sidan innan med den här koden:

<input type="text" name="txtPID" maxlength="50" size="40">

Viktor 2003-11-21 16:24

Postar hela koden istället.

Fil1

<form name="form1" method="post" action="ta_bort_admin2.asp">
<input type="text" name="txtPID" maxlength="50" size="40">
<input type="submit">
</form>


Fil2

<% @LANGUAGE=VBScript %>
<% Option Explicit %>
<!-- #include file="adovbs.inc" -->
<%

Dim PID
PID = Request("txtPID")


'Öppnar en koppling mot databasen
Dim objConn
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.ConnectionString = "DSN=lembit"
objConn.Open


'Ta bort

Dim objRS
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open "Prod", objConn,adOpenDynamic,adLockOptimistic

objConn.Execute "DELETE FROM Prod WHERE PID = '" & PID & "'"


'Städa upp
objRS.Close
set objRS = Nothing

objConn.Close
set objConn = Nothing


Response.Redirect("lagg_till_admin_klar.html")
%>

foks 2003-11-21 16:33

Tar den bort alla där PID har något värde eller tar den inte bort något alls nu?

Där det står:
objConn.Execute "DELETE FROM Prod WHERE PID = '" & PID & "'"
kan du testa att lägga till raden:
response.write "DELETE FROM Prod WHERE PID = '" & PID & "'"
(och ta bort response.redirect i slutet så länge)

Då ser du vad den försöker köra hos databasen. Om det ser rätt ut kan du testa att köra den raden i tex phpMyAdmin om du har det och se vad den säger där.

Viktor 2003-11-21 16:47

Haha nu lägger jag fan ner allt!

En databas.ldb skapas och inget verkar fungera längre.

Feltyp:
Microsoft VBScript runtime (0x800A01FB)
An exception occurred: 'Open'

Fy fan för asp säger jag bara

Viktor 2003-11-21 16:52

Från fel-sidan:

POST Data:
txtPID=87

Som ni ser i koden så är PID kopplad till txtPID så jag
förstår inte varför han inte bara tar bort skiten.
Har kollat på diverse sidor nu och min "delete-kod" är ju korrekt.

Thomas 2003-11-21 17:13

Jag är inte haj på asp eller programmering alls men i Perl skulle mjukvaran inte kunna se skillnad på

PID = Request("txtPID")

objConn.Execute "DELETE FROM Prod WHERE PID = PID"

I båda fallen skulle den sätta variabeln.

Kanske objConn.Execute "DELETE FROM Prod WHERE PID == PID"

Skulle funka med == eller asp's grej att skilja på = & ==.

eller förresten ... PID = PID borde ju inte gå ... FormPID = PID.

WN

Viktor 2003-11-21 17:32

"Data type mismatch in criteria expression."

Vet inte vad det betyder riktigt men kan det inte ha
något med att i forumläret står det typ text och i databasen
är det en räknare?

pikkenix 2003-11-21 18:53

objConn.Execute "DELETE FROM Prod WHERE PID = " & CInt(PID)


Alla tider är GMT +2. Klockan är nu 17:33.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson