/ 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
update via SQL
Fra : Pernille og Lars


Dato : 27-12-00 19:46

Jeg får vist nogle poster i en tabel via SQL fra en mdb.
Alle værdierne vises i <input type="text">
jeg har navngivet nogle "text" felter med postens ID.

Hvis jeg i denne tabel ændrer nogle værdier.

Hvordan får jeg så en ´Update´ til at løbe alle de navngivne "text"felter
igennem og opdatere min db, med den værdi jeg har skrevet i text
felterne(ikke lægge til eller trække fra, men ændre til den skrevne værdi)
via posternes ID.??

Evt. ved tryk på knap

MVH
Lars




 
 
Lauritz Jensen (27-12-2000)
Kommentar
Fra : Lauritz Jensen


Dato : 27-12-00 23:39

Pernille og Lars wrote:
[...]
> Hvis jeg i denne tabel ændrer nogle værdier.
[...]
> Evt. ved tryk på knap

øhm... jeg vil nu foreslå, at du bruger SQL til at lave opdateringen med


Du laver sikkert din formular ca. sådan:

--- klip - start ---
<%
Response.Write "<form action=""test.asp"" method=post>"
sql = ""
sql = sql & "SELECT id, tekst "
sql = sql & "FROM tabel "
sql = sql & "WHERE ... minlabrewhereclause ..."
rs.open sql, conn
do until rs.eof
'-- bemærk: navnet på formfeltet er ikke numerisk,
'-- da det giver problemer (tro mig)
Response.Write "<input type=text name=""t" & rs("id") & """ value="""
& Server.HtmlEncode("" & rs("tekst")) & """><br>"
rs.movenext
loop
rs.close
Response.Write " <input type=submit value=""Her er knappen"">"
Response.Write "</form>"
%>
--- klip - slut ---

Den side hvor opdateringen laves imod basen, laver du jo så bare sådan:

--- klip - start ---
<%
sql = ""
sql = sql & "SELECT id, tekst "
sql = sql & "FROM tabel "
sql = sql & "WHERE ... minlabrewhereclause ..."
rs.open sql, conn
do until rs.eof
tekst = Trim(Request("t" & rs("id")))
if not (("" & rs("tekst")) = tekst) then
sql = ""
sql = sql & "UPDATE tabel "
sql = sql & "SET tekst = '" & Replace(tekst, "'", "''") & "' "
sql = sql & "WHERE id = " & rs("id") & " "
conn.execute sql
end if
rs.movenext
loop
rs.close
%>
--- klip - slut ---

Problmer?

--
Lauritz

Søren Lundfald (28-12-2000)
Kommentar
Fra : Søren Lundfald


Dato : 28-12-00 17:23

Pernille og Lars <hestetoften@get2net.dk> skrev i en
nyhedsmeddelelse:KNq26.166$J11.5321@news.get2net.dk...
> Jeg får vist nogle poster i en tabel via SQL fra en mdb.
> Alle værdierne vises i <input type="text">
> jeg har navngivet nogle "text" felter med postens ID.
>
> Hvis jeg i denne tabel ændrer nogle værdier.
>
> Hvordan får jeg så en ´Update´ til at løbe alle de navngivne "text"felter
> igennem og opdatere min db, med den værdi jeg har skrevet i text
> felterne(ikke lægge til eller trække fra, men ændre til den skrevne værdi)
> via posternes ID.??

Hvis vi går ud fra du har en tabel som hedder "mintabel" med et ID felt og
du allerede har hentet data fra tabellen ind i felterne Text1 og Text2, kan
du bruge følgende:

sql = "UPDATE DISTINCTROW tabelnavn SET Text1 = '" & request.form("Text1") &
"', Text2 = '" & request.form("Text2") & "' where ID = " & Request("ID")
--
Mvh
Søren Lundfald
-------------------------------------
Greenland - what a wonderful world
http://www.ilulissat.gl
-------------------------------------



N/A (28-12-2000)
Kommentar
Fra : N/A


Dato : 28-12-00 17:26



Lauritz Jensen (28-12-2000)
Kommentar
Fra : Lauritz Jensen


Dato : 28-12-00 17:26

Pernille og Lars wrote:
>
> Jeg lægger lige koden her, så hvis der er en der kan se kvad jeg gør galt.
> ??

Nogle ting der lige springer i øjenene:
- I din kode har du 2 loops: Et der viser nogle felter og et andet,
hvori der udføres nogle opdateringer. De looper begge til enden af
recordsettet. Men det betyder jo at kun der første looper. Når den anden
skal til at starte er recordsette jo allerede ved enden. Du bliver nød
til enten at "spole tilbage" eller at åbne recordsettet igen.
- der er ikke nogen af dine <input>-felter, som har noget navn. Hvordan
vil du så refererer til dem?
- Du burde nok dele siden op i to sider: En som vise felterne og en som
der bliver submittet til (og evt. redirecter tilbage til vise siden).
Ellers vil alle data jo bla. blive slettet fra basen første gang
brugeren lander på siden.

Stil-karakteren:
- Jeg forstår ikke alle de "<td>"&"<input ...". Hvorfor ikke bare
"<td><input ..."?
- Du burde nok escape de tekster, du skrive ud fra datasen med
server.HtmlEncode. (tal behøver naturligvis ikke)
- Pas på med "SELECT * ", det giver problemer, når du pluslig ændre
tabellen. Nævn kolonnerne ved navn. Så er det også nemmere at huske hvad
der er hvad.
- Underligt at benytte while/wend i den første loop og do/loop i den
anden. Vær konsekvent
- Du har åbenbart teksten "tom" i din base når der ikke er noget
billede. Hvorfor ikke bare værdien null?
- Lad være at skifte mellem html og vbscript hele tiden (altså med <%
%>). Hvis du havde brugt en response.write til at skrive billedet ud,
ville du måske have set, at du mangler en <tr> når der ikke er noget
billede. (men du mangler jo også en før submitknappen, så måske ikke)

(Er du ikke rar at få din newsreader til at svare "Re:" og ikke "Sv:"?)

--
Lauritz

Søg
Reklame
Statistik
Spørgsmål : 177557
Tips : 31968
Nyheder : 719565
Indlæg : 6408868
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste