Avatar billede sapworld Nybegynder
29. september 2003 - 11:15 Der er 7 kommentarer og
1 løsning

Rette i en database vha. en form

Hej

Jeg skriver data til en database fra en form. Data fra form'en sendes til denne side (result.asp) og skrives derved ned i access databasen.

Jeg har en side (display_database.asp) hvor jeg kan vise data i databasen, og kunne på denne godt tænke mig at have et link på denne side, der henter data frem på en ny side i en "form", hvor de kan rettes, og derefter gemmes.

Hvordan gøres det?

Hilsen

Kim
Avatar billede nmh Nybegynder
29. september 2003 - 11:22 #1
Nu giver jeg dig en række små programmmer, der viser hvordan man kan gøre det:
Gem data:
<%
'Denne ASP-side sørger for at gemme den indlæste
'post eller record som en række i tabellen Test i A2000.mdb.
'Derefter sendes IndRecord.asp igen til brugeren.
Option Explicit
Dim Conn, SQL
Dim Fnavn, Enavn, Bem
set Conn=server.createobject("adodb.connection")
Conn.open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
          "Data Source=c:\inetpub\wwwroot\p3\A2000.mdb"
Fnavn=Request.Form("Fnavn")
Enavn=Request.Form("Enavn")
Bem=Request.Form("Bem")
SQL="Insert Into Test (Fornavn,Efternavn,Kommentar) Values " & _
    "('" & Fnavn & "','" & Enavn & "','" & Bem &"')"
Conn.execute SQL
Conn.close
Set Conn=nothing
Response.redirect("IndRecord.asp")
%>
Avatar billede nmh Nybegynder
29. september 2003 - 11:26 #2
Editer data:
(mon ikke det er sådan en side, du ønsker)
<%
'Denne ASP-side sender den ønskede post til til editering hos brugeren.
'Brugeren kan vælge mellem at gemme resultatet eller at returnere.
Dim Sortnr, ID, conn, rs
SortNr=Request.QueryString("SortNr")
ID=Request.Form("ID")
set conn =server.CreateObject("ADODB.Connection")
Conn.open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
          "Data Source=c:\inetpub\wwwroot\p3\A2000.mdb"
SQL="select * from Test where ID=" & ID
set rs=conn.execute(SQL)
%>
<html>
<script language=VBscript>
Option Explicit
sub Gem(n)
  F.ID.value=<%=ID%>
  F.Fn.value=n
  F.action="GemEditeret.asp?SortNr=" & <%=SortNr%>
  F.submit
end sub

sub Retur
  F.action="Visalt3.asp?SortNr=" & <%=SortNr%>
  F.submit
end sub
</script>
<body>
<form name=F action="q.asp" method=post>
  ID: <%=ID%><p>
  <input type=hidden name=ID>
  <input type=hidden name=Fn>
  Fornavn:<br>
  <input name=Fnavn value=<%=rs.fields("Fornavn")%>><p>
  Efternavn:<br>
  <input name=Enavn value=<%=rs.fields("Efternavn")%>><p>
  Bemærkninger:<br>
  <textarea name=Bem cols=20 rows=10><%=rs.fields("Kommentar")%></textarea><p>
  <input type=button value="Gem og returner" onClick="Gem(1)">
  <input type=button value="Returner" onClick="Retur">
  <input type=button value="Slet posten" onClick="Gem(0)">
</form>
<%
rs.close
conn.close
set conn=nothing
%>
</body>
</html>
Avatar billede nmh Nybegynder
29. september 2003 - 11:28 #3
Og her er så en side, der kan bruges til at gemme den editerede post:
<%
'Denne ASP-side gemmer den editerede post i databasen
'eller sletter posten afhængig af, om Fn er 1 eller 0.
Option Explicit
Dim conn, SQL, ID, Fnavn, Enavn, Bem, SortNr, Fn
SortNr=Request.QueryString("SortNr")
ID=Request.form("ID")
Fn=Request.form("Fn")
Fnavn=request.form("Fnavn")
Enavn=request.form("Enavn")
Bem=request.form("Bem")
set conn =server.CreateObject("ADODB.Connection")
Conn.open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
          "Data Source=c:\inetpub\wwwroot\p3\A2000.mdb"
if Fn="1" then
  SQL="Update Test set Fornavn='" & Fnavn & "' ,Efternavn='" & _
        Enavn & "', Kommentar='" & Bem & "' where ID=" & ID
elseif Fn="0" then
  SQL="Delete * from Test where ID=" & ID
end if
if SQL<>"" then conn.execute SQL
conn.close
set conn=nothing
Response.redirect("VisAlt3.asp?SortNr=" & SortNr)
%>
Avatar billede sapworld Nybegynder
29. september 2003 - 12:10 #4
Siden skal ikke sendes til brugeren for at vedkommende kan rette i det. Det er en anden bruger der kan gå ind i databasen og rette en status via en side.
Avatar billede myztic Nybegynder
29. september 2003 - 13:16 #5
altså bare en simpel form der hiver det ind?

Følgende er bare principskrivning, går ud fra du kan fylde koden ind selv?

<form method="post" action="[updater siden]">
Field1:<input type="text" value="<%response.write variable1%>" name="field1">
Field2:<input type="text" value="<%response.write variable2%>" name="field2">
<input type="submit" value="Submit">
</form>

Variablerne fylder du bare med info fra databasen, eller bruge directe dit recordset/database array til at fylde det ind i formen med....
på update siden henter du bare som altid form informationen ind med Request.Form("field1") og så bruger UPDATE istedet for INSERT INTO strengen til din database :)
Avatar billede nmh Nybegynder
29. september 2003 - 13:29 #6
sapworld>> Men den anden bruger kan da så gøre det, som jeg forslår.
Eller har jeg helt misforstået, hvad det er du ønsker?
Avatar billede sapworld Nybegynder
29. september 2003 - 14:17 #7
Hej
Senariet er følgende:
En bruger tilmeder sig og får automatisk status "new" i feltet "status" i databasen (den er klaret). Den ansvarlige som ikke har adgang til databasen, skal kunne gå ind via en homepage, og kunne ændre dette ene felt til f.eks approved eller not approved osv.

Hilsen

Kim
Avatar billede nmh Nybegynder
29. september 2003 - 14:23 #8
Men det er jo præcis det de to sider editer og gem editeret kan gøre.
Det er kun at rette dem til din databse.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester