/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Problemer med "update" af Database
Fra : Dennis Møller


Dato : 24-07-03 00:32

Så er jeg her igen!
Jeg er heldigvis kommet meget længere! Men nu, her kort før
afslutningen på projektet, melder sig et problem...
Jeg har skrevet en side med en "form" og den poster til denne
side:

<%
' Hvis brugeren ikke er logget rigtigt på
' sendes han/hun direkte til formularen
If Session("login") <> "JA" Then
Response.Redirect "login.asp"
End If
%>

<html>

<head>
<title>Ingstrup Mølle Fiskepark</title>
<link rel="Stylesheet" type="text/css" href="../style.css">
</head>

<body topmargin="0">
<table border="0" width="610" align="left" cellspacing="0"
cellpadding="0">
   <tr>
    <td width="100%">
<%
' Databaseforbindelse - husk at angive sti til din database
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("../cgi-bin/database.mdb")
Conn.Open DSN

' SQL sætning opbygges
strSQL = "Update arrangementer set "
strSQL = strSQL & "overskrift = '" & Request.Form("overskrift") &
"' , "
strSQL = strSQL & "dato = '" & Request.Form("dag") & "-" &
Request.Form("maaned") & "-" &

Request.Form("aar") & "' , "
strSQL = strSQL & "klokken = '" & Request.Form("klokken") & "' ,
"
strSQL = strSQL & "beskrivelse = '" & Request.Form("beskrivelse")
& "' "
strSQL = strSQL & "Where id = " & Request.Querystring("id")

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

' Luk databaseforbindelse
Conn.Close
Set Conn = Nothing

Response.Redirect "admin.asp"
%>

    </td>
   </tr>
</table>
</body>

</html>




Hvor jeg får denne fejlmeddelse, når jeg vil opdatere:

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 =".
/Ingstrup Mølle Fiskepark/login/opdater.asp, line 36


- linje 36 er:
Conn.Execute(strSQL)


Jeg har tjekket for tastefejl 1000 gange, og ja "id" bliver
overført korrekt fra den forrige side... Hvad er det?

På forhånd tak - Dennis.

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Dennis Møller (24-07-2003)
Kommentar
Fra : Dennis Møller


Dato : 24-07-03 00:34

Glemte lige at skrive at der ER skrive-adgang til mappen cgi-bin,
hvor databasen ligger i.

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jørgen Müller (24-07-2003)
Kommentar
Fra : Jørgen Müller


Dato : 24-07-03 01:28

Dennis Møller skrev:
>strSQL = strSQL & "beskrivelse = '" & Request.Form("beskrivelse")
>& "' "
>strSQL = strSQL & "Where id = " & Request.Querystring("id")

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

Prøv med lidt fejlfinding:
I starten af siden skriver du
Response.Buffer = 0

og mellem
strSQL = strSQL & "Where id = " & Request.Querystring("id")
Response.Write strSQL
Response.End
' SQL sætning eksekveres
Conn.Execute(strSQL)

På den måde får du udskrevet din SQL og her er der god mulighed for, at
Request.QueryString("id") =
men det kan du se på udskriften.
--
Med Venlig Hilsen
Jørgen Müller



Jørn Andersen (24-07-2003)
Kommentar
Fra : Jørn Andersen


Dato : 24-07-03 07:23

On Wed, 23 Jul 2003 23:32:14 +0000 (UTC), Dennis Møller
<djm@dennermanner.dk> wrote:

>strSQL = strSQL & "Where id = " & Request.Querystring("id")

Dette er ikke et svar på dit problem - Jørgen Müller har givet et godt
hint.

Men:
Hvad sker der, hvis din Querystreng indeholder:
0 OR 1 = 1
- ?
Svar: Du vil få opdateret *alle* felter!
- et seriøst sikkerhedshul

Hint: Det er en rigtig dårlig idé at indsætte Request.* direkte i en
Sql-streng. Se Jens Gyldenkærne Clausen's artikel:
<url: http://www.asp-faq.dk/article/?id=95>


Good luck!

--
Jørn Andersen,
Brønshøj

Dennis Møller (24-07-2003)
Kommentar
Fra : Dennis Møller


Dato : 24-07-03 14:29

Hmm...
Ja nu får jeg ikke "id" med fra den forrige side.
Dette er den forrige side:

