Avatar billede butcher Nybegynder
28. april 2002 - 00:31 Der er 24 kommentarer og
1 løsning

Opdatere i en database ved brug af forms

Hmmm kan det da være så svært.

Jeg har en update.asp der sådan her ud:

<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>" & rest("spil") & "</td><td><input type=text size=25 name=ip value=""" & rest("ip") & """></td><td>" & rest("gemtdato") & "</td><td>" & rest("url") & "</td><td><a href=slet.asp?name=" & rest("ID") & "><font color=black>Slet server</font></a></td></tr>"
rest.MoveNext
loop


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

den viser fint mine data og de 2 felter jeg vil rette i, kan jeg også rette i, men når der skal opdateres, så kommer problemmerne :(

Jeg kalder ved brug af den form der, gemup.asp og den ser sådan her ud:

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

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="insert into server (servernavn, ip, gemtdato)"

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

cn.execute sql

cn.close
set cn=nothing
%>

nå jeg kører den snakker den om jeg sætter færer data ind i databasen, jeg har prøvet med noget:

sql="update into server (servernavn, ip, gemtdato)"

men det virker ikke rigtigt, hvad skal jeg gøre her.
Avatar billede kimiwan Nybegynder
28. april 2002 - 00:37 #1
Hvad er den helt præcise fejlmelding, du får, og hvad for en linje (plus et par linjer før og efter) er det, det drejer sig om?

Det virker en smule uoverskueligt med al den kode og snak indimellem på denne tid af morgenen :o)
Avatar billede soes Nybegynder
28. april 2002 - 00:58 #2
prøv at udskrive din sql sætning med response.write sql, i første omgang. herved kan du se om der skulle være en evt. fejl i din sætning.

/Søren Søndergård
Avatar billede butcher Nybegynder
28. april 2002 - 01:15 #3
jeg får følgende fejl:
Fejltype:
Microsoft JET Database Engine (0x80040E57)
Feltet er for kort til den mængde data, du forsøger at tilføje. Prøv at indsætte færre data.
/gemup.asp, line 17


Browsertype:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)

Side:
POST 460 bytes to /gemup.asp

POST Data:
servernavn=Another+Worl&ip=195.184.125.89%3A27015&servernavn=Clan+LSD+server&ip=212.242.53.158%3A27015&servernavn=Goar.dk+-+Fisken&ip=212.97.202.28%3A27016&servernavn=Goar.dk+-+Fisken+2&ip=212.97.202. .

problemmet er jeg har ingen anelse om hvordan jeg kommer vidre fra følgende, tænkte der måske nogle der vidste dette
Avatar billede butcher Nybegynder
28. april 2002 - 01:17 #4
hvis jeg laver en write sql:

insert into server (servernavn, ip, gemtdato) values ('Another Worl, Clan LSD server, Goar.dk - Fisken, Goar.dk - Fisken 2, HODclan.dk, Mofo PUB, Seth.dk, Stivan on top, Stivans steff in you','195.184.125.89:27015, 212.242.53.158:27015, 212.97.202.28:27016, 212.97.202.28:27015, 62.242.148.42:27015, 195.184.98.9:27015, 217.157.169.133:27015, 217.157.136.156:27015, stivan.dyndns.org:27015','28-04-2002 01:16:29') tak

så det ser da ud til at den henter de korrekte data, men den vil ikke opdatere, er det mig der er helt galt på den, kan man ikke bruge en sådan en metode her eller skal man noget andet? Så helst at man kunne gøre det på en lign. måde her, men er da åben for forslag.
Avatar billede dsjk Novice
28. april 2002 - 01:48 #5
hmmm, er det en access database du gemmer i...
Prøv at sætte feltstørrelsen op på dine felter, sæt dem evt. til 255

dsjk
Avatar billede eagleeye Praktikant
28. april 2002 - 01:49 #6
Fejlen sige:
"Feltet er for kort til den mængde data, du forsøger at tilføje. Prøv at indsætte færre data."

Er dine felter defineret som tekst i databasen? Hvis ja, hvad er så max længden på teksten? Og er Max længden mindre end det antal tegn du prøver at indsætte?

Eks: du forsøger at ligge ca. 140 karekter ind i kolonnen "servernavn" og ca. 200 ind i kolonne "IP". Hvis du har brugt Acces til at lave database filen så er tekst kolonne default sat til 50 karakter i max længde på en streng.

Så enten ændre max længden til 300 eller mere, eller lav kolonne typen om fra tekst til notat, notat er ubegrænset længde.
Avatar billede dsjk Novice
28. april 2002 - 01:53 #7
tekstfelter har en begrænsning i access til 255 tegn, så hvis det er derover skal du, som eagleeye skriver, bruge et notatfelt.

dsjk
Avatar billede butcher Nybegynder
28. april 2002 - 01:57 #8
ok jeg har prøvet at ændre til et notat, samme fejl:

Feltet er for kort til den mængde data, du forsøger at tilføje. Prøv at indsætte færre data.
/gemup.asp, line 17

jeg har også prøvet at sætte tekst i access til max som er 255 i følge acces.

men kan det passe at sql sætningen: sql="insert into server (servernavn, ip, gemtdato)" kan bruges
Avatar billede butcher Nybegynder
28. april 2002 - 01:59 #9
hmm der prøvede jeg at ændre alle felter i databasen også dem der ikke skulle skrives til og så melder den igen fejl, men gemmer ikke noget, den går bare til næste side og siger tak som de er gemt...men det er de ikke..
Avatar billede loukas Mester
28. april 2002 - 02:01 #10
Hejsa !!!
Jeg ville lave det lidt anderledes
UPDATE server SET servernavn ='" & (Request.Form("SN")) & "', ip ='" & (Request.Form("ip")) & "', dato ='" & (Request.Form("gemtdato")) & "'"  & "WHERE ID = '" & (Request.Form("id")) & "'"

også lave et <input type hidden value="Id På Post"> i din <form>
Avatar billede butcher Nybegynder
28. april 2002 - 02:09 #11
hmm der er sjovt, for når jeg laver en response write komme hele smørende om følgende data bliver insert into server bla. bla. bla. men der sker ikke meget
Avatar billede loukas Mester
28. april 2002 - 02:16 #12
Hmm, er ikke helt med, har du lavet en:
Response.Write SQL
Avatar billede butcher Nybegynder
28. april 2002 - 02:19 #13
ja på de andre forslag fra de 2 andre, men der opdatere den ikke data'erne, jeg er igang med dit forslag.
Avatar billede butcher Nybegynder
28. april 2002 - 02:22 #14
hmm jeg får en:

Microsoft JET Database Engine (0x80040E10)
Der er ikke angivet nogen værdi for en eller flere krævede parametre.
/gemup2.asp, line 12

min gemup2.asp ser sådan her ud:
<%
Option Explicit
dim cn, constr, connectionstring, sql

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="UPDATE server SET servernavn ='" & (Request.Form("servernavn")) & "', ip ='" & (Request.Form("ip")) & "', dato ='" &

(Request.Form("gemtdato")) & "'"  & "WHERE ID = '" & (Request.Form("id")) & "'"

cn.execute sql

cn.close
set cn=nothing
%>
<html>
<head>
<title>Tak for bidraget</title>
</head>
<body>
tak

</html>
Avatar billede loukas Mester
28. april 2002 - 02:29 #15
OK, det er fordi felterne ikke stemmer helt, dem skal du lige rette til ;-)
Og i din <form> skal have følgende sat ind:
<input type="hidden" value="" & rest("ID") & "">
Avatar billede loukas Mester
28. april 2002 - 02:34 #16
Din Form:

