Avatar billede Keld Nielsen Professor
04. marts 2005 - 21:56 Der er 13 kommentarer og
1 løsning

ret i indtastet og gem det

Ret uerfaren i ASP forsøger jeg mig, men banker hovedet mod væggen i et problem.

Jeg har en side, hvor jeg viser noget fra en database, noget af koden ses her:

SQL = "Select * FROM oenske WHERE ID=" & Request.QueryString("ID")
Set gb = Conn.Execute(SQL)

Response.Write gb("Betegnelse") & "<BR>"
Response.Write "Antal ønsket:  "
Response.Write gb("Antal") & "<BR>"

Jeg ønsker mig derefter at kunne indtastet et tal, der skal trække tallet fra det tal der står i databasen.

Eksempel:
Antal viser 6
jeg taster 2 ind
og ...voila står der nu 4 i databasen.

Jeg kan ikke lige få hul på hvorledes jeg skal løse den opgaven, også med at gemme det i databasen igen.
Avatar billede eagleeye Praktikant
04. marts 2005 - 22:03 #1
Du kan lave en form med et indtastning felt og en gem kanp som sender tallet til siden igen sammen med id, og så en SQL update sætning som opdater tallet.

eks:

'din connection til databasen her.

if request.servervariables("REQUEST_METHOD") = "POST" then
  SQL = "update oenske set antal = antal - " & Request.form("mantal") & " where id = " & Request.QueryString("ID")
  Conn.Execute(SQL)
end if

SQL = "Select * FROM oenske WHERE ID=" & Request.QueryString("ID")
Set gb = Conn.Execute(SQL)

Response.Write gb("Betegnelse") & "<BR>"
Response.Write "Antal ønsket:  "
Response.Write gb("Antal") & "<BR>"
Response.Write "<form mehod=""post"" action=""?id=" & Request.QueryString("ID") & """>Træk fra <input type=""text"" name=""mantal""><input type=""submit"" value=""Gem"" name=""Gem""></form>"
Avatar billede Keld Nielsen Professor
04. marts 2005 - 22:15 #2
Jeg får så flg. fejl i linien med:
Set gb = Conn.Execute(SQL)


Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl, fordi der mangler en operator. i forespørgselsudtrykket "ID=".
/drev_c/Internet/bryllup-asp/valg.asp, line 39
Avatar billede eagleeye Praktikant
04. marts 2005 - 22:18 #3
det tyder på du ikke får IDët overført via querystringen er der id i linket?
Avatar billede Keld Nielsen Professor
04. marts 2005 - 22:20 #4
Det er der, du får lige hele siden:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

    <head>
        <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
        <meta name="generator" content="">
        <title>Bryllup ønskeliste</title>
        <link href="bryllup-for-asp.css" rel="stylesheet" type="text/css">
    </head>

    <body bgcolor="#E4D7CA">
        <%
' vi starter med at oprette forbindelse til vores database
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=c:\inetpub\wwwroot\bryllup\gaver.mdb"
Conn.Open DSN

' og så finder vi dataene, hvor værdien af feltet ID = værdien i vores Session("ID")
SQL = "Select * FROM login WHERE ID=" & Session("ID")
Set rs = Conn.Execute(SQL)

' nu kan vi så lave vores udtræk
%><h4><%
Response.Write "Velkommen til :  "
Response.Write rs("navn") & "<br><br>"
Response.Write "Her skal I/du endelig vælge hvor mange af vedkommende gaver I/du vil give" & "<br>"
Response.Write "Vælg det ønskede antal og tryk på OK"   
%></h4><%

' og så finder vi dataene, hvor værdien af feltet ID = værdien i vores Session("ID")
if request.servervariables("REQUEST_METHOD") = "POST" then
  SQL = "update oenske set antal = antal - " & Request.form("mantal") & " where id = " & Request.QueryString("ID")
  Conn.Execute(SQL)
end if

SQL = "Select * FROM oenske WHERE ID=" & Request.QueryString("ID")
Set gb = Conn.Execute(SQL)
%><h4><%
Response.Write gb("Betegnelse") & "<BR>"
Response.Write "Antal ønsket:  "
Response.Write gb("Antal") & "<BR>"
Response.Write "<form mehod=""post"" action=""?id=" & Request.QueryString("ID") & """>Træk fra <input type=""text"" name=""mantal""><input type=""submit"" value=""Gem"" name=""Gem""></form>"
%><h4><%