<%
' Hvis brugeren ikke er logget rigtigt på
' sendes han/hun direkte til formularen
If Session("login") <> "JA" Then
Response.Redirect "login.asp"
End If
%>

<html>

<head>
<title>Ingstrup Mølle Fiskepark</title>
<link rel="Stylesheet" type="text/css" href="../style.css">
</head>

<%
' Databaseforbindelse - husk at angive sti til din database
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("../cgi-bin/database.mdb")
Conn.Open DSN

' SQL forespørgsel
strSQL = "Select * from arrangementer where id = " &
Request.Querystring("id")
' Udfør forespørgsel (rs indeholder nu resultatet)
Set rs = Conn.Execute(strSQL)

Dim RedigerDato

RedigerDato = Split(rs("dato"),"-")
%>

<body topmargin="0">
<table border="0" width="610" align="left" cellspacing="0"
cellpadding="0">
   <tr>
    <td width="100%">

<h1 align="center"><br>
Rediger arrangementet</h1>
<form action="opdater.asp?id=<% Request.Querystring("id")
%>" method="post" >
<div align="right">
<table border="0" width="550" cellspacing="0"
cellpadding="2">
<tr>
<td width="118">Overskrift:</td>
<td width="418"><input type="text" name="overskrift"
size="50" maxlength="50" tabindex="1" value="<%
Response.Write rs("overskrift")
%>
"></td>
</tr>
<tr>
<td width="118">Dato:</td>
<td width="418"> <input type="text" name="dag"
size="2" maxlength="2" tabindex="2" value="<%
Response.Write RedigerDato(0)
%>
"> / <input type="text" name="maaned" size="2" maxlength="2"
tabindex="3" value="<%
Response.Write RedigerDato(1)
%>
"> - 20<input type="text" name="aar" size="2" maxlength="2"
tabindex="4" value="<%
if (RedigerDato(2)-2000 < 10) then
Response.Write "0" & RedigerDato(2)-2000
else
Response.Write RedigerDato(2)
End if
%>
"></td>
</tr>
<tr>
<td width="118">Klokkeslæt:</td>
<td width="418"> <input type="text" name="klokken"
size="5" maxlength="5" tabindex="5" value="<%
Response.Write rs("klokken")
%>
"></td>
</tr>
<tr>
<td width="118" valign="top">Beskrivelse:</td>
<td width="418"><textarea rows="8"
name="beskrivelse" cols="50" tabindex="6"><%
Response.Write rs("beskrivelse")
%>
</textarea></td>
</tr>
<tr>
<td width="536" colspan="2">
<table border="0" width="100%" cellspacing="0"
cellpadding="0">
<tr>
<td width="100%">
<p align="center"><br>
<input type="submit" value="Ok - indsend"
name="submit" tabindex="7"> <input type="reset" value="Fortryd
alle ændringer" name="reset" tabindex="8">
</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
</form>
<p align="left">

    </td>
   </tr>
</table>

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

</body>

</html>



Læg mærke til at jeg, for at få "id" overført til næste side (som er
den side jeg skrev i første indlæg i denne tråd), har Request'et
"id" fra URL'en og overfører den via "action" i form'en. Kan det
overhovedet lade sig gøre? Åbenbart ikke - da jeg jo stadig ikke kan
få dette her til at virke. Hvis ikke - hvad skal jeg så gøre?

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jørn Andersen (24-07-2003)
Kommentar
Fra : Jørn Andersen


Dato : 24-07-03 16:48

On Thu, 24 Jul 2003 13:29:03 +0000 (UTC), Dennis Møller
<djm@dennermanner.dk> wrote:

<En hel masse - prøv at begrænse lidt, til det relevante ;)>

>Læg mærke til at jeg, for at få "id" overført til næste side (som er
>den side jeg skrev i første indlæg i denne tråd), har Request'et
>"id" fra URL'en og overfører den via "action" i form'en. Kan det
>overhovedet lade sig gøre? Åbenbart ikke - da jeg jo stadig ikke kan
>få dette her til at virke. Hvis ikke - hvad skal jeg så gøre?

Når du alligevel har en formular, så villle jeg brughe et hidden felt:
<input type="hidden" name="id" value="<% = Request.Querystring("id")
%>">
- eller noget i den retning. Hentes så på nælste side med:
Request.Form("id")

Good luck!

--
Jørn Andersen,
Brønshøj

Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408527
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste