Avatar billede gonza.dk Nybegynder
21. juli 2002 - 14:31 Der er 21 kommentarer og
1 løsning

Søgning og paging... Hjælp

Heyza allesammen.

Jeg har et lille problem med en side. Den skal lave paging på min søgning. Dette gør den også fint, men når man skal videre til side 2, viser den som hvis man havde søgt på alle. Det er til et jokesystem. Du kan se hvad jeg mener her:

www.gonza.dk/main/jokes/paging.asp

Vælg 'alle børnene' Da der er nok jokes der til flere sider. Bare lad søgeordet være tomt.

koden:
<%@ Language=VBScript %>


<%
intPage = Request("page")
If isNumeric(intPage) = False Or intPage < 1 Then
intPage = 1
End If

genre = Request.Form("genre")
soegeord = Request.Form("soegeord")

Set rs = Server.CreateObject("ADODB.RecordSet")

strSQL = "SELECT * FROM jokes WHERE Joke LIKE '%" & soegeord & "%' AND Genre LIKE '%" & Genre & "%' ORDER BY ID DESC"
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("../../../db/database.mdb")
rs.Open strSQL, strDSN, 1
If Not (rs.BOF Or rs.EOF) Then
rs.PageSize = 5
rs.AbsolutePage = intPage
intRecCount = rs.PageSize
intPageCount = rs.PageCount
%>

<HTML>
<HEAD>
<title>www.gonza.dk - The Plaze 2 B</title>

<style type="text/css">
BODY {
      scrollbar-face-color: #333399;
      scrollbar-shadow-color: #000000;
      scrollbar-highlight-color: #333399;
      scrollbar-3dlight-color: #000000;
      scrollbar-darkshadow-color: #333399;
      scrollbar-track-color: #ffffff;
      scrollbar-arrow-color: #ffffff;
      }
</style>

<style><!--a:hover{font-weight:bold; text-decoration:underline; color:#ffffff; }--></style>

<style>
<!--

/*
Text Link Underline Remover Script-
© Dynamic Drive (www.dynamicdrive.com)
For full source code, installation instructions,
100's more DHTML scripts, and Terms Of
Use, visit dynamicdrive.com
*/

a{text-decoration:none}
//-->
</style>

</head>
<body link="#99ccff" vlink="#99ccff" alink="#ffffff">
<center>
<form method="post" action="paging.asp">

<table border="1" bordercolor="#454545" bgcolor="#99ccff">
<tr>
        <td bgcolor="#333399" align="center" colspan="3"><font face=arial color="99ccff" size="2"><b>Søg i databasen</b></font></td>
</tr>
<tr>

    <td bgcolor="#333399"><input type="text" name="soegeord" value="">         

</td>

    <td bgcolor="#333399"><select name="genre">
                                        <option value="&nbsp;">Alle Genre</option>
                                        <option value="Alle Børnene">Alle børnene</option>
                                        <option value="Blondine">Blondine</option>
                                        <option value="Dyr">Dyr</option>
                                        <option value="Frække">Frække</option>
                                        <option value="Grove">Grove</option>
                                        <option value="Hos sct. Peter">Hos sct. Peter</option>
                                        <option value="Københavenere">Københavere</option>
                                        <option value="Kvinder">Kvinder</option>
                                        <option value="Kærlighed">Kærlighed</option>
                                        <OPTION VALUE="Med på arbejde">Med på arbejde</OPTION>
                                        <option value="Mænd">Mænd</option>
                                        <OPTION VALUE="Scor, slap af">Scor, slap af</OPTION>
                                        <option value="Sport">Sport</option>
                                        <option value="Søde Jokes">Søde Jokes</option>
                                        <option value="ægteskab">Ægteskab</option>
                                        <option value="Århus">Århus historier</option>
                                        <option value="Alt det andet">Alt det andet</option>
                                        </select></td>

<td align="center" bgcolor="#333399">
<input type="submit" value="Søg">
</td>
</tr>
</form>



<%
Response.Write "<tr><td bgcolor='#333399' align='center' colspan='3'><font face='arial' color='99ccff' size='2'><b>Side " & intPage & " af " & intPageCount & "</b></font></td></tr></table></center><br>"

Do While Not rs.EOF And intRecCount > 0



joke=rs("joke")
response.write "<center><table border='1' bordercolor='#454545' bgcolor='#99ccff' width='500'><tr><td colspan='2' align='center' bgcolor='#333399'><font face='arial' size='3' color='#99ccff'><b>" & rs("genre") & "</b></font></td></tr>"
response.write "<tr><td width='70%' bgcolor='#333399'><font face='arial' size='3' color='#99ccff'><b>&nbsp;" & rs("titel") & "</b></font></td><td width='30%' bgcolor='#333399' align='right'><font face='arial' size='3' color='#99ccff'><b>" & rs("dato") & "&nbsp;</b></font></td></tr>"
response.write "<tr><td colspan='2' align='center' bgcolor='#99ccff'><font face='arial' size='3' color='#333399'><b>" & replace((joke),VbCrLf,"<br>") & "</b></font></td></tr></table><br><br></center>"


intRecCount = intRecCount - 1

rs.MoveNext
Loop
End If

rs.Close
Set rs = Nothing

Response.Write "<center><table bgcolor='99ccff' border='1' bordercolor='454545' width='500'><tr><td align='center' bgcolor='#333399'>"
If Clng(intPage) > 1 Then
Response.Write "<a href=paging.asp?page=" & intPage - 1 & "><font face='arial' size='2'><b>&lt;&lt;</b></font></a>"
Else
Response.Write "<font face='arial' size='2' color='99ccff'><b>&lt;&lt;</b></font>"
End If

Response.Write "&nbsp;"
For intNum = 1 To intPageCount
Response.Write "<a href=paging.asp?page=" & intNum & "><font face='arial' size='2'><b>" & intNum & "</b></font></a> "
Next


Response.Write "&nbsp;"
If Clng(intPage) < Clng(intPageCount) Then
Response.Write "<a href=paging.asp?page=" & intPage + 1 & "><font face='arial' size='2'><b>&gt;&gt;</b></font></a> "
Else
Response.Write "<font face='arial' size='2' color='99ccff'><b>&gt;&gt;</b></font></td></tr></table></center>"
End If
%>

</BODY>
</HTML>

Det er vidst noget med at den indlæser siden forfra og uden søgeord når man går videre.

Hvis i kan hjælpe mig til så den f.eks. viser pagingen ligesom google ville det også være fedt (altså << ... 12 13 14 15 16 >>). håber i forstår, ellers så spørg. Men det andet er vigtigere.

Jeg har sat 80 pint af til dette. 50 til at få pagingen til at fungere og 30 til 'googlehalløjet' Hvis det ikke er nok så bare sig til, så finder vi nok ogs ud af det. :o)

