|
| Visning af x antal nyoprettede poster i db Fra : SoulMate |
Dato : 04-12-00 17:53 |
|
Hej NG
Jeg har godt nok brug for lidt hjælp her...
Jeg har en side, hvor det er muligt at indsætte data til min sql-db.
Efter hver INSERT returneres brugeren til samme side - med server.transfer.
Efter at have tilføjet x antal poster med denne side i tabellen i db, kan
brugeren trykke på afslut.
Her kommer mit problem; jeg vil gerne vise brugeren en oversigt over alle de
indsatte poster.
Jeg ved hvordan jeg kan vise alle poster i tabellen med select * from...osv.
Jeg ved også hvordan jeg kan vise nyeste post - ved at sætte et id og så
bruge: "select * from tabelnavn where id = (select max(id) from tabelnavn) "
Men hvordan kan jeg vise brugeren en oversigt over de poster i databasen som
han lige har indtastet? Antallet kan være fra 1 til ...??
Er nøgleordet muligvis session-etellerandet (er ikke så stiv i dette)?
- the SoulMate
| |
Lauritz Jensen (04-12-2000)
| Kommentar Fra : Lauritz Jensen |
Dato : 04-12-00 23:46 |
|
Du kan jo ikke nøjes med bare at vise de x sidste poster, for der kan jo
havde siddet to og tastet ind samtidigt. Jeg ville nok også stemme imod
at bruge server.transfer, for hvis en bruger lige har indtastet en række
og derpå trykker 'reload' vil rækken blive indsat igen (jeg ville nok
bruge response.redirect, men jeg er jo også en maskinstormer).
Det er jo slet ikke sikkert, at det du vil er den rigtige måde at gøre
det på, og session er jo aldrig rart. Men her er et forsøg (man kunne
evt. også vente med at opdaterer databasen til brugeren klikker
'afslut', så man også kan give dem en mulighed for at fortryde):
<%
Dim func
func = LCase(Trim(Request("func")))
If (func = "add") Then
'-- her tilføjes data til basen, AddNewRow skal laves
new_id = AddNewRow(Request("tekst1"))
If Not (Trim(session("add_id")) = "") Then session("add_id") =
Trim(session("add_id")) & ","
session("add_id") = Trim(session("add_id")) & new_id
ElseIf (func = "view") Then
If Not (session("add_id") = "") Then
sql = ""
sql = sql & "select tekst1 "
sql = sql & "from table1 "
sql = sql & "where id IN (" & session("add_id") & ") "
rs.Open sql, conn
Do Until rs.EOF
Response.Write Server.HtmlEncode("tekst1") & "<br>"
rs.movenext
Loop
rs.Close
Else
Response.Write "Du har slet ikke tilføjet noget"
End If
Else
Response.Write "<form name=""addform"" action=""test.asp""
method=post>"
Response.Write "<input type=hidden name=""func"" value="""">"
Response.Write "<input type=text name=""tekst1"" value="""">"
Response.Write "<input type=submit value=""Tilføj""
onClick=""document.addform.func.value='add';"">"
Response.Write "<input type=submit value=""Vis tilføjede""
onClick=""document.addform.func.value='view';"">"
Response.Write "</form>"
End If
%>
--
Lauritz
| |
SoulMate (05-12-2000)
| Kommentar Fra : SoulMate |
Dato : 05-12-00 16:18 |
|
Tak for svaret.
Jeg kan vel ikke få dig til kort at kommentere koden, da jeg ikke er 100%
klar over det der sker undervejs...
Og hvor skal jeg bruge denne kode? I den fil hvor brugeren indtaster
oplysningerne, eller på den side der redirecter eller hvad?
På forhånd tusind tak for hjælpen.
"Lauritz Jensen" <lauritz2@hotmail.com> skrev i en meddelelse
news:3A2C1EB3.6410A1BE@hotmail.com...
> Du kan jo ikke nøjes med bare at vise de x sidste poster, for der kan jo
> havde siddet to og tastet ind samtidigt. Jeg ville nok også stemme imod
> at bruge server.transfer, for hvis en bruger lige har indtastet en række
> og derpå trykker 'reload' vil rækken blive indsat igen (jeg ville nok
> bruge response.redirect, men jeg er jo også en maskinstormer).
>
> Det er jo slet ikke sikkert, at det du vil er den rigtige måde at gøre
> det på, og session er jo aldrig rart. Men her er et forsøg (man kunne
> evt. også vente med at opdaterer databasen til brugeren klikker
> 'afslut', så man også kan give dem en mulighed for at fortryde):
>
> <%
> Dim func
> func = LCase(Trim(Request("func")))
>
> If (func = "add") Then
> '-- her tilføjes data til basen, AddNewRow skal laves
> new_id = AddNewRow(Request("tekst1"))
>
> If Not (Trim(session("add_id")) = "") Then session("add_id") =
> Trim(session("add_id")) & ","
> session("add_id") = Trim(session("add_id")) & new_id
> ElseIf (func = "view") Then
> If Not (session("add_id") = "") Then
> sql = ""
> sql = sql & "select tekst1 "
> sql = sql & "from table1 "
> sql = sql & "where id IN (" & session("add_id") & ") "
> rs.Open sql, conn
> Do Until rs.EOF
> Response.Write Server.HtmlEncode("tekst1") & "<br>"
> rs.movenext
> Loop
> rs.Close
> Else
> Response.Write "Du har slet ikke tilføjet noget"
> End If
> Else
> Response.Write "<form name=""addform"" action=""test.asp""
> method=post>"
> Response.Write "<input type=hidden name=""func"" value="""">"
> Response.Write "<input type=text name=""tekst1"" value="""">"
> Response.Write "<input type=submit value=""Tilføj""
> onClick=""document.addform.func.value='add';"">"
> Response.Write "<input type=submit value=""Vis tilføjede""
> onClick=""document.addform.func.value='view';"">"
> Response.Write "</form>"
> End If
>
> %>
>
> --
> Lauritz
| |
Lauritz Jensen (06-12-2000)
| Kommentar Fra : Lauritz Jensen |
Dato : 06-12-00 19:40 |
|
SoulMate wrote:
>
> Tak for svaret.
>
> Jeg kan vel ikke få dig til kort at kommentere koden, da jeg ikke er 100%
> klar over det der sker undervejs...
>
> Og hvor skal jeg bruge denne kode? I den fil hvor brugeren indtaster
> oplysningerne, eller på den side der redirecter eller hvad?
Koden laver alle tre sider (både indtastning formularen, siden der
lægger oplysningerne i databasen, og siden man kommmer til når man er
færdig). Med parameteren "func" styre man hvilken siden man vil se (eks.
"http:/din.server/test.asp?func=view" viser afslutnings siden).
> På forhånd tusind tak for hjælpen.
>
> "Lauritz Jensen" <lauritz2@hotmail.com> skrev i en meddelelse
> news:3A2C1EB3.6410A1BE@hotmail.com...
> > Du kan jo ikke nøjes med bare at vise de x sidste poster, for der kan jo
> > havde siddet to og tastet ind samtidigt. Jeg ville nok også stemme imod
> > at bruge server.transfer, for hvis en bruger lige har indtastet en række
> > og derpå trykker 'reload' vil rækken blive indsat igen (jeg ville nok
> > bruge response.redirect, men jeg er jo også en maskinstormer).
> >
> > Det er jo slet ikke sikkert, at det du vil er den rigtige måde at gøre
> > det på, og session er jo aldrig rart. Men her er et forsøg (man kunne
> > evt. også vente med at opdaterer databasen til brugeren klikker
> > 'afslut', så man også kan give dem en mulighed for at fortryde):
> >
> > <%
> > Dim func
> > func = LCase(Trim(Request("func")))
> >
> > If (func = "add") Then
Denne del af koden kaldes når man skal have indsat en række i tabellen
(altså når man submitter formen).
> > '-- her tilføjes data til basen, AddNewRow skal laves
> > new_id = AddNewRow(Request("tekst1"))
Her indsættes id'et, fra en just oprettede række, i en kommasepereret
liste i en session-vaiabel, så vi ved hvilke rækker brugeren har indsat.
> > If Not (Trim(session("add_id")) = "") Then session("add_id") =
> > Trim(session("add_id")) & ","
> > session("add_id") = Trim(session("add_id")) & new_id
> > ElseIf (func = "view") Then
Denne del af koden vises når brugeren vil se hvilke rækker han (m/k) har
indsat.
> > If Not (session("add_id") = "") Then
Hvis den kommasepererede liste af id'er ikke er tom, henter vi de
indsatte rækker ud af tabellen og viser dem til brugeren. Det
forudsættes at du andetsteds har oprettet et connection objekt i
variablen conn og åbnet det, og at du har lavet et recordset objekt i
rs.
> > sql = ""
> > sql = sql & "select tekst1 "
> > sql = sql & "from table1 "
> > sql = sql & "where id IN (" & session("add_id") & ") "
> > rs.Open sql, conn
> > Do Until rs.EOF
> > Response.Write Server.HtmlEncode("tekst1") & "<br>"
> > rs.movenext
> > Loop
> > rs.Close
> > Else
Dette vises hvis den kommasepererede liste er tom.
> > Response.Write "Du har slet ikke tilføjet noget"
> > End If
> > Else
Denne del af koden viser indtastningsformularen
> > Response.Write "<form name=""addform"" action=""test.asp""
> > method=post>"
> > Response.Write "<input type=hidden name=""func"" value="""">"
> > Response.Write "<input type=text name=""tekst1"" value="""">"
Bemærk javascripten på submitknapperne, som vælger vilken side brugeren
kommer over til. Dette kunne undgås ved at lave "vis tilføjede" til et
link eller lave to <form>s.
> > Response.Write "<input type=submit value=""Tilføj""
> > onClick=""document.addform.func.value='add';"">"
> > Response.Write "<input type=submit value=""Vis tilføjede""
> > onClick=""document.addform.func.value='view';"">"
> > Response.Write "</form>"
> > End If
> >
> > %>
--
Lauritz
| |
SoulMate (05-12-2000)
| Kommentar Fra : SoulMate |
Dato : 05-12-00 16:18 |
|
Mange tak for hjælpen
"Lauritz Jensen" <lauritz2@hotmail.com> skrev i en meddelelse
news:3A2C1EB3.6410A1BE@hotmail.com...
> Du kan jo ikke nøjes med bare at vise de x sidste poster, for der kan jo
> havde siddet to og tastet ind samtidigt. Jeg ville nok også stemme imod
> at bruge server.transfer, for hvis en bruger lige har indtastet en række
> og derpå trykker 'reload' vil rækken blive indsat igen (jeg ville nok
> bruge response.redirect, men jeg er jo også en maskinstormer).
>
> Det er jo slet ikke sikkert, at det du vil er den rigtige måde at gøre
> det på, og session er jo aldrig rart. Men her er et forsøg (man kunne
> evt. også vente med at opdaterer databasen til brugeren klikker
> 'afslut', så man også kan give dem en mulighed for at fortryde):
>
> <%
> Dim func
> func = LCase(Trim(Request("func")))
>
> If (func = "add") Then
> '-- her tilføjes data til basen, AddNewRow skal laves
> new_id = AddNewRow(Request("tekst1"))
>
> If Not (Trim(session("add_id")) = "") Then session("add_id") =
> Trim(session("add_id")) & ","
> session("add_id") = Trim(session("add_id")) & new_id
> ElseIf (func = "view") Then
> If Not (session("add_id") = "") Then
> sql = ""
> sql = sql & "select tekst1 "
> sql = sql & "from table1 "
> sql = sql & "where id IN (" & session("add_id") & ") "
> rs.Open sql, conn
> Do Until rs.EOF
> Response.Write Server.HtmlEncode("tekst1") & "<br>"
> rs.movenext
> Loop
> rs.Close
> Else
> Response.Write "Du har slet ikke tilføjet noget"
> End If
> Else
> Response.Write "<form name=""addform"" action=""test.asp""
> method=post>"
> Response.Write "<input type=hidden name=""func"" value="""">"
> Response.Write "<input type=text name=""tekst1"" value="""">"
> Response.Write "<input type=submit value=""Tilføj""
> onClick=""document.addform.func.value='add';"">"
> Response.Write "<input type=submit value=""Vis tilføjede""
> onClick=""document.addform.func.value='view';"">"
> Response.Write "</form>"
> End If
>
> %>
>
> --
> Lauritz
| |
Klaus (05-12-2000)
| Kommentar Fra : Klaus |
Dato : 05-12-00 13:04 |
|
SoulMate <tictac@moose.com> skrev i en
nyhedsmeddelelse:90gi6j$27q$1@news.inet.tele.dk...
> Hej NG
--snip--
>
> Jeg ved også hvordan jeg kan vise nyeste post - ved at sætte et id og så
> bruge: "select * from tabelnavn where id = (select max(id) from tabelnavn)
"
>
> Er nøgleordet muligvis session-etellerandet (er ikke så stiv i dette)?
>
> - the SoulMate
>
Du kan tildele hver bruger en id eller en session og bruge en sql
forespørgsel som henter de f.eks. 5 nyeste indtastninger fra denne
session/id.
Et eller andet i stil med:
Set DbRs= Connect.Execute ("SELECT TOP 5 db.id, db.bruger, db.brugerid,
db.dato FROM din_tabel WHERE ((brugerid)='Session('brugerid')')ORDER BY
db.dato DESC , db.id DESC")
og så ville jeg i øvrigt bruge response.redirect istedet for.
jeg har ikke afprøvet det her - så det skal kun ses som et eksempel
K.A
| |
|
|