Avatar billede butcher Nybegynder
28. april 2002 - 11:18 Der er 9 kommentarer og
1 løsning

opdatere i en database via en form

Opretter lige et nyt spørgsmål, da det gamle blev lidt roddet (ref:http://www.eksperten.dk/spm/204017)

har følgende i update.asp:

<form method=POST action="gemup.asp">
<%
set cn = server.createobject("ADODB.Connection")
constr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("server.mdb")
cn.connectionstring=constr
cn.open

sql = "SELECT * from server where spil='cs' order by servernavn"
set rest = cn.execute(sql)

if Rest.eof then
    response.write "Der er ikke tilføjet nogle servere"
    end if

Do While Not Rest.EOF
response.write "<tr align=center><td><input type=text size=20 name=servernavn value=""" & rest("servernavn") & """></td><td><input type=text size=20 name=spil value=""" & rest("spil") & """></td><td><input type=text size=25 name=ip value=""" & rest("ip") & """></td><td><input type=text size=20 name=gemtdato value=""" & rest("gemtdato") & """></td><td><input type=text size=20 name=url value=""" & rest("url") & """></td><td><a href=slet.asp?name=" & rest("ID") & "><font color=black>Slet server</font></a></td></tr>"
response.write "<input type=hidden name=id value=""" & rest("ID") & """>"
rest.MoveNext
loop


rest.close
cn.close
set cn=nothing
%>
<input type="submit" value="Send"><input type="reset" value="Nulstil">
</form>

og

følgende i gemup.asp:

<%
Option Explicit
dim Sname, SSpil, Sip, Surl, SGD, cn, constr, connectionstring, sql
Sname=replace(request.form("servernavn"),"'","''")
Sspil=replace(request.form("spil"),"'","''")
Sip=replace(request.form("ip"),"'","''")
Surl=replace(request.form("url"),"'","''")
SGD=now

set cn = server.createobject("ADODB.Connection")
constr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("update.mdb")
cn.connectionstring=constr
cn.open


sql="insert into server (spil, servernavn, ip, gemtdato, url) WHERE ID = (Request.Form(""id"")"


sql = sql & " values ('"& Sspil &"','"& Sname &"','"& Sip &"','"& SGD &"','"& Surl &"')"

cn.execute sql

cn.close
set cn=nothing
%>


men denne kode giver mig:
Syntax error in INSERT INTO statement

hvis jeg fjerne id fra min sql sætning og hidden id fra <form> skriver den godt nok data'erne, men ikke korrekt, den laver et nyt recordset hvor dem smider alle data'erne ind i.

Avatar billede cbp Nybegynder
28. april 2002 - 11:23 #1
Man kan ikke sætte en where på en insert. Hvis du gerne vil opdatere en eksisterende record skal du bruge:

sql="update server set spil = '"& Sspil &"', servernavn = '"& Sname &"', ip = '"& Sip &"', gemtdato = '"& SGD &"', url = '"& Surl &"' WHERE ID = " & Request.Form("id")
Avatar billede butcher Nybegynder
28. april 2002 - 11:34 #2
ja ok, jeg har prøvet følgende med min gemup.asp:

<%
Option Explicit
dim Sname, SSpil, Sip, Surl, SGD, cn, constr, connectionstring, sql
Sspil=replace(request.form("spil"),"'","''")
Sname=replace(request.form("servernavn"),"'","''")
Sip=replace(request.form("ip"),"'","''")
Surl=replace(request.form("url"),"'","''")
SGD=now

set cn = server.createobject("ADODB.Connection")
constr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("update.mdb")
cn.connectionstring=constr
cn.open


sql="update server set spil = '"& Sspil &"', servernavn = '"& Sname &"', ip = '"& Sip &"', gemtdato = '"& SGD &"', url = '"& Surl &"' WHERE ID = " & Request.Form("id")


cn.execute sql

cn.close
set cn=nothing
%>

men jeg får denne fejl:
Microsoft JET Database Engine error '80040e14'

Syntax error (comma) in query expression 'ID = 80, 82, 77, 78, 53, 79, 81, 75, 76'.

gemup5.asp, line 19
Avatar billede butcher Nybegynder
28. april 2002 - 11:36 #3
jeg prøvede at smide en: & "'" ind bagved & Request.Form("id") da den så ikke afsluttet ud, men stadig samme fejl.
Avatar billede cms Nybegynder
28. april 2002 - 11:42 #4
er din ID ikke kun et tal? Eller skal den matche alle disse tal?
Avatar billede cbp Nybegynder
28. april 2002 - 11:47 #5
Det er fordi alle formfelter har samme navn. Dermed bliver alle felter med eks. navnet id lagt sammen adskilt af kommaer. Du bliver nødt til enten at navngive alle felterne på form-siden forskelligt, eks.:

Do While Not Rest.EOF
response.write "<tr align=center><td><input type=text size=20 name=servernavn" & rest("ID") & " value=""" & rest("servernavn") & """></td><td><input type=text size=20 name=spil" & rest("ID") & " value=""" & rest("spil") & """></td><td><input type=text size=25 name=ip" & rest("ID") & " value=""" & rest("ip") & """></td><td><input type=text size=20 name=gemtdato" & rest("ID") & " value=""" & rest("gemtdato") & """></td><td><input type=text size=20 name=url" & rest("ID") & " value=""" & rest("url") & """></td><td><a href=slet.asp?name=" & rest("ID") & "><font color=black>Slet server</font></a></td></tr>"
response.write "<input type=hidden name=id value=""" & rest("ID") & """>"
rest.MoveNext
loop

Herved kommer alle formfelterne til at hedde eks. IP[recordid]

På modtager-siden kan du så eks gennemløbe alle id'er fra databasen igen:

<%
set cn = server.createobject("ADODB.Connection")
constr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("server.mdb")
cn.connectionstring=constr
cn.open

sql = "SELECT * from server where spil='cs' order by servernavn"
set rest = cn.execute(sql)


Do While Not Rest.EOF
Sspil=replace(request.form("spil" & rest("ID")),"'","''")
Sname=replace(request.form("servernavn" & rest("ID")),"'","''")
Sip=replace(request.form("ip" & rest("ID")),"'","''")
Surl=replace(request.form("url" & rest("ID")),"'","''")
SGD=now

sql="update server set spil = '"& Sspil &"', servernavn = '"& Sname &"', ip = '"& Sip &"', gemtdato = '"& SGD &"', url = '"& Surl &"' WHERE ID = " & rest("ID")

cn.execute sql

rest.MoveNext
Loop
Avatar billede kayb Nybegynder
28. april 2002 - 11:52 #6
Der må ikke være komma i din WHERE sætning du skal gøre følgende:
sql="update server set spil = '"& Sspil &"', servernavn = '"& Sname &"', ip = '"& Sip &"', gemtdato = '"& SGD &"', url = '"& Surl &"' WHERE ID = " & id1 & " OR ID=" & id2 & " OR ID = " & id3
O.S.V.
Så du må nok lave en Split funktion på din request.form("ID")
Avatar billede eagleeye Praktikant
28. april 2002 - 12:23 #7
kayb>> Det er ikke helt rigtigt. Man kan faktisk med fordel havde en kommastreng og benytte IN i SQL som dette:
"SELECT ..... WHERE ID IN (2,3,4,5,6,7,8)"
Avatar billede eagleeye Praktikant
28. april 2002 - 12:27 #8
Problemmet er vel mere at du har mange data du kan opdate men kun En form for alle data fly <form> og submit in i do loope'et sådan her:



har følgende i update.asp:

<%
set cn = server.createobject("ADODB.Connection")
constr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("server.mdb")
cn.connectionstring=constr
cn.open

sql = "SELECT * from server where spil='cs' order by servernavn"
set rest = cn.execute(sql)

if Rest.eof then
    response.write "Der er ikke tilføjet nogle servere"
    end if

Do While Not Rest.EOF
response.write "<form method=""POST"" action=""gemup.asp"" name=""form1"">"
response.write "<tr align=center><td><input type=text size=20 name=servernavn value=""" & rest("servernavn") & """></td><td><input type=text size=20 name=spil value=""" & rest("spil") & """></td><td><input type=text size=25 name=ip value=""" & rest("ip") & """></td><td><input type=text size=20 name=gemtdato value=""" & rest("gemtdato") & """></td><td><input type=text size=20 name=url value=""" & rest("url") & """></td><td><a href=slet.asp?name=" & rest("ID") & "><font color=black>Slet server</font></a></td></tr>"
response.write "<input type=hidden name=id value=""" & rest("ID") & """>"
Response.Write "<input type=""submit"" value=""Send"" name=""submit1"">"
Response.Write "<input type=""reset"" value=""Nulstil"" name=""reset1"">"
Response.Write "</form>"
rest.MoveNext
loop


rest.close
cn.close
set cn=nothing
%>
Avatar billede butcher Nybegynder
28. april 2002 - 12:31 #9
cbp var hurtigst ude her :D, en fin rettelse om virkede fint, det er jeg MEGET glad for :)

cbp hvis du vil have dine 200 point, så smid et svar, det har du fortjent.
Avatar billede cbp Nybegynder
28. april 2002 - 12:33 #10
Tak :-)
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