Håber der er nogle der kan hjælpe.

Mvh.
gonza.dk
Avatar billede eagleeye Praktikant
21. juli 2002 - 16:27 #1
Du hendter dine søge input fra en form:

genre = Request.Form("genre")
soegeord = Request.Form("soegeord")

Du skal enten gennem Søgeord + Genre i Session variable eller du skal overføre Søgeord + Genre i querystringen til de næste sider..

Eks via QueryString:
Response.Write "<a href=paging.asp?genre="&genre&"&soegeord"&soegeord&"&page=" & intPage + 1 & "><font face='arial' size='2'><b>&gt;&gt;</b></font></a> "

Så skal du lave de to første linier om til:

genre = Request.Form("genre")
soegeord = Request.Form("soegeord")
if genre = "" then genre = Request("genre")
if soegeord = "" then soegeord = Request("soegeord ")
Avatar billede gonza.dk Nybegynder
21. juli 2002 - 18:17 #2
Hej eagleeye

Jeg har nu gjort som du sagde. Men nu er det umuligt at komme videre til side 2. Jeg leger lige lidt med det når jeg har spist. Hvis der er en der har løsningen så skriv lige ikk'??
Avatar billede gonza.dk Nybegynder
21. juli 2002 - 21:48 #3
Takker eagleeye.
Nu virker det som det skal.Der manglede bare lige et = i din sætning. men det var en lille fejl der var til at finde :o)

Har du også et forslag til mit "googlehalløj" altså så den ikke viser så mange links hvis der er mange poster. Håber du eller en anden kan.

Mvh.
gonza.dk
Avatar billede gonza.dk Nybegynder
21. juli 2002 - 21:50 #4
Venter lige med at give point til jeg har fundet ud af noget med det der google. Okay? Du skal nok få dem. Bare rolig.
Avatar billede eagleeye Praktikant
21. juli 2002 - 21:55 #5
Ok.. Som sagt kunne en løsning være Session variable men det kræver så at man tillader Session cookies for det virker. Der er også normalt at man tillader det så..

Så kan du rette disse to:
genre = Request.Form("genre")
soegeord = Request.Form("soegeord")

Til:
if request.servervariables("REQUEST_METHOD") = "POST" then
  genre = Request.Form("genre")
  soegeord = Request.Form("soegeord")
  Session("genre") = genre
  Session("soegeord") = soegeord
else
  genre = Session("genre")
  soegeord= Session("soegeord")
end if

