|
| Opdater Database via Form Fra : Finn Madsen |
Dato : 25-10-03 22:38 |
|
Igen.. Jeg har skrevet om dette her før herinde, men da min
harddisk satte ud, og jeg ikke havde backup for over ½ år siden,
og ikke har kodet siden, er mit asp en andelse rusten. Derfor kan
jeg ikke se hvad der er galt med denne kode:
<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("db/data.mdb")
Conn.Open DSN
If Request.Form("opdater") <> "" Then
strSQL = "Update med set"
strSQL = strSQL & "navn= ' " & Request.Form("opdater") & " ' "
strSQL = strSQL & " Where id = " & Request.Form("id")
Conn.Execute(strSQL)
Else
%>
<form action="med-edit.asp" method="post">
<input type="hidden" name="id" id="id" value="<%=
Request.QueryString("id") %>">
<input type="text" name="opdater" value="">
<input type="submit" value="Gem">
</form>
<%
End If
%>
Når jeg trykker på gem, kan den ikke finde side, så kan det være
noget omkring action="med-edit.asp"?
Håber der er nogle der fatter mere end mig (sikkert en del :D ).
Hvis i har brug for mere info, så skriv.
--
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
| |
Jens Gyldenkærne Cla~ (25-10-2003)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 25-10-03 23:03 |
| | |
Finn Madsen (26-10-2003)
| Kommentar Fra : Finn Madsen |
Dato : 26-10-03 12:06 |
|
Efter at have fundet hvor fejlen er, er den i linje 22;
Conn.Execute(strSQL)
Hvad er der galt med den?
--
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
| |
Torben Brandt (26-10-2003)
| Kommentar Fra : Torben Brandt |
Dato : 26-10-03 12:21 |
|
Finn Madsen skrev:
> Efter at have fundet hvor fejlen er, er den i linje 22;
>
> Conn.Execute(strSQL)
>
> Hvad er der galt med den?
Fik du læst hele det link Jens gav dig - også det om at udskrive din
sql-streng?
<URL: http://asp-faq.dk/article/?id=41>
Du mangler et mellemrum (og har måske to for meget et andet sted)
/Torben
| |
Finn Madsen (26-10-2003)
| Kommentar Fra : Finn Madsen |
Dato : 26-10-03 13:22 |
|
> Fik du læst hele det link Jens gav dig - også det om at udskrive din
> sql-streng?
> <URL: http://asp-faq.dk/article/?id=41>
Ja, jeg læste alle tre, men fandt ingen sammenligning med linket, og min
kode. Forstod det ikke.
--
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
| |
Torben Brandt (26-10-2003)
| Kommentar Fra : Torben Brandt |
Dato : 26-10-03 13:29 |
|
Finn Madsen skrev:
>>Fik du læst hele det link Jens gav dig - også det om at udskrive din
>>sql-streng?
>><URL: http://asp-faq.dk/article/?id=41>
>
> Ja, jeg læste alle tre, men fandt ingen sammenligning med linket, og min
> kode. Forstod det ikke.
Artiklen handler bla. om hvilke informationer der er nødvendige for at
løse et problem, herunder database-fejl som i dit tilfælde.
Man skal bruge lidt relevant kode:
1. Typisk opbygningen af sql-strengen - det var med i dit første indlæg.
2. Hvilken fejl der kommer - indeholder bla linienummer, men også en
beskrivelse af fejlen. Fejlen kan ses i browseren.
F.eks. Syntaks Error in UPDATE ...
3. Resultatet af nedenstående kode som indsættes før umiddelbart før
linie med Conn.Execute(strSQL):
Response.Write strSQL
Response.End
Det er det der sendes til databasen, så det må være det, der indeholder
fejlen.
Så du bliver nødt til at give os informationerne fra 2. og 3.
Ofte kan 3. hjælpe til at se indlysende fejl, så det bør være der man
altid kigger først.
/Torben
| |
Finn Madsen (26-10-2003)
| Kommentar Fra : Finn Madsen |
Dato : 26-10-03 13:52 |
|
> Man skal bruge lidt relevant kode:
> 1. Typisk opbygningen af sql-strengen - det var med i dit første indlæg.
> 2. Hvilken fejl der kommer - indeholder bla linienummer, men også en
> beskrivelse af fejlen. Fejlen kan ses i browseren.
> F.eks. Syntaks Error in UPDATE ...
> 3. Resultatet af nedenstående kode som indsættes før umiddelbart før
> linie med Conn.Execute(strSQL):
> Response.Write strSQL
> Response.End
> Det er det der sendes til databasen, så det må være det, der indeholder
> fejlen.
Okay, jeg prøver igen så:
Fejlen lyder på:
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator)
in query expression 'id ='.
/med-edit.asp, line 22
<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("db/data.mdb")
Conn.Open DSN
If Request.Form("opdater") <> "" Then
strSQL = "Update med set"
strSQL = strSQL & "navn= ' " & Request.Form("opdater") & " ' "
strSQL = strSQL & " Where id = " & Request.Form("id")
Conn.Execute(strSQL) <---- Dette er linje 22!!!
Else
%>
<form action="med-edit.asp" method="post">
<input type="hidden" name="id" id="id" value="<%= Request.QueryString("id")
%>">
<input type="text" name="opdater" value="">
<input type="submit" value="Gem">
</form>
<%
End If
%>
Er det sådan jeg skal skrive indlægget?
Mvh
Finn Madsen
--
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
| |
Jens Gyldenkærne Cla~ (26-10-2003)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 26-10-03 14:28 |
|
Finn Madsen skrev:
>> 3. Resultatet af nedenstående kode som indsættes før
>> umiddelbart før linie med Conn.Execute(strSQL):
>> Response.Write strSQL
>> Response.End
Ovenstånde mangler stadig - men jeg tror godt vi kan finde fejlen
alligevel.
> [Microsoft][ODBC Microsoft Access Driver] Syntax error
> (missing operator) in query expression 'id ='.
O.k. - der mangler en operator i sql-linjen.
> strSQL = "Update med set"
> strSQL = strSQL & "navn= ' " & Request.Form("opdater") & " ' "
> strSQL = strSQL & " Where id = " & Request.Form("id")
Hvis du havde udskrevet strSQL (som beskrevet i det øverste citat i
indlægget her samt på den første side jeg henviste til) - ville du
se noget ligende det her:
Update med setnavn= ' Hans Kurt ' Where id = 42
Som du kan se mangler der et mellemrum mellem set og navn. Det
kunne du sikkert selv have opdaget hvis du havde udskrevet strSQL
og set sætningen i sin helhed. Det er derfor det første råd ved
problemer med sql-sætninger er: Udskriv den færdige sql-variabel.
Der er også et par ekstra mellemrum omkring navnet - det giver ikke
sql-fejl, men du får noget andet ind i databasen end du måske
forventer.
> Er det sådan jeg skal skrive indlægget?
Prøv at læse < http://asp-faq.dk/article/?id=41> en gang mere -
specielt anden halvdel af artiklen.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html
| |
Finn Madsen (26-10-2003)
| Kommentar Fra : Finn Madsen |
Dato : 26-10-03 15:26 |
|
> 3. Resultatet af nedenstående kode som indsættes før
> umiddelbart før linie med Conn.Execute(strSQL):
> Response.Write strSQL
> Response.End
strSQL = "Update med Set navn= '" & Request.Form("opdater") & "'
Where Id = 1"
Okay, nu har jeg fået lavet den så jeg kan ændre indholdet af
databasen, men kun på den der har værdien 1. Hvordan ændre jeg det
til at den selv finder ud af hvilken jeg vil ændre?
Jeg har prøvet at indsætte denne linje:
& Request.Form("id")
istedet for 1, da jeg har en form:
<input type="hidden" name="id" id="id" value="<%=
Request.QueryString("id") %>">
Håber der er en der stadig vil hjælpe.
Mvh
Finn Madsen
--
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
| |
Torben Brandt (26-10-2003)
| Kommentar Fra : Torben Brandt |
Dato : 26-10-03 16:27 |
|
Finn Madsen skrev:
>>3. Resultatet af nedenstående kode som indsættes før
>>umiddelbart før linie med Conn.Execute(strSQL):
>>Response.Write strSQL
>>Response.End
>
> strSQL = "Update med Set navn= '" & Request.Form("opdater") & "'
> Where Id = 1"
Det er ikke helt de Jens og jeg mener.
Du har noget kode:
strSQL = "Update med set "
strSQL = strSQL & "navn= '" & Request.Form("opdater") & "' "
strSQL = strSQL & " Where id = " & Request.Form("id")
Efter de linier skal du skrive:
Response.Write strSQL
Response.End
Så kommer der noget tekst i browseren i stil med:
Update med set ...
Det er den linie du skal kopiere fra din browser og sætte den ind her.
Så kan vi bla. se hvad Request.Form("opdater") og Request.Form("id")
indeholder.
Så send os lige den linie.
/Torben
| |
Finn Madsen (26-10-2003)
| Kommentar Fra : Finn Madsen |
Dato : 26-10-03 16:37 |
|
Okay, den gik rent ind.
Dette er linjen der kommer ud:
Update med set navn= 'test' Where id =
Som det kan ses, er der intet ud fra id, hvor der skulle have stået 1, da
jeg prøver at ændre 1.
Mvh
Finn Madsen
--
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
| |
Torben Brandt (26-10-2003)
| Kommentar Fra : Torben Brandt |
Dato : 26-10-03 16:46 |
|
Finn Madsen skrev:
> Okay, den gik rent ind.
>
> Dette er linjen der kommer ud:
>
> Update med set navn= 'test' Where id =
>
> Som det kan ses, er der intet ud fra id, hvor der skulle have stået 1, da
> jeg prøver at ændre 1.
Præcis. Så er spørgsmålet jo hvorfor der ikke står noget i
Request.Form("id")...
Så må du se på den side hvor formen ligger på. Se i kildekoden [1]:
a. Bliver formen sendt med method="post" ?
b. Hvad indeholder <input name="id" .... ? Står der 1 her ?
c. Find selv på flere :)
[1] Højreklik i browseren og vis kilde.
/Torben
| |
Finn Madsen (26-10-2003)
| Kommentar Fra : Finn Madsen |
Dato : 26-10-03 17:02 |
|
> a. Bliver formen sendt med method="post" ? <--- Ja
<form action="med-edit.asp" method="post">
> b. Hvad indeholder <input name="id" .... ? Står der 1 her ? <--- Nej, intet.
<input type="hidden" name="id" id="id" value="">
> c. Find selv på flere :)
Ud fra det, vil jeg med meget lidt kendskab til asp sige at fejlen enten
ligger her:
Where Id = " & Request.Form("id")
Eller her :
<input type="hidden" name="id" id="id" value="<%= Request.QueryString("id")
%>">
Mvh
Finn Madsen
--
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
| |
Torben Brandt (26-10-2003)
| Kommentar Fra : Torben Brandt |
Dato : 26-10-03 17:19 |
|
Finn Madsen skrev:
>>b. Hvad indeholder <input name="id" .... ? Står der 1 her ? <--- Nej, intet.
>
> <input type="hidden" name="id" id="id" value="">
Se, det er årsagen. Når value="" så bliver der ikke medsendt noget.
> Ud fra det, vil jeg med meget lidt kendskab til asp sige at fejlen enten
> ligger her:
>
> Where Id = " & Request.Form("id")
Nej, det jo klart at den må være tom, fejlen ligger i at value=""
> Eller her :
>
> <input type="hidden" name="id" id="id" value="<%= Request.QueryString("id")
> %>">
Ja, Request.QueryString("id") må være tom.
Det står kun noget i den, hvis du kalder siden med formen med .asp?id=1.
Du skal altså hver gang du linker til siden med formen skrive noget i
..asp?id=xx
/Torben
| |
Finn Madsen (26-10-2003)
| Kommentar Fra : Finn Madsen |
Dato : 26-10-03 17:27 |
|
Hvis dumhed blev belønnet, så skulle jeg ha en Mercedes. Straks.
Hvis du/i har brug for latter, så tjek den side jeg sender det fra:
Response.Write "<a href='med-edit.asp?di=" & rs("id") & "' <b>Rediger</b></a>"
di = id. Jeg har ikke skænet det en tanke, og opdagede det heller ikke da jeg
tjekke det.
Den anden side vil lede efter id, men der er kun noget di.
Mange tak for hjælpen!!
Mvh
Finn Madsen
--
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
| |
Jens Gyldenkærne Cla~ (26-10-2003)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 26-10-03 17:21 |
|
Finn Madsen skrev:
>> b. Hvad indeholder <input name="id" .... ? Står der 1 her ?
>> <--- Nej, intet.
>
> <input type="hidden" name="id" id="id" value="">
Så er fejlen at der ikke bliver skrevet den værdi i value som du
forventer.
> Ud fra det, vil jeg med meget lidt kendskab til asp sige at
> fejlen enten ligger her:
>
> Where Id = " & Request.Form("id")
Nej - når du har fundet ud af at input-feltet id er tomt, ligger
fejlen der.
> <input type="hidden" name="id" id="id" value="<%=
> Request.QueryString("id") %>">
Ja. Noget er galt her. Kalder du siden med querystringen "?id=1" ?
Prøv evt at skrive Response.write Request.Querystring()
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html
| |
|
|