Avatar billede unknown_someone Juniormester
17. november 2001 - 21:02 Der er 6 kommentarer og
1 løsning

paging af mysql-søgeresultat

Jeg sidder og er i gang med et mindre paging-system hvor der søges i en mysql-database, og her virker alt som det skal.

Jeg har bare et enkelt problem; nemlig hvis der er RIGTIG mange resultater... det jeg har siddet og arbejdet på, men som desværre ikke er lykkedes er at få sammen output som fx google.com, hvor der er en frem og tilbage knap (det har jeg) og så ellers MAKS 10 tal som refererer til siden man vil hen til... jeg har selve tallene, men jeg kan ikke få det minimeret til der kun er 10...

koden:

<%

mypage = request.querystring(\"side\")
if mypage = \"\" then
mypage=\"1\"
end if

    name = Trim(Request(\"name\"))
    postnr = Trim(Request(\"postnr\"))
    style = Trim(Request(\"style\"))

if right(request.servervariables(\"http_referer\"),12) = \"storeloc.htm\" then

    If Len(name) = 0 and Len(postnr) = 0 and Len(style) = 0 Then
            Response.Clear
            Response.Redirect(\"storeloc.htm\")
    Else
            name = Replace(name,\"\'\",\"\'\'\")
            postnr = Replace(postnr,\"\'\",\"\'\'\")
    End If
else
end if

Set rs = Server.CreateObject(\"ADODB.Connection\")
rs.Open \"DRIVER=mysql;SERVER=localhost;DATABASE=s-oliver;UID=;PWD=;\"
    if style = \"women\" then
        SQL = \"noget\"
    elseif style = \"girls\" then
        SQL = \"noget andet\"
    elseif style = \"kids\" then
        SQL = \"noget tredie\"
    else
        SQL = \"noget fjerde\"
    end if
rs.CursorLocation = 3
Set rs = rs.Execute(SQL)

If (rs.BOF AND rs.EOF) Then
    Response.Write \"no results found <br /><br />\"
Else

rs.movefirst
rs.pagesize=1
maxpages=rs.pagecount
maxrecs=rs.pagesize
rs.absolutepage=mypage
howmanyrecs=0

    Response.Write \"resultat \" & mypage & \" af \" & maxpages & \"<br /><br/>\" & VbCrLf

DO UNTIL rs.EOF OR howmanyrecs>=maxrecs

    Response.Write \"\" & rs(\"navn\") & \"<br />\" & rs(\"adr\") & \"<br />\" & rs(\"postnr\") & \" \" & rs(\"bynavn\") & \"<br/><br />\" & VbCrLf

rs.MoveNext
howmanyrecs=howmanyrecs+1
Loop

if not mypage = \"1\" then
    response.write \"<a href=\"\"search.asp?side=\" & (mypage - 1) & \"&name=\" & name & \"&postnr=\" & postnr & \"&style=\" & style & \"\"\">Back</a> \" & VbCrLf
end if

end if
    Response.Write \"[\"
for counter=\"1\" to maxpages
If counter >= maxpages then
end if
    response.write \"<a href=\"\"search.asp?side=\" & counter & \"&name=\" & name & \"&postnr=\" & postnr & \"&style=\" & style & \"\"\">\" & counter & \"\" & counter & \"</a>\" & VbCrLf
if counter <> maxpages then response.write \" \"
next
    Response.Write \"]\"
If clng(mypage) < clng(maxpages) then
    response.write \" <a href=\"\"search.asp?side=\" & mypage + 1 & \"&name=\" & name & \"&postnr=\" & postnr & \"&style=\" & style & \"\"\">Next </a>\" & VbCrLf
end if

rs.Close
Set rs = Nothing

%>
Avatar billede unknown_someone Juniormester
17. november 2001 - 23:50 #1
tak for hjælpen... :)

er løst
Avatar billede eagleeye Praktikant
18. november 2001 - 10:21 #2
I mySQL SQL findes en LIMIT som er ganke god til paging.

LIMIT start,antal

eks:
\"SELECT * FROM tabel WHERE noget LIMIT 0,10\"

Så når du linker til din side kan si skrive sidenr og hendte med requesr.querystring.

dinside.asp?sidenr=1

og så sidenr=request.querystring(\"sidenr\")
if sidenr=\"\" then sidenr=0
startIndex = 10*sidenr
og så bliver SQL\'en:
\"SELECT * FROM tabel WHERE noget LIMIT \"&startIndex&\",10\"
Avatar billede bjarke-b Nybegynder
18. november 2001 - 18:37 #3
Jeg har lige skrevet en artikel om den paging metode eagleeye fortæller.

Koden er her:

<%
\'Opretter Connection
Set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open \"DRIVER={MySQL}; server=localhost; database=test; uid=; pwd=;\"


\'Først skal vi have antallet af poster
Set objRs = Conn.Execute(\"SELECT COUNT(*) AS records FROM tabel;\")
intRecords = int(objRs(\"records\"))
objRs.Close
Set objRs = Nothing

\'Variabler til query´et
intPage = Request.QueryString(\"page\")
if intPage = \"\" OR not isNumeric(intPage) then
    intPage = int(1)
else
    intPage = int(intPage)
end if
intPageSize = int(5)
intStart = intPage*intPageSize
intStart = intStart-intPageSize
intPages = int(intRecords/intPageSize)+1

Set objRs = Conn.Execute(\"SELECT * FROM tabel LIMIT \" & intStart & \", \" & intPageSize & \";\")
   
    if objRs.EOF or objRs.BOF then
        Response.Write \"Ingen poster\"
    else
        Response.Write \"<table border=\"\"1\"\" cellpadding=\"\"3\"\">\"
            Response.Write \"<tr>\"
                Response.Write \"<td><b>id</b></td>\"
                Response.Write \"<td><b>Site</b></td>\"
            Response.Write \"</tr>\"
               
            Do until objRs.EOF
                Response.Write \"<tr>\"
                    Response.Write \"<td>\" & objRs(\"id\") & \"</td>\"
                    Response.Write \"<td><a href=\"\"\" & objRs(\"url\") & \"\"\">\" & objRs(\"navn\") & \"</a></td>\"
                Response.Write \"</tr>\"
            objRs.MoveNext
            Loop
        Response.Write \"</table>\"
    end if

objRs.Close
Set objRs = Nothing

\'Udskriver en \"sideliste\"
For i = 1 to intPages
    if i = intPage then
        Response.Write \"<b>\" & i & \"</b> \"
    else
        Response.Write \"<a href=\"\"paging.asp?page=\" & i & \"\"\">\"
        Response.Write i
        Response.Write \"</a> \"
    end if
next

Conn.Close
Set Conn = Nothing
%>
Avatar billede netsrac Praktikant
18. november 2001 - 19:15 #4
Bjarke-b >> Copycat mand, skrev en artikel for vistnok 3 dage siden.

http://www.netsrac.dk/netsrac-dk/asp0006.asp
Avatar billede unknown_someone Juniormester
19. november 2001 - 00:53 #5
i må først undskylde at jeg ikke tester jeres løsninger, men i stedet spørger... det som er meningen er (og som er løst nu) er at der vha fx 21 søgeresultater skal stå

<<tilbage [ 1 2 3 4 5 6 7 8 9 10 ] frem>>

og er jeg så på side 7 skal der stå

<<tilbage [ 3 4 5 6 7 8 9 10 11 12 ] frem>>

gør der dette i jeres løsninger?
Avatar billede netsrac Praktikant
19. november 2001 - 07:36 #6
Der står ikke Frem og Tilbage i min men der står alle talene.
Avatar billede unknown_someone Juniormester
05. december 2001 - 15:57 #7
det må siges at jeg selv har løst opgaven (som skrevet for lang tid siden... derfor afsluttes spm.
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