/ 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
opdatering af database
Fra : Lasse Vestergaard


Dato : 26-10-04 20:14

Hej!

Jeg har stor problemer med at op datere min database.
Jeg er rimelig sikker på det er WHERE delen jeg ikke kan finde ud
af.
Mit konkrete problem er, når jeg skriver en tekst i en form og
vil opdatere databasen, så bliver hele databasen ændret til
ændringen.

Nedenfor ses mine ASP sider

rediger.asp
-----------


<HTML>
<HEAD>
</HEAD>
<BODY>

<%
' 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("database.mdb")
Conn.Open DSN

' SQL sletter record
strSQL = "select * from personer order by Fornavn"
Conn.Execute(strSQL)

Set rs = Conn.Execute(strSQL)

Do


%>

<form action="opdater.asp" method="post">
<input type="text" value="<% response.write rs("Fornavn")%>"
name="Fornavn">
<input type="submit" value="Opdater">
</form>

<%

rs.MoveNext

Loop While Not rs.EOF


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



</BODY>
</HTML>


**************************************************

opdater.asp
------------

<HTML>
<HEAD>
</HEAD>
<BODY>

<%
' 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("database.mdb")
Conn.Open DSN

' SQL opdater
strSQL = "Update personer set Fornavn = ('" &
Request.Form("Fornavn") & "') where Fornavn = 'Fornavn'"


Conn.Execute(strSQL)


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

<% response.write ("Filen er nu Opdateret")%>

</BODY>
</HTML>

Hvis nogen kunne give mig et vink til hvad der går galt, så vil
jeg være meget glad.

På forhånd tak


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

 
 
