Avatar billede frido Nybegynder
14. februar 2002 - 10:25 Der er 10 kommentarer og
1 løsning

limit på f.eks. 10 sider fra en database ind i en gæstebog?

Jeg har lavet en form der submitter data fra de forskellige felter ind i en database. Det er til en gæstebog. (og nej jeg gider ikke hente en eller anden gæstebog, vil gerne selv lave det...)
Jeg vil så gerne have ASP-scriptet til at hente f.eks. de første 10 indlæg(linier) i sin database over til gæstebogen. Jeg laver en dropdown menu (form) der så vælger antal indlæg man nu måtte ønske hvor der så bliver hentet det antal ind i dokumentet fra databasen.
Med PHP er koden vist LIMIT 0,10 ved 10 indlæg - men hvordan gør man så med ASP?

/Frido
Avatar billede frido Nybegynder
14. februar 2002 - 10:26 #1
Her er koden lige for en sikkerheds skyld...

<form name="form" method="post" action="guestbook-skriv.asp" onSubmit="validering();return false";>
                      <tr>
                        <td colspan="2">
                          <input type="hidden" name="dato" value="dato">
                        </td>
                      </tr>
                      <tr>
                        <td valign="top">
                          <p>Navn:
                            <input type="text" name="navn">
                          </p>
                        </td>
                        <td valign="top">Email:
                          <input type="text" name="email">
                        </td>
                      </tr>
                      <tr>
                        <td colspan="2">Kommentar:
                          <textarea name="kommentar" cols="50" rows="5"></textarea>
                        </td>
                      </tr>
                      <tr>
                        <td align="right">
                          <input type="submit" name="send" value="Send">
                        </td>
                        <td>
                          <input type="reset" name="Reset" value="Nulstil">
                        </td></form>
                      </tr>
                      <tr>
                        <td colspan="2">
                          <hr noshade align="center" size="1">
                        </td>
                      </tr>
                      <tr>
                        <td colspan="2" class="maintext"> 
                          <%
Set Conn = Server.CreateObject ("ADODB.Connection")
DSN ="DRIVER={Microsoft Access Driver (*.mdb)};"
DSN = DSN & "DBQ=" & Server.MapPath ("/guestbook/database.mdb")
Conn.Open DSN

strSQL = "Select * from data Order by dato Desc"
Set rs = Conn.Execute(strSQL)
Do

strEmail = rs("email")
strLink = "<a href=mailto:" & rs("email") & ">" & strEmail & "</a><BR><BR>"
Response.Write rs("dato") & "<BR><BR>"
Response.Write "Navn: " & rs("navn") &"<BR>"
Response.Write "Email: " & strLink
Response.Write rs("kommentar") & "<BR><BR><HR noshade size=1>"
rs.MoveNext
Loop While Not rs.EOF
Conn.Close
Set Conn = Nothing
%>
Avatar billede repsac Nybegynder
14. februar 2002 - 10:29 #2
Det er vel ligegyldigt om det er ASP eller PHP ... du har jo fat i access som skal fatte noget sql ... så det går vel udemærket(?) (har du ikke prøvet?)
Avatar billede kennethrisum Nybegynder
14. februar 2002 - 10:29 #3
Lav din sql om til "Select TOP 10 * FROM data Order by Dato DESC"
Avatar billede frido Nybegynder
14. februar 2002 - 10:31 #4
Den side her henviser til en anden side der har samme script, men der kan bare skrives ind med den anden side - den side her er kun til at "hente data", ellers kan man indsætte tomme felter ind i sin database bare ved at opdatere siden (F5) og det er jo ikke meningen.

Forskellen er faktisk kun:

<%
Set Conn = Server.CreateObject ("ADODB.Connection")
DSN ="DRIVER={Microsoft Access Driver (*.mdb)};"
DSN = DSN & "DBQ=" & Server.MapPath ("/guestbook/database.mdb")
Conn.Open DSN

<!-- skriver data ind i databasen-->
strSQL = "Insert into data (dato, navn, email, kommentar) values('" & Request.Form("dato") & "','" & Request.Form("navn") & "','" & Request.Form("email") & "', '" & Request.Form("kommentar") & "')"
Conn.Execute strSQL

strSQL = "Select * from data Order by dato Desc"
Set rs = Conn.Execute(strSQL)
Do

strEmail = rs("email")
strLink = "<a href=mailto:" & rs("email") & ">" & strEmail & "</a><BR><BR>"
Response.Write rs("dato") & "<BR>"
Response.Write "Navn: " & rs("navn") &"<BR>"
Response.Write "Email: " & strLink
Response.Write rs("kommentar") & "<BR><BR><HR noshade size=1>"
rs.MoveNext
Loop While Not rs.EOF
Conn.Close
Set Conn = Nothing
Response.Redirect "guestbook.asp"
%>

Okay, nu håber jeg at jeg har forklaret det så man kan forstå det..

/Frido
Avatar billede frido Nybegynder
14. februar 2002 - 10:40 #5
Fint - det virker, nu viser den de 10 første indlæg.
Men hvis jeg laver en drop down menu med f.eks 5 muligheder for antal indlæg ( f.eks. 10/25/50/75/100) - hvordan ændrer man så dynamisk "TOP 10" feltet?
Ellers kan man godt sige det var et svar, og dog.. Hvad gør jeg så? :/
Avatar billede frido Nybegynder
14. februar 2002 - 11:03 #6
>>Repsac - selvfølgelig har jeg prøvet det, ellers ville jeg jo ikke poste det indlæg her i Eksperten.dk - ikke sandt? ;)
Avatar billede kennethrisum Nybegynder
14. februar 2002 - 11:15 #7
"Select TOP " & Count & " * FROM data Order by Dato DESC"

Hvor Count er drop down menuens værdi
Avatar billede frido Nybegynder
14. februar 2002 - 11:41 #8
Hm - det kan jeg ikke rigtig få til at virke - her er form+script, så hvad gør jeg galt?

<!-- Javascript til at vælge uden at skulle trykke "ok" -->
<script language="Javascript">
function selectIndlaeg()
{
document.limitform.submit();
}
</script>

<!-- selve drop-down menuen -->
<form method="post" action="guestbook.asp" enctype="application/x-www-form-urlencoded" name="limitform">
Vis <select name="limitform" onchange="selectIndlaeg()">
<option selected value="10">10</option>
<option  value="25">25</option>
<option  value="50">50</option>
<option  value="75">75</option>
<option  value="100">100</option>
<option  value="*">Alle</option>
</select>
indl&aelig;g</form>
</td>
</tr>
                      <tr>
                        <td colspan="2">
                          <hr noshade align="center" size="1">
                        </td>
                      </tr>
                      <tr>
                        <td colspan="2" class="maintext"> 
                          <%
Set Conn = Server.CreateObject ("ADODB.Connection")
DSN ="DRIVER={Microsoft Access Driver (*.mdb)};"
DSN = DSN & "DBQ=" & Server.MapPath ("/guestbook/database.mdb")
Conn.Open DSN

<!-- vælger antal rækker fra databasen -->
strSQL = "Select TOP " & Count & " * FROM data Order by Dato DESC"
Set rs = Conn.Execute(strSQL)
Do

strEmail = rs("email")
strLink = "<a href=mailto:" & rs("email") & ">" & strEmail & "</a><BR><BR>"
Response.Write rs("dato") & "<BR><BR>"
Response.Write "Navn: " & rs("navn") &"<BR>"
Response.Write "Email: " & strLink
Response.Write rs("kommentar") & "<BR><BR><HR noshade size=1>"
rs.MoveNext
Loop While Not rs.EOF
Conn.Close
Set Conn = Nothing
%>

Har på fornemmelsen at der er noget med "limitform" og "count" der ikke hænger sammen...?
Avatar billede kennethrisum Nybegynder
14. februar 2002 - 11:50 #9
Prøv at bruge dette som din sql:

Dim Count
Count = Request.Form("limitform")
If Count = "*" Then
  strSQL = "Select * FROM data Order by Dato DESC"
ElseIf Count = "" Then
  strSQL = "Select TOP 10 * FROM data Order by Dato DESC"
Else
  strSQL = "Select TOP " & Count & " * FROM data Order by Dato DESC"
End If
Avatar billede frido Nybegynder
14. februar 2002 - 12:29 #10
Det var dog det lækreste du kan! Mange tak for det - de 100 points er MEGET GODT givet ud! :)
Avatar billede kennethrisum Nybegynder
14. februar 2002 - 12:49 #11
Du er velkommen.
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
Computerworld tilbyder specialiserede kurser i database-management

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