Og så lade kode være som du ført havde vist den.
Avatar billede gonza.dk Nybegynder
21. juli 2002 - 22:11 #6
Er det til googlevisningen??? For det andet har jeg fået til at virke så det er ikke nødvendigt. Syns ikke det ser sådan ud nemlig. Koden virker mere som det andet.
Avatar billede eagleeye Praktikant
21. juli 2002 - 22:15 #7
Ja googler er med QueryStrings, som det første...
Avatar billede gonza.dk Nybegynder
21. juli 2002 - 22:23 #8
Okay.. saa jeg skal bare beholde det jeg har lavet og saa tilfoeje noget mere? Er ikke klar over om du ved hvad helt hvad jeg mener, s[ jeg forklarer det lige igen. altsaa hvis vi siger at der er 40 sider er det jo ikke smart at der er 40 links i bunden. som dette.
<< 1 2 3 4 5 o.s.v. op til 40 >>
Der ville det vaere smartere som f.eks. dette. vi er paa side 20.
<< ... 17 18 19 20 21 22 23 24 25 26 ... >>

Forstaar du?

Det er det jeg gerne vil have lavet.
Men jeg er utrolig glad for at det andet lykkedes mange tak for det.
Avatar billede eagleeye Praktikant
21. juli 2002 - 22:27 #9
Ar ok... nu er jeg med... Google viser +/- 10 sider fra den som er valgt og det er det du ønsker ??
Avatar billede gonza.dk Nybegynder
21. juli 2002 - 22:30 #10
Jep. netop. Kan det lade sig goere? Og hvordan? Har du ogsaa loesningen til det?
Avatar billede eagleeye Praktikant
21. juli 2002 - 22:33 #11
Ja det kan det jeg laver lige noget kode til dig.
Avatar billede gonza.dk Nybegynder
21. juli 2002 - 22:36 #12
Okay. Takker. Bare sig hvis 80 point er for lidt, saa faar du nogle flere. okay?
Avatar billede eagleeye Praktikant
21. juli 2002 - 22:39 #13
Du ændre disse linier:
For intNum = 1 To intPageCount
Response.Write "<a href=paging.asp?page=" & intNum & "><font face='arial' size='2'><b>" & intNum & "</b></font></a> "
Next

Til:
visAntal = 10
intStart = intPage - visAntal
intSlut  = intPage + visAntal
if intStart <= 0 then intStart = 1
if intSlut > intPageCount then intSlut = intPageCount
For intNum = intStart To intSlut
  Response.Write "<a href=paging.asp?page=" & intNum & "><font face='arial' size='2'><b>" & intNum & "</b></font></a> "
Next


Så manger der bare << foran og >> bagved tallene..
Avatar billede gonza.dk Nybegynder
21. juli 2002 - 22:41 #14
okay. proever lige. vender tilbage om lidt.
Avatar billede eagleeye Praktikant
21. juli 2002 - 22:51 #15
og hvis du så vil havde det sådan at man ikke kan vælge den valgte side igen i listen kan du udvide med denne if i for sætningen:

For intNum = intStart To intSlut
  if CInt(intNum) = CInt(intPage) then
    Response.Write " <b>" & intNum & "</b> "
  else
    Response.Write "<a href=paging.asp?page=" & intNum & "><font face='arial' size='2'><b>" & intNum & "</b></font></a> "
  end if
Next
Avatar billede gonza.dk Nybegynder
21. juli 2002 - 22:55 #16
Øøøhhh... Det virker ikke helt som det skal. Den viser udmærket 10 resultater. men når man trykker videre kommer der bare et link (tal) mere på. altså, den 'glemmer' at fjerne 1'tallet. Hvis man trykker på det sidste tal fjerner den dog de tal den skal. Jeg prøvede lige at sætte et = ind og fjerne et, men intet virkede. har nu rettet det så det som du lavede det. du kan se hvad jeg mener her: www.gonza.dk/main/jokes/paging.asp
Avatar billede gonza.dk Nybegynder
21. juli 2002 - 22:56 #17
Det er et plus det der. Du er jo kanon. Den vil jeg helt sikkert bruge. havde ikke selv tænkt på at det ville være smart. Men tror lige jeg vil have dette her på plads først.
Avatar billede gonza.dk Nybegynder
21. juli 2002 - 23:00 #18
aaarrr... tror bare det er mig der fucker lidt. Den viser jo ikke dem på den anden side af 1... altså -1 -2 -3 he hee.. UPS
Avatar billede gonza.dk Nybegynder
21. juli 2002 - 23:04 #19
Jep det var det. Har lige prøvet at sætte den til 5 istedet for 10. Så det virker som det skal. :o) Du har erligt fortjent alle point. værsgo'
Avatar billede gonza.dk Nybegynder
21. juli 2002 - 23:06 #20
1.000 tak endnu en gang eagleeye.

Og så er dette sp. lukket
Avatar billede eagleeye Praktikant
21. juli 2002 - 23:13 #21
Selv tak.
Avatar billede djsteiner Nybegynder
16. juni 2011 - 00:18 #22
hej gonza.dk og eagleeye

Jeg har nu i nogen tid været på udkig efter det dette spøgsmål handler om og ville høre om du gonza.dk stadig ligger inde med hele koden til Søgning og paging ?

Eller måske du eagleeye kunne hjælpe mig ?

Det vil være en stor hjælp !!

i må sige til hvis i skal have noget for det! :)

Håber i kan hjælpe mig !
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