Jens Gyldenkærne Cla~ (26-10-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 26-10-04 21:39

Lasse Vestergaard skrev:

> ' SQL sletter record
> strSQL = "select * from personer order by Fornavn"

Din kommentar stemmer ikke med den efterfølgende sql. Det er ikke
en decideret fejl, men det kan forvirre når kommentaren angiver
noget andet end den kode den står ved.

[løkke i rediger.asp]

> <form action="opdater.asp" method="post">
> <input type="text" value="<% response.write rs("Fornavn")%>"
> name="Fornavn">
> <input type="submit" value="Opdater">
> </form>

Hvordan vil du få opdater.asp til at vide hvilken post der skal
opdateres? Opdater.asp får kun den information du sender med fra
formen - og det er her alene feltet fornavn og submitknappen med
den faste tekst opdater.


> strSQL = "Update personer set Fornavn = ('" &
> Request.Form("Fornavn") & "') where Fornavn = 'Fornavn'"

sql-sætningen her opdaterer alle poster hvor fornavnet er
"Fornavn". Du skal have fat i et kriterium der vælger den post du
rent faktisk vil opdatere.


> Hvis nogen kunne give mig et vink til hvad der går galt, så vil
> jeg være meget glad.

Der er to problemer. For det første mangler du en entydig
identifikator i formene på rediger.asp. Hvis du har et id-felt
(primærnøgle) i tabellen, vil det være oplagt at bruge det.

Læg værdien fra id-feltet ned i et skjult felt:

<input type="hidden" name="personID" value="<%= rs("personID") %>">

På den måde vil hver form på siden indeholde id-nummeret på den
post formen giver adgang til at rette i.

I opdater.asp skal du så hente id-feltet (Request.Form("personID"))
- og det skal så lægges ind i where-delen:

Dim fornavn, personID
fornavn = Request.Form("fornavn")
personID = Request.Form("personID")

updateSQL = "UPDATE personer SET fornavn = '" & fornavn & _
   "' WHERE personID = " & personID

Det kan være en ganske god ide at lave datavalidering på de form-
værdier du skal sætte ind i sql-sætningen. Se lidt om hvorfor og
hvordan her: <http://asp-faq.dk/article/?id=95>
--
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

Lasse Vestergaard (27-10-2004)
Kommentar
Fra : Lasse Vestergaard


Dato : 27-10-04 20:51

> Din kommentar stemmer ikke med den efterfølgende sql. Det er ikke
> en decideret fejl, men det kan forvirre når kommentaren angiver
> noget andet end den kode den står ved.

Jeg så godt fejlen. Det er en forseelse SORRY.

> Der er to problemer. For det første mangler du en entydig
> identifikator i formene på rediger.asp. Hvis du har et id-felt
> (primærnøgle) i tabellen, vil det være oplagt at bruge det.

Jeg har et ID-felt som værende primary key, i min db.

>
> Dim fornavn, personID
> fornavn = Request.Form("fornavn")
> personID = Request.Form("personID")
>
> updateSQL = "UPDATE personer SET fornavn = '" & fornavn & _
>    "' WHERE personID = " & personID


Jeg har nu forsøgt at gøre som du har beskrevet, men serveren siger
stadig der er problemer med at vise opdater.asp.

Jeg får fejlen:

HTTP 500 - Intern serverfejl
Internet Explorer


Jeg viser lige mine rettelser nedenfor:

Rediger.asp
-----------

<form action="opdater.asp" method="post">
<input type="text" value="<% response.write rs("Fornavn")%>"
name="Fornavn">
<input type="hidden" name="ID" value="<%= rs("ID") %>">
<input type="submit" value="Opdater">
</form>

********************

Opdater.asp
-----------

' SQL opdater
Dim fornavn, ID
fornavn = Request.Form("Fornavn")
ID = Request.Form("ID")

updateSQL = "UPDATE personer SET Fornavn = '" & fornavn & _
"' WHERE ID = " & ID

Conn.Execute(strSQL)



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

Jens Gyldenkærne Cla~ (28-10-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 28-10-04 10:33

Lasse Vestergaard skrev:

> Jeg får fejlen:
>
> HTTP 500 - Intern serverfejl
> Internet Explorer

Tag et kig her: <http://asp-faq.dk/article/?id=45>.

Se evt. siden her bagefter: <http://asp-faq.dk/article/?id=41>

NB: Kan du lokkes til at angive hvem du svarer - det fremgår ikke
automatisk af et indlæg. Det er den øverste linje "Peter Hansen skrev"
eller lignende der mangler.

--
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

Lasse Vestergaard (28-10-2004)
Kommentar
Fra : Lasse Vestergaard


Dato : 28-10-04 18:15

Jens GyldenkærneClausen skrev:

> NB: Kan du lokkes til at angive hvem du svarer - det fremgår ikke
> automatisk af et indlæg. Det er den øverste linje "Peter Hansen skrev"
> eller lignende der mangler.

Jeg vil huske at skrive hvem jeg svarer

Jeg får følgende fejl i browseren:


Microsoft VBScript compilation error '800a0408'

Invalid character

/opdater.asp, line 19

updateSQL = "UPDATE personer SET Fornavn = '" & fornavn & _ "' WHERE ID =
" & ID
------------------------------------------------------------^

Jeg kan se det er noget med where delen, men har ingen idé om hvad det
helt nøjagtigt er.




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

Jens Gyldenkærne Cla~ (28-10-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 28-10-04 21:54

Lasse Vestergaard skrev:

> Jeg vil huske at skrive hvem jeg svarer

Takker.

> updateSQL = "UPDATE personer SET Fornavn = '" & fornavn & _ "' WHERE ID =


Understregen skal kun bruges hvis du deler koden over flere linjer.
Fjern den, så skulle parserfejlen forsvinde.

--
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

Lasse Vestergaard (28-10-2004)
Kommentar
Fra : Lasse Vestergaard


Dato : 28-10-04 18:21

Jens GyldenkærneClausen skrev:


>dateSQL = "UPDATE personer SET fornavn = '" & fornavn & _
>' WHERE personID = " & personID

Der er et par småting jeg ikke forstår i ovenstående sætning.

Hvorfor er der _ efter & fornavn & ?

Hvorfor slutter det sidste " før & personID ?

Påforhånd tak

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

Jens Gyldenkærne Cla~ (28-10-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 28-10-04 21:53

Lasse Vestergaard skrev:

>>dateSQL = "UPDATE personer SET fornavn = '" & fornavn & _
>>' WHERE personID = " & personID

> Hvorfor er der _ efter & fornavn & ?

Understreg (_) gør det muligt at dele en asp-kommando over flere linjer.
Den betyder sådan ca "fortsættes næste linje".

Eksempel:

Response.write "Her er noget " & _
   "der er fordelt " & _
   "på flere linjer"


> Hvorfor slutter det sidste " før & personID ?

Det første personID i linjen er navnet på feltet i persontabellen. Det
andet personID er en asp-variabel. Den står uden for anførselstegnene
fordi du skal bruge værdien fra variablen - ikke navnet på den.

--
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

Lasse Vestergaard (29-10-2004)
Kommentar
Fra : Lasse Vestergaard


Dato : 29-10-04 16:22

Jeg siger tusind tak for hjælpen.
Nu virker det hele... indtil videre

Jeg får nok desværre brug for lidt mere hjælp lidt senere i forbindelse med
upload af billeder med tekst, men den tid den sorg.

Venlig hilsen
Lasse Vestergaard

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

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

Månedens bedste
Årets bedste
Sidste års bedste