webForumDet fria alternativet

UPDATE som inte fungerar

13 svar · 315 visningar · startad av klementin

klementinMedlem sedan aug. 2001117 inlägg
#1

Hej!
Mitt första inlägg här på sidan och jag hoppas att jag inte gör bort mig nu...

Jag har en enkel access databas med fält som ID (räknare), Efternamn (text), Förnamn (text), Telefonnummer (tal).

Jag har en sida som visare upp detta i INPUT rader där varje rad har fått samma ID som det som står i databasen.

När man ändrar värdet i någon av INPUT fälten och trycker på en UPDATE-knapp skall dessa uppgifter uppdatera *döh* men inga uppdateringar händer?!

Här är koden på sidan som visar databasens innehåll:

<form action="./update.asp" method="POST">

<table border="0" cellpadding="1" cellspacing="1" bgcolor="#111111">
<tr class="text" bgcolor="#eeeeee">
<td><b>Efternamn:</b></td>
<td><b>Förnamn:</B></td>
<td><b>Telefon:</b></td>
</tr>

<%
Dim Conn
Dim rs
Dim sql

SQLDBPath = Server.MapPath("\index\db\webusers.mdb")
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & SQLDBPath & ";"
Set rs = Conn.Execute("SELECT * FROM UserInfo Order by EfterNamn Asc")
%>

<tr class="text" bgcolor="#ffffff">
<td><input type="text" name="EfterNamn" value="<%= rs("EfterNamn").Value %>"><input type="text" name="UserId" value="<%= rs("Id").Value %>"></td>
<td><input type="text" name="FörNamn" value="<%= rs("FörNamn").Value %>"><input type="text" name="UserId" value="<%= rs("Id").Value %>"></td>
<td><input type="text" name="Telefon" value="<%= rs("Telefon").Value %>"><input type="text" name="UserId" value="<%= rs("Id").Value %>"></td>
</tr>

<%
rs.MoveNext
Loop
%>

<input type="Submit" value="Uppdatera">

--------------------------------------
Och här är koden som skall göra uppdateringen:

<%
Dim Conn
Dim SQL
Dim SQLDBPath

SQLDBPath = Server.MapPath("\index\db\webusers.mdb")
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & SQLDBPath & ";"

SQL = "UPDATE UserInfo SET "
SQL = SQL & "EfterNamn = '" & Request.Form("EfterNamn") & "' "
SQL = SQL & "FörNamn = '" & Request.Form("FörNamn") & "' "
SQL = SQL & "Telefon = '" & Request.Form("Telefon") & "' "
SQL = SQL & "WHERE ID LIKE '" & request.Querystring("UserId") & "' "

Conn.Execute(SQL)

Conn.Close
Set Conn = nothing
%>

--------------------------------------
Tacksam för svar!

Ps.
Jag har sökt på detta forumet men inte fattat något av det jag har hittat :-)
Ds.

------------------
/Klementin

LarsGMedlem sedan dec. 200012 464 inlägg
#2
SQL = "UPDATE UserInfo SET " 
SQL = SQL & "EfterNamn = '" & Request.Form("EfterNamn") & "', "
SQL = SQL & "FörNamn = '" & Request.Form("FörNamn") & "', "
SQL = SQL & "Telefon = '" & Request.Form("Telefon") & "' "
SQL = SQL & "WHERE ID = " & request.Querystring("UserId") 

Conn.Execute SQL

Jag har lagt till ett komma mellan kolumnerna i set. Då kolumnen id är numerisk så går det inte att använda like.

Välkommen hit.

------------------
essentitia preter non sans multiplicandum

klementinMedlem sedan aug. 2001117 inlägg
#3

Oj, tack för ett snabbt svar men det fungerar ialla fall inte. Får felmed.:

Syntaxfel (operator saknas) i frågeuttrycket 'ID ='.

Hajar nada ;-)

------------------
/Klementin

@ndersMedlem sedan juni 200032 969 inlägg
#4

då får du inget värde från request.Querystring("UserId"), kolla att det verkligen är UserId den heter.

red: jag ska väl inte vara sämre jag; välkommen hit! :)

------------------
can i borrow your goat?

[Redigerat av @nders den 17 aug 2001]

emissionMedlem sedan dec. 19996 721 inlägg
#5

1. FORM-method är POST så det ska vara request.form("UserID"), såvida man inte lägger med UserID i FORM-action.
2. Det ska bara vara ett formulärfält som heter UserID.
3. Det bör vara av typen "hidden".

LarsGMedlem sedan dec. 200012 464 inlägg
#6

Du använder ju post i ditt formulär och jag ser inte att du har någon querystring med i din action. Om du använder post så hamnar alla värden i request.form.

------------------
essentitia preter non sans multiplicandum

klementinMedlem sedan aug. 2001117 inlägg
#7

Oj, snacka om guldforum!!!

Nu har jag fått detta att fungera så länge det bara finns en person upplagd i ddatabasen. Lägger man till en ny så blir nu det felmed. när man uppdateras:

Syntaxfel (komma) i frågeuttrycket 'ID = 68, 112'.

Knasigt va?!

------------------
/Klementin

LarsGMedlem sedan dec. 200012 464 inlägg
#8

Nej, det är inte så konstigt. I och med att du har flera fält med samma namn så kommer värdena som finns i dessa att slås i hop till en kommaseparerad lista när du använder request.form("userid")

Vill du uppdatera alla användare eller vill du att man skall kunna välja att bara uppdatera en specifik, dvs att du har en knapp/länk per användare?

------------------
essentitia preter non sans multiplicandum

klementinMedlem sedan aug. 2001117 inlägg
#9

Jag vet inte. Vill mest kunna uppdatera till att börja med men jag tar gärna emot båda alternativen så får jag se vilket som passar mig bäst.

Den frågvise novisen

------------------
/Klementin

jorgenMedlem sedan feb. 20012 412 inlägg
#10

Hej!

Om du gör en admin och hämtar alla poster i databasen.

Hoppas jag fattat dig rätt nu :e

SQL = "SELECT * FROM tabell ORDER BY Id"
Set RS = Connection.Execute(SQL)

Do while not RS.EOF

<%=RS("Id")%>
<%=RS("Fornamn")%>
<%=RS("Efternamn")%>
<%=RS("Telefonnummer")%>

<p><a href="Uppdateringssidan.asp?Id=<%=RS("Id")%>">Ändra Posten</a>

RS.MoveNext
Loop

sedan gör du uppdateringen:

SQL = "UPDATE UserInfo SET "
SQL = SQL & "EfterNamn = '" & Request.Form("EfterNamn") & "' "
SQL = SQL & "FörNamn = '" & Request.Form("FörNamn") & "' "
SQL = SQL & "Telefon = '" & Request.Form("Telefon") & "' "
SQL = SQL & "WHERE ID = " & request.Querystring("Id") & " "

Mvh Jörgen

------------------
*** Var går gränsen mellan långa kortbyxor och korta långbyxor? ***

[Redigerat av jorgen den 17 aug 2001]

klementinMedlem sedan aug. 2001117 inlägg
#11

Tack för alla svar!

Ska prova detta strax (är lite bakis :X , så vi får väl se om jag kan träffa rätt på tangenterna).
/K

------------------
/Klementin
-----------------------
Grymt fett me parra!
-----------------------

klementinMedlem sedan aug. 2001117 inlägg
#12

Den skickar inte in det nya uppgifterna i databasen, däremot så tar den bort alla uppgifterna för den personen. Databasen tillåter dubbletter.

------------------
/Klementin
-----------------------
Grymt fett me parra!
-----------------------

jorgenMedlem sedan feb. 20012 412 inlägg
#13

Hej!

Du får göra ett formulär där du andrar dina uppgifter.

GetUsers.asp
<%
SQL = "SELECT * FROM tabell ORDER BY Id"
Set RS = Connection.Execute(SQL)

Do while not RS.EOF %>

<%=RS("Id")%>
<%=RS("Fornamn")%>
<%=RS("Efternamn")%>
<%=RS("Telefonnummer")%>

<p><a href="Uppdateringssidan.asp?Id=<%=RS("Id")%>">Ändra Posten</a>

<%
RS.MoveNext
Loop

RS.Close()
Set RS = Nothing

%>

Uppdateringssidan.asp

<%
SQL = "SELECT * FROM tabell WHERE Id = " & Request.Querystring("Id")
Set RS = Connection.Execute(SQL)
%>

<form action="update.asp" method="post">

<input type="hidden" name="Id" value="<%=RS("Id")%>">

<input type="text" name="Fornamn" value="<%=RS("Fornamn")%>">

<input type="text" name="Efternamn" value="<%=RS("Efternamn")%>">

<input type="text" name="Telefonnummer" value="<%=RS("Telefonnummer")%>">

<input type="submit" value="Uppdatera">

</form>

update.asp

<%

SQL = "UPDATE UserInfo SET "
SQL = SQL & "EfterNamn = '" & Request.Form("EfterNamn") & "' "
SQL = SQL & "FörNamn = '" & Request.Form("FörNamn") & "' "
SQL = SQL & "Telefon = '" & Request.Form("Telefon") & "' "
SQL = SQL & "WHERE ID = " & Request.Form("Id") & " "

Connection.Execute(SQL)

%>

Otestad kod som är lite snabbt ihopslängd. Du får lägga till din connection sträng till koden samt connection.close.

r: oj vad slarvfel man gjort. Hoppas nya forumet har srörre textarea :e

mvh Jörgen

------------------
*** Var går gränsen mellan långa kortbyxor och korta långbyxor? ***

[Redigerat av jorgen den 18 aug 2001]

[Redigerat av jorgen den 18 aug 2001]

[Redigerat av jorgen den 18 aug 2001]

[Redigerat av jorgen den 18 aug 2001]

klementinMedlem sedan aug. 2001117 inlägg
#14

Jag provade detta och vet du vad... det fungerade (efter några rättningar av slarvfel). Stort tack för all hjälp!

------------------
/Klementin
-----------------------
Grymt fett me parra!
-----------------------

133 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)