Er ved at blive helt irreteret over ikke at kunne får det her update til at virke - det er som den sletter querystring'en når jeg submitter siden?
Her lidt kode at kigge på: li 71. <form action="angiv.asp?kamp=<%=request.querystring("kamp")%>" method="post" name="angiv"> <% Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("/fpdb/kongeloge.mdb") li.75.Set rs=Conn.Execute("select * from [EM_KAMPE] where kamp = "&request.querystring("kamp")&"") %> <table border="0" width="100%" cellspacing="0" cellpadding="0"> <tr> <td align="center" width="150px"><p align="right"><%=rs("hjemmehold")%></td> <td align="center"> <input name="hjemmal" size="2"></td> <td align="center">-</td> <td align="center"> <input name="udemal" size="2"></td> <td align="center" width="150px"><p align="left"><%=rs("udehold")%></td> </tr> </table> <% strhje = request.form("hjemmal") strude = request.form("udemal") if strhje > strude then strresul = "1" if strhje < strude then strresul = "2" if strhje = strude then strresul = "x" Conn.Close Set Conn = Nothing Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("/fpdb/kongeloge.mdb") Set rs=Conn.Execute("UPDATE [EM_KAMPE] SET [hjemmal] = "&strhje&", [udemal] = "&strude&", [res] = "&strresul&" , [done] = 1 WHERE [kamp] = "&request.querystring("kamp")&"") Response.Redirect "euro2008_copy(1).asp" Conn.Close Set Conn = Nothing %> <p align="center"><a href="java script: document.angiv.submit();">INDSÆT RESULTAT AF KAMPEN!</a></p> </form>
Ved ikke helt om det med at først åbne en db-forbindelse for at trække data ud og så lukke den igen for at åbne igen for at opdatere indhold i db er den rigtige måde at gøre det på men har virket før....
og så os lige fejlen self: Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'kamp ='.
men hvorfor er den det? når jeg på linket til denne side har angiv.asp?kamp=<%=rs("kamp")%> og at der kommer til at stå fx. ../../angiv.asp?kamp=9 i URL når så jeg trykker på submit bliver angiv kørt uden altså kun angiv.asp...
kan ikke lige se hvordan det kan være at request.querystring 'taber' kamp når der submittes... Desuden er den der jo når siden indlæses ellers ville jeg jo ikke kunne trække de to hold ud af databasen hvor kamp = request.querystring("kamp")
arh ja en fejl i min update linie, men det forstår jeg heller ikke for har blot slette noget i head for at man kan markere på siden ellers intet ændret...
Hvis der er fejl i UPDATE-sætningen, må du hellere skrive den ud så du kan se hvad der står i den. Access har altid været kendt for at drille udviklere, ved ikke at fortælle hvad der er galt.
SQL-injections ?? - bliver jo nød til at starte et sted.. desuden er det jeg laver hverken super hemmeligt eller noget nogen betaler i dyre domme for at få lavet det er ganske enkelt bare sjob og ballade...
med hensyn til udskrift så skriver den jo are lige det der star i koden PÅNÆR de ting der skal hentes fra form'sne den har request.querystring med....
ja den skal jo hente det fra de to inputs - derfor tom.
MEN det spørg jeg faktisk også om i mit spm *mener jeg.
men hvordan skal man ellers først hente data fra db'en og så opdatere db'en over flere sider??
sådan at submit evt. linke til opret og så man puttede form-resultater i en querystring ala opret.asp?kamp="&request.querystring("kamp")&"&hjemmal="&request.form("hjemmal")&"&udemal="&request.form("udemal")&"&res="&strresultat&"
Det var da en mulighed - du overfører blot som i dit eksempel heropppe foroven stadig indtastede værdier med method "post" og skal aflæse dem med request.form.
Det du skal tænke på, er at hele din .asp side kører færdig, før brugeren for den at se. Dvs. du laver i dit eksempel her både en SELECT og en UPDATE (hvis den virkede), før brugeren kan skrive noget.
ok når du siger færdig så mener du hente, skrive, opdatere eller slette inden brugere for noget som helst at se (inden men begynder at HENTE fra db'en)..
mht. opret.asp så siger man stadig reuest.form i stedet for request.qerystring ved fx. hjemmal som er en af de input der er?
dvs. form kan huskes på tværs af asp sider eller hvordan? så skal den måske slet ikke med i querysting??
arh. hvordan er det man slår ie til at vise hele fejl-meddelser i stedet for den hvor der bare står fejl 500 intern serverfejl (IKKE egne fejlsider, men sider hvor man kan se detaljer)
Den der replace hjælper sædvanligvis på det med sql-injection. Men de to felter er talfelter, ikke - du bør kontrollere at det et tal (et antal cifre).
Men request.querystring("res") er en streng, ikke? Den skal have en replace. Men værdien skal vel også have '....' omkring i SQL-strengen.
Det hedder ikke Response.whrite
Du skal vel afslutte nummer 2 med en response.redirect, så brugeren kan se at der sker noget.
Hvorfor har du noget med request.form i den første?
arh nu tror jeg at jeg ved hvor du vil hen med det der injection. sådan at der kommer tal i tal-felter i db'en og tekst i tekst osv. osv. har set her på E at mange har en side der tjekker alle tyer felter og så includer de den på alle de sider de har med en eller anden form for input ????
response.redirect self. har den også været men ved ikke hvorfor jeg ville prøve det med write.... *underligt*
request.form i den første bruger jeg til at lave strresultat - men hvis der findes en anden smartere måde??
det to input er jo henholdsvis hjemmehold - udehold så bruger dette til at lave stilling 1 / x / 2 og så vil jeg proppe dette i db'en...
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.