<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>
Response.Write "<input type=text size=20 name=servernavn value=""" & rest("servernavn") & """></td>"
Response.Write "<td>" & rest("spil") & "</td>"
Response.Write "<td><input type=text size=25 name=ip value=""" & rest("ip") & """></td>"
Response.Write "<td>" & rest("gemtdato") & "</td>"
Response.Write "<td>" & rest("url") & "</td>
Response.Write "<td><a href=slet.asp?name=" & rest("ID") & "><font color=black>Slet server</font></a></td></tr>"
Response.Write "<input type=hidden value="" & rest("ID") & "">"
rest.MoveNext
loop


rest.close
cn.close
set cn=nothing
%>
<input type="submit" value="Send"><input type="reset" value="Nulstil">
</form>
Avatar billede butcher Nybegynder
28. april 2002 - 02:35 #17
he he ok enten er jeg meget træt eller dum, men den vil ikke som jeg vil, får nu følgende fejl:

Fejltype:
Microsoft JET Database Engine (0x80040E14)
Der er en syntaksfejl, fordi der mangler en operator. i forespørgselsudtrykket "'25-04-2002 16:07:59, 25-04-2002 16:10:12, 25-04-2002 16:02:58, 25-04-2002 16:03:38, 18-04-2002 14:13:08, 25-04-2002 16:07:10, 25-04-2002 16:08:40, 25-04-2002 15:58:37, 25-04-2002 16:01:37' url ='cs/anot.asp, cs/lsd.asp, cs/fisken1.asp, cs/fisken2.asp, cs".
/gemup2.asp, line 12


Browsertype:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)

Side:
POST 1005 bytes to /gemup2.asp

POST Data:
servernavn=Another+Worl&spil=cs&ip=195.184.125.89%3A27015&gemtdato=25-04-2002+16%3A07%3A59&url=cs%2Fanot.asp&servernavn=Clan+LSD+server&spil=cs&ip=212.242.53.158%3A27015&gemtdato=25-04-2002+16%3A10%3A .


jeg har rettet de 2 dokumenter så de skulle passe, de kommer her:
update2.asp:
<table border="1" bordercolor="#000000">
<tr bgcolor="black" align=center>
  <td>
<font color="#FFFFFF">Servernavn
  </td>
  <td>
<font color="#FFFFFF">Spil</font>
  </td>
  <td>
<font color="#FFFFFF">IP</font>
  </td>
  <td>
<font color="#FFFFFF">Dato</font>
  </td>
  <td><font color="#FFFFFF">Fil</font> </td>
  <td><font color="#FFFFFF">Slet</font> </td>
<td><font color="#FFFFFF">ID</font> </td>
</tr>
<form method=POST action="gemup2.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><td><input type hidden value=""" & rest("id") & """></td></tr>"
rest.MoveNext
loop


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

og gemup2.asp:
<%
Option Explicit
dim cn, constr, connectionstring, sql

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="UPDATE server SET servernavn ='" & (Request.Form("servernavn")) & "', spil ='" & (Request.Form("spil")) & "', ip ='" & (Request.Form("ip")) & "', gemtdato ='" & (Request.Form("gemtdato")) & "' url ='" & (Request.Form("url")) & "',"  & "WHERE ID = '" & (Request.Form("id")) & "'"

cn.execute sql

cn.close
set cn=nothing
%>
<html>
<head>
<title>Tak for bidraget</title>
</head>
<body>
tak

</html>
Avatar billede loukas Mester
28. april 2002 - 02:37 #18
Hov undskyld !!!
<input type=hidden name=id value="" & rest("ID") & "">"
Havde glemt at give den et navn !!
Avatar billede butcher Nybegynder
28. april 2002 - 02:44 #19
ok jeg nu har indsat Response.Write "<input type=hidden name=id value=""" & rest("ID") & """>" nedeunder den første response.write i update2.asp som du forslår, men jeg får samme fejl som før: Der er en syntaksfejl, fordi der mangler en operator. Som du ser oppe over.
Avatar billede butcher Nybegynder
28. april 2002 - 02:54 #20
hopper i seng, håber der er nogle kloge hoveder som kan hjælpe mig med dette, har virkeligt brug for det :D
Avatar billede butcher Nybegynder
28. april 2002 - 09:53 #21
til loukas

Ok nu har jeg fået roddet lidt op idet, ser ud til jeg kommer lidt vidre men nu får jeg en:

Microsoft JET Database Engine (0x80040E07)
Datatyperne stemmer ikke overens i kriterieudtrykket.
/gemup3.asp, line 15

nu har jeg kigget den linie igennem og kan ikke se nogle fejl, hvad går det ud på?

linie 15:

sql="update server set spil = '"& (Request.Form("spil")) &"', servernavn= '" & (Request.Form("servernavn")) & "', ip= '" & (Request.Form("ip")) & "', url= '" & (Request.Form("url")) & "'"  & "WHERE ID = '" & (Request.Form("id")) & "'"

min form hvor jeg gemmer det:
response.write "<tr align=center><td><input type=text size=20 name=spil value=""" & rest("spil") & """></td><td><input type=text size=20 name=servernavn value=""" & rest("servernavn") & """></td><td><input type=text size=25 name=ip value=""" & rest("ip") & """></td><td>" & 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") & """>"
Avatar billede butcher Nybegynder
28. april 2002 - 09:57 #22
til eagleeye  din virker stor set, borset fra den skriver data over det hele i et nyt recordset, den opdaterer ikke den gamle.
Avatar billede butcher Nybegynder
28. april 2002 - 11:09 #23
hmmm det var vist ikke helt meningen at jeg vil godkende loukas' svar for det virker ikke helt endnu, men eagleeye hvis du kommer med en mulig løsning, laver jeg et nyt ??? hvor du kan få 120 eller mere også.
Avatar billede loukas Mester
28. april 2002 - 13:02 #24
Hej igen !!!
Hvis jeg var dig ville jeg starte fra en ende.
Altså starte med:
sql="update server set spil = '"& (Request.Form("spil")) & "'"  & "WHERE ID = '" & (Request.Form("id")) & "'"

Teste koden, hvis det virker sætter du så servernavn= '" & osv...
Avatar billede butcher Nybegynder
28. april 2002 - 16:49 #25
mange tak, men jeg har løst det med delvis din løsning :D mange tak for den gode hjælp, for evt. løsning se den andet svar jeg har oprettet.
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