Jag är i behov av hjälp för att uppdatera användare.
Jag har en databas med användare. De presenteras i en lång lista. Just nu så listas bara alla användare rakt av.
Jag skulle vilja ha en knapp bredvid varje namn som heter tex "uppdatera". Klickar man på den ska man komma vidare till en sida som presenterar fält med just den användares info som man klickade på. Användarna själva ska inte kunna uppdatera något. Allt görs av en Admin som har tillgång till allt.
Kan någon ge lite tips på hur man ska tänka och vad man kan söka mer hjälp på?
När du loggar in får du skapa en session som anger att du är admin. Exempelvis kan du ha ett fält i databasen som heter admin och har värdet 0 för alla utom dig, du har 1. När du loggar in sätter den värdet från databasen i sessionen och sedan kollar du om sessionen har värdet 1 när du ska visa uppdatera-länken.
<%
If Session("admin") = "1" Then
%>
<a href="admin_update.asp?user=<%=rs("user_id")%>">Uppdatera profil</a>
<%
End If
%>
Sen får du köra en UPDATE-fråga i din SQL-sats på admin_update.asp, och självklart kolla om sessionen admin har värdet 1. :)
REDIGERING
<% Visa = "SELECT * FROM tblUser"
RecSet.Open Visa, Connect, 3, 3 %>
<% Do While Not RecSet.EOF %>
<tr>
<td><font size="1" face="verdana, arial"><% =RecSet("Name") %></font></td>
<td><font size="1" face="verdana, arial"><% =RecSet("Username") %></font></td>
<td><font size="1" face="verdana, arial"><% =RecSet("Password") %></font></td>
<td><font size="1" face="verdana, arial"><a href="mailto:<% =RecSet("Mail") %>"><% =RecSet("Mail") %></a></font></td>
<td align="center"><font size="1" face="verdana, arial"><% =RecSet("Access") %></font></td>
[b]<%
If Session("admin") = "1" Then
%>
<a href="admin_update.asp?username=<% RecSet("Username") %>">Uppdatera</a>
<%
End If
%>
[/b]
</tr>
<% RecSet.MoveNext
Loop %>
Visa = "SELECT * FROM tblUser WHERE Username = '" & Request.Querystring("username") & "'
'Resten av koden som exekverar SQL-frågan och skapar recordset
Nu har vi hämtat all data i databasen där username är lika med det vi skickade med i querystringen.
Om du vill ha det ifyllt i fälten är det bara att loopa ut det i input-rutornas value:
Nu har jag kommit en bra bit, men tyvärr inte hela vägen.
Det är bara det sista kvar, dvs att uppdatera från fälten.
Nu ser min kod ut som en jäkla soppa..när jag trycker på min formulärknapp kommer man till denna del. Det enda som händer då är att texten skrivs ut men användarnamnen osv är fortfarande samma som inna. Alltså inget felmeddelade.
<% ElseIf Request.QueryString("alt") = "update" Then %>
<b>Användaruppgifter uppdaterade</b><p>
<% Visa = "SELECT * FROM tblUser"
RecSet.Open Visa, Connect, 3, 3 %>
<% strUser=Request.Form("username") %>
<% Visa = "UPDATE tblUser SET password = '" & Request.Form("password") & "' WHERE name='" & strUser & "'" %>
<% RecSet.Close
End If %>
När man skriver SQL i början..måste man ha en sql databas eller kan det vara access? Måste man skriva in SQL någon annan stans för att det ska fungera och jag förstår inte riktigt vad man måste skriva innan för att det ska fungera..dum som man är :)
Jag får dett felmeddelande:
ADODB.Recordset error '800a0e78'
Operation is not allowed when the object is closed.