'
' her har jeg forsøgt at sætte "din" kode ind, det vil den godt nok ikke !
'

Conn.Close
Set Conn=nothing
%>
    </body>

</html>
Avatar billede eagleeye Praktikant
04. marts 2005 - 22:28 #5
Request.Querystring("id") skal vist være session("id") så prøv at rette koden til dette:


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

    <head>
        <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
        <meta name="generator" content="">
        <title>Bryllup ønskeliste</title>
        <link href="bryllup-for-asp.css" rel="stylesheet" type="text/css">
    </head>

    <body bgcolor="#E4D7CA">
        <%
' vi starter med at oprette forbindelse til vores database
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=c:\inetpub\wwwroot\bryllup\gaver.mdb"
Conn.Open DSN

' og så finder vi dataene, hvor værdien af feltet ID = værdien i vores Session("ID")
SQL = "Select * FROM login WHERE ID=" & Session("ID")
Set rs = Conn.Execute(SQL)

' nu kan vi så lave vores udtræk
%><h4><%
Response.Write "Velkommen til :  "
Response.Write rs("navn") & "<br><br>"
Response.Write "Her skal I/du endelig vælge hvor mange af vedkommende gaver I/du vil give" & "<br>"
Response.Write "Vælg det ønskede antal og tryk på OK" 
%></h4><%

' og så finder vi dataene, hvor værdien af feltet ID = værdien i vores Session("ID")
if request.servervariables("REQUEST_METHOD") = "POST" then
  SQL = "update oenske set antal = antal - " & Request.form("mantal") & " where id = " & session("ID")
  Conn.Execute(SQL)
end if

SQL = "Select * FROM oenske WHERE ID=" & session("ID")
Set gb = Conn.Execute(SQL)
%><h4><%
Response.Write gb("Betegnelse") & "<BR>"
Response.Write "Antal ønsket:  "
Response.Write gb("Antal") & "<BR>"
Response.Write "<form mehod=""post"" action="""">Træk fra <input type=""text"" name=""mantal""><input type=""submit"" value=""Gem"" name=""Gem""></form>"
%><h4><%

'
' her har jeg forsøgt at sætte "din" kode ind, det vil den godt nok ikke !
'

Conn.Close
Set Conn=nothing
%>
    </body>

</html>
Avatar billede Keld Nielsen Professor
04. marts 2005 - 22:35 #6
Hvis jeg gør det får jeg ikke den rigtige ID med over ...altså en forkert gave!

Linket ser f.eks. sådan ud:
http://localhost/drev_c/Internet/bryllup-asp/valg.asp?id=10
Avatar billede eagleeye Praktikant
04. marts 2005 - 22:43 #7
ok så skal det nok være sådan her så det er id i linket der bruges til oenske tabellen:



<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

    <head>
        <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
        <meta name="generator" content="">
        <title>Bryllup ønskeliste</title>
        <link href="bryllup-for-asp.css" rel="stylesheet" type="text/css">
    </head>

    <body bgcolor="#E4D7CA">
        <%
' vi starter med at oprette forbindelse til vores database
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=c:\inetpub\wwwroot\bryllup\gaver.mdb"
Conn.Open DSN

' og så finder vi dataene, hvor værdien af feltet ID = værdien i vores Session("ID")
SQL = "Select * FROM login WHERE ID=" & Session("ID")
Set rs = Conn.Execute(SQL)

' nu kan vi så lave vores udtræk
%><h4><%
Response.Write "Velkommen til :  "
Response.Write rs("navn") & "<br><br>"
Response.Write "Her skal I/du endelig vælge hvor mange af vedkommende gaver I/du vil give" & "<br>"
Response.Write "Vælg det ønskede antal og tryk på OK"
%></h4><%

' og så finder vi dataene, hvor værdien af feltet ID = værdien i vores Session("ID")
if request.servervariables("REQUEST_METHOD") = "POST" then
  SQL = "update oenske set antal = antal - " & Request.form("mantal") & " where id = " & Request.Querystring("ID")
  Conn.Execute(SQL)
end if

SQL = "Select * FROM oenske WHERE ID=" & Request.Querystring("ID")
Set gb = Conn.Execute(SQL)
%><h4><%
Response.Write gb("Betegnelse") & "<BR>"
Response.Write "Antal ønsket:  "
Response.Write gb("Antal") & "<BR>"
Response.Write "<form mehod=""post"" action=""?id="&Request.Querystring("ID")&">Træk fra <input type=""text"" name=""mantal""><input type=""submit"" value=""Gem"" name=""Gem""></form>"
%><h4><%

'
' her har jeg forsøgt at sætte "din" kode ind, det vil den godt nok ikke !
'

Conn.Close
Set Conn=nothing
%>
    </body>

</html>
Avatar billede Keld Nielsen Professor
04. marts 2005 - 22:47 #8
uha, hvor er jeg besværlig, men nu kommer der ikke nogen inputfelt, ej heller teksten "Træk fra" !
Avatar billede eagleeye Praktikant
04. marts 2005 - 22:53 #9
hmm prøv at rettte denne linje:
Response.Write "<form mehod=""post"" action=""?id="&Request.Querystring("ID")&">Træk fra <input type=""text"" name=""mantal""><input type=""submit"" value=""Gem"" name=""Gem""></form>"

Til dette:

Response.Write "<form method=""post"" action=""?id="&Request.Querystring("ID")&""">"
Response.Write "Træk fra <input type=""text"" name=""mantal""><input type=""submit"" value=""Gem"" name=""Gem""></form>"
Avatar billede Keld Nielsen Professor
04. marts 2005 - 22:58 #10
...er du stadig med ???

Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC Microsoft Access-driver] Handlingen skal bruge en opdaterbar forespørgsel.
/drev_c/Internet/bryllup-asp/valg.asp, line 35

linie 35 er:  Conn.Execute(SQL)

...på forhånd tak for tålmodigheden med mig !
Avatar billede eagleeye Praktikant
04. marts 2005 - 23:03 #11
Det er fordi den folder database filen ligger skal give skrive rettighed til brugeren IUSR_maskinavn (Internet Gæst). Du kan gøre sådan her for at give skriveretttighed:

- Vælg den folder databasen ligger i
- Højreklik og vælg Properties
- Vælg security/sikkerhed fanen
- Hvis brugeres ikke findes tryk på Add og tilføj IUSR_maskinnavn.
- Giv så IUSR_maskinnavn skriverettighed / write

Har XP er det ikke sikkert du har sikkerhed's fanen så skal du gøre sådan her for at få den frem:
- Åbn denne computer
- Klik på menupunktet Funktioner
- Mappeindstillinger
- Klik på fanen Vis
- Fjern flueben i "Brug Enkel Fildelign" så får du adgang til en fane der hedder sikkerhed,
Avatar billede Keld Nielsen Professor
04. marts 2005 - 23:14 #12
OK ...den kigger jeg på i morgen ...øjenene vil ikke rigtig mere!

Smid et svar ...du fortjener under alle omstændigheder en masse point !
Avatar billede eagleeye Praktikant
04. marts 2005 - 23:17 #13
Ok her et svar :)
Avatar billede Keld Nielsen Professor
05. marts 2005 - 08:57 #14
Masser af tak for hjælpen ...du er da tålmodig!

...og jeg får masser af ro på hjemmefonten, det er min papdatter der skal giftes!
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