Avatar billede bpedersen Novice
18. december 2002 - 22:40 Der er 17 kommentarer og
1 løsning

Slette post i DB hvor flere ting skal være opfyldt

Jeg vil slette en post i DB hvor jeg fra en formular får overskrift og password. Kan I se hvad jeg har lavet forkert?

<html>
<title>Indsætte data i databasen</title>
<head>
</head>
<body>
<%
' Databaseforbindelse - husk at angive sti til din database
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("/log/gmdb.mdb")
Conn.Open DSN

' SQL sætning opbygges
strSQL = "Delete FROM DBGM where request.form("overskrift") = overskrift AND request.form("password") = password"


' Luk databaseforbindelse
Conn.Close
Set Conn = Nothing
%>

</body>
</html>


mvh Bpedersen
Avatar billede eagleeye Praktikant
18. december 2002 - 22:42 #1
kolonnenavnet skal være før værdien: og så skald er ' omkring tekst og du skal havde request.form("ccc") ud som variable:

overskrift = 'xxxx'

strSQL = "Delete FROM DBGM where overskrift = '" & request.form("overskrift")& "' AND [password] = '" & request.form("password") & "'"
Avatar billede eagleeye Praktikant
18. december 2002 - 22:43 #2
Grunden til password er i [] er fordi det kan være password bliver tolket som et reserveret ord via SQL.
Avatar billede eagleeye Praktikant
18. december 2002 - 22:44 #3
Og så mangler der også lige en Conn.Execute(stsQL) lige efter strSQL = "DETELE.."


strSQL = "Delete FROM DBGM where overskrift = '" & request.form("overskrift")& "' AND [password] = '" & request.form("password") & "'"
'Udfør SQL sætningen.
Conn.Execute(strSQL)
Avatar billede bpedersen Novice
18. december 2002 - 23:03 #4
eagleeye> Jeg får ingen fejl, men posten bliver ikke slettet i DB. hvad kan der være galt?
Avatar billede eagleeye Praktikant
18. december 2002 - 23:04 #5
Har du fået denne linie med?

Conn.Execute(strSQL)
Avatar billede eagleeye Praktikant
18. december 2002 - 23:08 #6
Hvis ja så prøv at udskrive SQL og tjek at data i SQL sætningen passer med de data som er i databasen.,.:


strSQL = "Delete FROM DBGM where overskrift = '" & request.form("overskrift")& "' AND [password] = '" & request.form("password") & "'"


Response.write strSQL

'Udfør SQL sætningen.
Conn.Execute(strSQL)
Avatar billede erikjacobsen Ekspert
18. december 2002 - 23:08 #7
(kolonnenavnet behøver ikke være før værdien - det plejer man bare...)
Avatar billede bpedersen Novice
18. december 2002 - 23:09 #8
Nej, jeg havde glemt den, men der bliver stadig ikke slettet. DB har flere kolonner, men burde den ikke slette de poster hvor overskrift og password er korrekte?

koden er nu:

<% response.redirect("slet_pass.asp")%>

<html>
<title>Indsætte data i databasen</title>
<head>
</head>
<body>
<%
' Databaseforbindelse - husk at angive sti til din database
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("/log/gmdb.mdb")
Conn.Open DSN

' SQL sætning opbygges
strSQL = "Delete FROM DBGM where overskrift = '" & request.form("overskrift")& "' AND [password] = '" & request.form("password") & "'"

Conn.Execute(strSQL)

' Luk databaseforbindelse
Conn.Close
Set Conn = Nothing
%>

</body>
</html>
Avatar billede eagleeye Praktikant
18. december 2002 - 23:11 #9
Det kommer an på hvad du mener med korrekte ??

Der er AND mellem så både overskrift og password skal være rigtigt for at den bliver slettet, det er ikke nok bare en af kolonnerne er opfyldt. Som sagt så prøv at udskrive SQL sætningen og tjek data er ens med det som står i databasen.
Avatar billede bpedersen Novice
18. december 2002 - 23:31 #10
Jeg er helt newbie indenfor ASP. Og er ikke helt med hvad du mener med at udskrive SQL'en. Mener du at jeg skal lave en side der viser hvad formularen egentlig sender?
Avatar billede erikjacobsen Ekspert
18. december 2002 - 23:33 #11
Og et spørgsmål fra sidelinien: hvad laver den
<% response.redirect("slet_pass.asp")%>
Avatar billede bpedersen Novice
18. december 2002 - 23:35 #12
Det var bare for at komme tilbage til siden der sletter.
Avatar billede eagleeye Praktikant
18. december 2002 - 23:36 #13
Prøv at tilføje denne:

Response.write strSQL

lige før:
Conn.Execute(strSQL)
Avatar billede erikjacobsen Ekspert
18. december 2002 - 23:39 #14
Fjern lige den redirect så du har en chance for at
se en fejlbesked
Avatar billede bpedersen Novice
18. december 2002 - 23:41 #15
det kom der følgende ud af.

Delete FROM DBGM where overskrift = 'kylling' AND kode = 'karry'

Og det er identisk med oplysningerne i DB. Og efter at have fjernet response.redirect..... sletter den som den skal. Kan den overhovedet have haft indflydelse?
Avatar billede eagleeye Praktikant
18. december 2002 - 23:48 #16
hehe.. ja du redirecter før du sletter fra databasen.. Du kom slet ikke ned i det kode som slettede fra DB'en.
Avatar billede bpedersen Novice
18. december 2002 - 23:50 #17
næ, der har du da ret i..  nå men det er vist tid til at se dyner.. Mange tak for hjælpen. Godnat
Avatar billede erikjacobsen Ekspert
18. december 2002 - 23:57 #18
Den redirect bliver først udført efter scriptet har kørt.
Det skrives blot i HTTP-headeren.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester