Avatar billede fuzzy2 Nybegynder
12. november 2001 - 17:52 Der er 21 kommentarer og
2 løsninger

Input indsættelse i en database Access

Jeg vil gerne lave en database hvor jeg kan skrive en tekst i en tekst-input-boks. Og så trykke gem og så bliver det man har skrevet gemt i en database under et bestemt ID-nummer. Det ID-nummer ligger allerede i adressen så man kan vide hvad for en kolonne-række det er.

Hvis jeg f.eks. kommer ind på siden www.domain.dk/database.asp?id=1 så er ID nr. 1 på siden skal der så være en input-boks hvor der bliver trækket dataen ud fra databasen efter hvilke ID det har (altså det der står i adressen). Efter at dataen fra db\'en står i input-boksen så skal man kunne ændre eller skrive noget nyt i boksen og så trykke gem og gemme det i db\'en under det ID-nummer man arbejder med.

Håber det er forståligt! Jeg vil blive rigtig rigtig glad hvis der var en der havde et script eller kode der gjorde dette!

Med venlig hilsen
Troels Siggaard
Avatar billede prof2 Nybegynder
12. november 2001 - 17:59 #1
Hvad kan du selv? Har du lavet en database?? Har du fået det til at skrive hvad der står i input-noksen i databasen ?
Avatar billede somaliomar Praktikant
12. november 2001 - 18:04 #2
Jeg tror, jeg har en liggende...
Avatar billede mmt Nybegynder
12. november 2001 - 18:05 #3
c.open \"testbase\", strDSN, adOpenDynamic, adLockOptimistic, adCmdTable

c.find \"Id=\" & request.querystring(\"ID\")

c(\"Data\") = request.form(\"Data\")

c.update
c.close
set c = Nothing

Det her kan gøre det. Men denne del henter elementet frem og lader dig ændre det med dataen fra en form.
Avatar billede fuzzy2 Nybegynder
12. november 2001 - 18:06 #4

Svar til \"prof2\":
Jeg har lavet en database Access 2000, og jeg har dette script:


<%
Set Conn = Server.CreateObject(\"ADODB.Connection\")
DSN = \"DRIVER={Microsoft Access Driver (*.mdb)}; \"
DSN = DSN & \"DBQ=\" & Server.MapPath (\"main.mdb\")
Conn.Open DSN

SQL = \"SELECT * FROM main WHERE id=\" & Request(\"id\") &\"\"
Set rs = Conn.Execute(SQL)

if Request.ServerVariables(\"REQUEST_METHOD\") = \"POST\" then
rs(\"name\") = Server.HTMLEncode(Request(\"name\"))
rs.update                               
end if

%>
<form method=\"post\" action=\"popup.asp\" >
Kommentar til ID nr. <%=Request.Querystring(\"id\")%>: <input type=\"text\" name=\"navn\" value=\"<%=rs(\"navn\")%>\">
<input type=\"submit\" value=\"Gem\">
</form>
</div>
</body></html>
<%
Conn.Close
Set Conn = Nothing
%>


Men den siger en fejl når jeg trykker gem eller prøver at ændre dataen og så trykker gem!


----------FEJL START----------------
Tekniske oplysninger (for supportteknikere)

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=\".
/domain/popup.asp, line 14


Browsertype:
Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)

Side:
POST 8 bytes to /domain/popup.asp

POST Data:
navn=2he
---------------FEJL SLUT---------------------

Husk at id ligger i adressen (f.eks. www.domain.dk/popup.asp?id=1)

Mvh Troels
Avatar billede somaliomar Praktikant
12. november 2001 - 18:07 #5
Her er den lidt redigeret:

<html>
<body>

<%
SQL = \"SELECT * FROM [DinTabel] WHERE ID = \'\" & Request.Querystring(\"ID\") & \"\'\"
Set rs = Conn.Execute(SQL)
%>

<form method=\"POST\" action=\"update.asp\">
  <input type=\"text\" name=\"id\" size=\"20\" value=\"<%=rs(\"ID\")%>\"><br>
  <input type=\"text\" name=\"text\" size=\"20\" value=\"<%=rs(\"Text\")%>\"><br>
  <input type=\"submit\" value=\"Ret i basen!\"><input type=\"reset\" value=\"Sluk\">
</form>

<%
Conn.Close
Set Conn = Nothing
%>

</body>
</html>
Avatar billede somaliomar Praktikant
12. november 2001 - 18:11 #6
Update.asp indeholder så:

<%
Set Conn = Server.CreateObject(\"ADODB.Connection\")
DSN = \"DRIVER={Microsoft Access Driver (*.mdb)}; \"
DSN = DSN & \"DBQ=\" & Server.MapPath (\"main.mdb\")
Conn.Open DSN

strSQL = \"Update [tabellen] set \"
strSQL = strSQL & \"ID= \" & Request.Querystring(\"ID\") & \", \"
strSQL = strSQL & \"Navn= \'Navnet\' \"
strSQL = strSQL & \" Where Id = \" & Request.Querystring(\"ID\")

\' SQL sætning eksekveres
Conn.Execute(strSQL)

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

Avatar billede somaliomar Praktikant
12. november 2001 - 18:13 #7
strSQL = strSQL & \"Navn= \'Navnet\' \" >> strSQL = strSQL & \"Text= \'\" & Request.Querystring(\"text\")  & \"\' \"
Avatar billede m-koldsgaard Nybegynder
12. november 2001 - 18:18 #8
fuzzy2 - i din egen kode skal du hverfald havde ændret:
Kommentar til ID nr. <%=Request.Querystring(\"id\")%>: <input type=\"text\" name=\"navn\" value=\"<%=rs(\"navn\")%>\">
til:
Kommentar til ID nr. <%=Request.Querystring(\"id\")%>: <input type=\"text\" name=\"name\" value=\"<%=rs(\"name\")%>\">

Hvis altså det skal passe til det andet :-)

Avatar billede fuzzy2 Nybegynder
12. november 2001 - 18:39 #9
Jeg har nu prøvet din kode - somailomar, men der kommer stadig en fejl!

----- Koden for siden: \"popup.asp\" ------

<html>
<body>

<%
SQL = \"SELECT * FROM main WHERE id = \'\" & Request.Querystring(\"id\") & \"\'\"
Set rs = Conn.Execute(SQL)
%>

<form method=\"POST\" action=\"navndb.asp\">
  <input type=\"text\" name=\"id\" size=\"20\" value=\"<%=rs(\"id\")%>\"><br>
  <input type=\"text\" name=\"navn\" size=\"20\" value=\"<%=rs(\"navn\")%>\"><br>
  <input type=\"submit\" value=\"Ret i basen!\"><input type=\"reset\" value=\"Sluk\">
</form>

<%
Conn.Close
Set Conn = Nothing
%>

</body>

</html>

------------- Slut på siden: popup.asp ------

og update siden:

------------- Start på siden: navndb.asp --------

<%
Set Conn = Server.CreateObject(\"ADODB.Connection\")
DSN = \"DRIVER={Microsoft Access Driver (*.mdb)}; \"
DSN = DSN & \"DBQ=\" & Server.MapPath (\"main.mdb\")
Conn.Open DSN

strSQL = \"UPDATE main SET \"
strSQL = strSQL & \"id= \" & Request.Querystring(\"id\") & \", \"
strSQL = strSQL & \"navn= \'\" & Request.Querystring(\"navn\")  & \"\' \"
strSQL = strSQL & \" WHERE id = \" & Request.Querystring(\"id\")

Conn.Execute(strSQL)

Conn.Close
Set Conn = Nothing
%>


----------- Slut på siden: navndb.asp ----------

Fejlen kommer inden jeg når at komme ind på siden.
Dette er hvad den siger:

---- START PÅ FEJL

Tekniske oplysninger (for supportteknikere)

Fejltype:
Der opstod en Microsoft VBScript-kørselsfejl (0x800A01A8)
Et objekt er obligatorisk: \'\'
/domain/popup.asp, line 9


Browsertype:
Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)

Side:
GET /domain/popup.asp

--- SLUT PÅ FEJL

Avatar billede somaliomar Praktikant
12. november 2001 - 19:34 #10
popup.asp:

<html>
<body>

<%
SQL = \"SELECT * FROM [DinTabel] WHERE ID = \'\" & Request.Querystring(\"ID\") & \"\'\"
Set rs = Conn.Execute(SQL)
%>

<form method=\"POST\" action=\"update.asp\">
  <input type=\"text\" name=\"id\" size=\"20\" value=\"<%=rs(\"ID\")%>\"><br>
  <input type=\"text\" name=\"navn\" size=\"20\" value=\"<%=rs(\"navn\")%>\"><br>
  <input type=\"submit\" value=\"Ret i basen!\"><input type=\"reset\" value=\"Sluk\">
</form>

<%
Conn.Close
Set Conn = Nothing
%>

</body>
</html>


-----------------------
update.asp:


<%
Set Conn = Server.CreateObject(\"ADODB.Connection\")
DSN = \"DRIVER={Microsoft Access Driver (*.mdb)}; \"
DSN = DSN & \"DBQ=\" & Server.MapPath (\"main.mdb\")
Conn.Open DSN

strSQL = \"UPDATE main SET \"
strSQL = strSQL & \"ID= \" & Request.Querystring(\"id\") & \", \"
strSQL = strSQL & \"Navn= \'\" & Request.Querystring(\"navn\") & \"\' \"
strSQL = strSQL & \" Where Id = \" & Request.Querystring(\"id\")
Conn.Execute(strSQL)

Conn.Close
Set Conn = Nothing
%>

<h1>Ja, den skulle være gemt!<h1>
Avatar billede fuzzy2 Nybegynder
12. november 2001 - 19:42 #11
Den siger stadig:
----------------
Tekniske oplysninger (for supportteknikere)

Fejltype:
Der opstod en Microsoft VBScript-kørselsfejl (0x800A01A8)
Et objekt er obligatorisk: \'\'
/domain/popup.asp, line 9


Browsertype:
Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)

Side:
GET /domain/popup.asp

Klokkeslæt:
12. november 2001, 19:39:26

------

Desuden har du skrevet [DinTabel], på siden \"popup.asp\" men på \"update.asp\" har du skrevet \"main\". Der hvor du har skrevet [DinTabel] skal der da stå \"main\" når det er det tabellen hedder ikke??

Mvh Troels
Avatar billede somaliomar Praktikant
12. november 2001 - 20:10 #12
Det er rigtig.

Prøv det her:
SQL = \"SELECT * FROM main WHERE ID = \" & Request.Querystring(\"ID\") & \"\"

i stedet for:
SQL = \"SELECT * FROM [DinTabel] WHERE ID = \'\" & Request.Querystring(\"ID\") & \"\'\"
Avatar billede fuzzy2 Nybegynder
12. november 2001 - 21:21 #13
Nu siger den bare dette:

Fejltype:
Der opstod en Microsoft VBScript-kørselsfejl (0x800A01A8)
Et objekt er obligatorisk: \'\'
/domain/popup.asp, line 9

-----------------------------------------------
7.  <%
8.  SQL = \"SELECT * FROM main WHERE ID = \" & Request.Querystring(\"ID\") & \"\"
9.  Set rs = Conn.Execute(SQL)
10.  %>

Kan dette hjælpe?

Jeg synes det bliver mere og mere mærkeligt!
Avatar billede somaliomar Praktikant
12. november 2001 - 22:05 #14
7.  <%
8.  SQL = \"SELECT * FROM main WHERE ID = \" & Request.Querystring(\"ID\")
9.  Set rs = Conn.Execute(SQL)
10.  %>
Avatar billede somaliomar Praktikant
12. november 2001 - 22:06 #15
Det var mig der klummede i det. Sorry!
Avatar billede fuzzy2 Nybegynder
12. november 2001 - 22:22 #16
Jeg er ked af at sige det men den kommer med denne fejl:

Fejltype:
Der opstod en Microsoft VBScript-kørselsfejl (0x800A01A8)
Et objekt er obligatorisk: \'\'
/domain/popup.asp, line 9

----------

Jeg har ingen anelse om hvad dette går ud på.
Avatar billede somaliomar Praktikant
12. november 2001 - 22:37 #17
Har du husket at kalde scriptet med id: www.domain.dk/database.asp?id=1


Prøv lige det her:

<%

If Request.Querystring(\"ID\") <> \"\" Then
  SQL = \"SELECT * FROM main WHERE ID = \" & Request.Querystring(\"ID\")
  Set rs = Conn.Execute(SQL)

%>

<form method=\"POST\" action=\"update.asp\">
  <input type=\"text\" name=\"id\" size=\"20\" value=\"<%=rs(\"ID\")%>\"><br>
  <input type=\"text\" name=\"navn\" size=\"20\" value=\"<%=rs(\"navn\")%>\"><br>
  <input type=\"submit\" value=\"Ret i basen!\"><input type=\"reset\" value=\"Sluk\">
</form>

<%
Conn.Close
Set Conn = Nothing
End if

%>
Avatar billede fuzzy2 Nybegynder
12. november 2001 - 23:00 #18
Jeg har fundet ud af det problem! Det var fordi jeg ikke havde sat database conn. scriptet ind på siden. Men der er stadig et problem.

Sådan skal hele \"popup.asp\" siden se ud:

<-->
<html>
<body>

<%
Set Conn = Server.CreateObject(\"ADODB.Connection\")
DSN = \"DRIVER={Microsoft Access Driver (*.mdb)}; \"
DSN = DSN & \"DBQ=\" & Server.MapPath (\"main.mdb\")
Conn.Open DSN

SQL = \"SELECT * FROM main WHERE id = \" & Request.Querystring(\"id\")
Set rs = Conn.Execute(SQL)
%>
<form method=\"POST\" action=\"navndb.asp\">
  <input type=\"text\" name=\"id\" size=\"20\" value=\"<%=rs(\"id\")%>\"><br>
  <input type=\"text\" name=\"navn\" size=\"20\" value=\"<%=rs(\"navn\")%>\"><br>
  <input type=\"submit\" value=\"Ret i basen!\"><input type=\"reset\" value=\"Sluk\">
</form>

<%
Conn.Close
Set Conn = Nothing
%>

</body>
</html>

<-->
...jeg har bare ændret update.asp til navndb.asp!

Men nu kommer der et nyt problem, det er når jeg trykker på \"Ret i basen!\" så kommer fejlen:

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

Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl i UPDATE-sætningen.
/domain/navndb.asp, line 11


Browsertype:
Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)

Side:
POST 32 bytes to /domain/navndb.asp

POST Data:
id=2&navn=dette+er+en+test+tekst

-------

Mvh Troels :o)
Avatar billede somaliomar Praktikant
13. november 2001 - 08:49 #19
Jeg glemt lige at kigge på, at når man sender data med POST-metoden, så skal man modtage dataene med Request.Form(\"Ipnutname\"). Her er den rettede \'navndb.asp\':

<html>
<body>

<%
Set Conn = Server.CreateObject(\"ADODB.Connection\")
DSN = \"DRIVER={Microsoft Access Driver (*.mdb)}; \"
DSN = DSN & \"DBQ=\" & Server.MapPath (\"main.mdb\")
Conn.Open DSN

SQL = \"UPDATE main SET ID = \'\" & Request.Form(\"id\") & \"\' , Navn = \'\" & Request.Form(\"navn\") & \"\' WHERE ID = \" Request.Form(\"id\")
Conn.Execute(SQL)

Conn.Close
Set Conn = Nothing
%>

<h1>Databasen er nu opdateret!<h1>

</body>
</html>
Avatar billede fuzzy2 Nybegynder
13. november 2001 - 21:21 #20
Set blev lidt sent, men når jeg trykker \"Ret i basen!\". Så kommer der denne fejl:

Fejltype:
Der opstod en Microsoft VBScript-kompileringsfejl (0x800A0401)
Slut på sætning var ventet
/arentoftfilm/navndb.asp, line 10, column 110
SQL = \"UPDATE main SET ID = \'\" & Request.Form(\"id\") & \"\' , Navn = \'\" & Request.Form(\"navn\") & \"\' WHERE ID = \" Request.Form(\"id\")
-------------------------------------------------------------------------------------------------------------^


Med venlig hilsen

Troels :o)
Avatar billede fuzzy2 Nybegynder
13. november 2001 - 21:22 #21
Øhh, der skulle ikke stå: Set men Sorry! For jeg har ikke haft tid til at afprøve din nye update side før nu men der kommer den fejl som du kan se.
Avatar billede fuzzy2 Nybegynder
13. november 2001 - 21:32 #22
Der må du igen undskylde, jeg har selv fundet fejlen. Det var det der &-tegn der manglede. Jeg har lavet det lidt om igen så nu ser siderne altså sådan du:

----- POPUP.ASP ----- START

<html>

<body>

<%
Set Conn = Server.CreateObject(\"ADODB.Connection\")
DSN = \"DRIVER={Microsoft Access Driver (*.mdb)}; \"
DSN = DSN & \"DBQ=\" & Server.MapPath (\"main.mdb\")
Conn.Open DSN

SQL = \"SELECT * FROM main WHERE id = \" & Request.Querystring(\"ID\")
Set rs = Conn.Execute(SQL)
%>
<form method=\"POST\" action=\"navndb.asp\">
  <input type=\"text\" name=\"id\" size=\"20\" value=\"<%=rs(\"id\")%>\"><br>
  <input type=\"text\" name=\"navn\" size=\"20\" value=\"<%=rs(\"navn\")%>\"><br>
  <input type=\"submit\" value=\"Ret i basen!\"><input type=\"reset\" value=\"Sluk\">
</form>

<%
Conn.Close
Set Conn = Nothing
%>

</body>

</html>

----- POPUP.ASP ----- SLUT

og

----- DBNAVN.ASP ----- START

<%
Set Conn = Server.CreateObject(\"ADODB.Connection\")
DSN = \"DRIVER={Microsoft Access Driver (*.mdb)}; \"
DSN = DSN & \"DBQ=\" & Server.MapPath (\"main.mdb\")
Conn.Open DSN

SQL = \"UPDATE main SET navn = \'\" & Request.Form(\"navn\") & \"\' WHERE id = \"& Request.Form(\"id\")
Conn.Execute(SQL)

Conn.Close
Set Conn = Nothing
%>

----- DBNAVN.ASP ----- SLUT

...og alting virker!

Mange tak for din hjælp, tid og viden!

Med venlig hilsen
Troels Siggaard
Avatar billede somaliomar Praktikant
13. november 2001 - 23:30 #23
Selv tak og tak for points!

/Omar
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