Avatar billede rudymadsen Nybegynder
26. april 2008 - 08:44 Der er 14 kommentarer og
1 løsning

Et søgeresultat på flere sider

Nu har jeg lavet en søgeside, som finder et resultat frem, som med min paping giver flere sider.
Hvis jeg med min navigation hopper frem til næste side, hopper den ud af min søgning - den bevarer ikke resultatet med de kriterier, jeg har sat.

How to do, please???

Her er koden:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!--#include file="dwzPaging/dwzPaging.asp" -->
<!--#include file="Connections/pegasusDB.asp" -->
<%
Dim pegatest__navnparam
pegatest__navnparam = "%"
If (Request.Form("formnavn")  <> "") Then
  pegatest__navnparam = Request.Form("formnavn") 
End If
%>
<%
Dim pegatest__gadeparam
pegatest__gadeparam = "%"
If (Request.Form("formgade")  <> "") Then
  pegatest__gadeparam = Request.Form("formgade")
End If
%>
<%
Dim pegatest
Dim pegatest_cmd
Dim pegatest_numRows

Set pegatest_cmd = Server.CreateObject ("ADODB.Command")
pegatest_cmd.ActiveConnection = MM_pegasusDB_STRING
pegatest_cmd.CommandText = "SELECT * FROM qBeboere WHERE Navn like ? and Gade like ? ORDER BY Navn"
pegatest_cmd.Prepared = true
pegatest_cmd.Parameters.Append pegatest_cmd.CreateParameter("param1", 200, 1, 255, "%" + pegatest__navnparam + "%") ' adVarChar
pegatest_cmd.Parameters.Append pegatest_cmd.CreateParameter("param2", 200, 1, 255, "%" + pegatest__gadeparam + "%") ' adVarChar

Set pegatest = pegatest_cmd.Execute
pegatest_numRows = 0
%>
<%
'*********************************
'*  RECORDSET PAGING - NUMERIC
'*  http://www.dwzone-it.com
'*  Version 1.1.0
'*********************************
set dwzPaging_0 = new dwzRecPaging
dwzPaging_0.init()
dwzPaging_0.setTypeNumeric()
dwzPaging_0.setRecordset pegatest
dwzPaging_0.setRecPaging 10
dwzPaging_0.setPages 5
dwzPaging_0.setStyle "None", "None", "None"
dwzPaging_0.setText ">>", "<<", "Første", "Sidste"
dwzPaging_0.setSeparator " | "
dwzPaging_0.setLinkMask "[ {1} ]"
dwzPaging_0.Execute()
set pegatest = dwzPaging_0.getRecordset()
%>
<%
Dim Repeat1__numRows
Dim Repeat1__index

Repeat1__numRows = 10
Repeat1__index = 0
pegatest_numRows = pegatest_numRows + Repeat1__numRows
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Untitled Document</title>
</head>

<body>
<form id="form1" name="form1" method="post" action="pegatest.asp">
  <table width="300" border="0" cellspacing="0" cellpadding="2">
    <tr>
      <td>Navn:</td>
      <td><label>
        <input type="text" name="formnavn" id="formnavn" />
      </label></td>
    </tr>
    <tr>
      <td>Gade:</td>
      <td><input type="text" name="formgade" id="formgade" /></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td><label>
        <input type="submit" name="button" id="button" value="Søg" />
      </label></td>
    </tr>
  </table>
</form>
<p>
<table width="600" border="0" cellspacing="0" cellpadding="2">
  <tr>
    <td>Navn</td>
    <td>Gade</td>
    <td>Sal</td>
    <td><p>Side</p>    </td>
  </tr>

    <% 
While ((Repeat1__numRows <> 0) AND (NOT pegatest.EOF))
%>
      <tr>
      <td><%=(pegatest.Fields.Item("Navn").Value)%></td>
      <td><%=(pegatest.Fields.Item("Gade").Value)%></td>
      <td><%=(pegatest.Fields.Item("Sal").Value)%></td>
      <td><%=(pegatest.Fields.Item("Side").Value)%></td>
      </tr>
      <%
  Repeat1__index=Repeat1__index+1
  Repeat1__numRows=Repeat1__numRows-1
  pegatest.MoveNext()
Wend
%>

</table>
<p>
  <%
'*********************************
'*  RECORDSET PAGING - NUMERIC
'*********************************
dwzPaging_0.GetPaging()
'*********************************
'*  RECORDSET PAGING - NUMERIC
'*********************************
%>
</body>
</html>
<%
pegatest.Close()
Set pegatest = Nothing
%>
<%
'*********************************
'*  RECORDSET PAGING - NUMERIC
'*********************************
set dwzPaging_0 = nothing
'*********************************
'*  RECORDSET PAGING - NUMERIC
'*********************************
%>
Avatar billede keysersoze Guru
28. april 2008 - 09:40 #1
når du submitter siden første gang fanger du resultaterne med request.form - det kan du gøre netop fordi det er en form du har submittet. Når du så bevæger dig videre til næste side med et link er din form-collection tom fordi navigeringen foregår med et link fremfor submit af en form - derfor er du nødt til at finde en måde at videreføre søgekriterierne med, det kan fx være i din querystring, i sessions eller ved at opbygge navigeringen med (hidden) forms igen.
Avatar billede rudymadsen Nybegynder
28. april 2008 - 10:39 #2
Hey keysersoze (elsker den film :-))

Som du jo kan se, har jeg brugt et paging script, som jeg kan downloaded, netop fordi jeg ville have de muligheder, der ligger i den. Derfor vi ljeg helst ikke pille for meget i den, men ville du ikke sige, at en session er fin nok at opbevarer søgekriterierne i? Og hvordan gør jeg det?

/Rudy
Avatar billede keysersoze Guru
28. april 2008 - 23:18 #3
en session vil være en fin mulighed - noget a la dette til alle dine kriterier burde kunne gøre det

If Session("navn") = "" Then
  Dim pegatest__navnparam
  pegatest__navnparam = "%"
  If (Request.Form("formnavn")  <> "") Then
    pegatest__navnparam = Request.Form("formnavn") 
  End If
  Session("navn") = pegatest__navnparam
End If

Herefter skal du bruge Session("navn") i dit søgekriterie
Avatar billede rudymadsen Nybegynder
29. april 2008 - 13:01 #4
Ups... hvordan og hvor sætter jeg det ind i mit søgekriterie?

Jeg går ud fra, at ovennævnte if-sætning blot skal stå efter erklæringen af mine parametre, eller erstatter den dem?

/Rudy
Avatar billede keysersoze Guru
29. april 2008 - 20:22 #5
erstatte - og så ændre i parametrene til SQL'en så der benyttes de satte sessions fremfor variablerne.
Avatar billede rudymadsen Nybegynder
01. maj 2008 - 12:55 #6
Nu har jeg gjort, som du sagde (elelr som jeg forstod det), men det virker ikke.

Kode:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!--#include file="dwzPaging/dwzPaging.asp" -->
<!--#include file="Connections/pegasusDB.asp" -->
<%
'Dim pegatest__navnparam
'pegatest__navnparam = "%"
'If (session("navn") <> "") Then
'  pegatest__navnparam = session("navn")
'End If

If Session("navn") = "" Then
  Dim pegatest__navnparam
  pegatest__navnparam = "%"
  If (Request.Form("formnavn")  <> "") Then
    pegatest__navnparam = Request.Form("formnavn") 
  End If
  Session("navn") = pegatest__navnparam
End If


%>
<%
Dim pegatest__gadeparam
pegatest__gadeparam = "%"
If (Request.Form("formgade")  <> "") Then
  pegatest__gadeparam = Request.Form("formgade")
End If
%>
<%
Dim pegatest
Dim pegatest_cmd
Dim pegatest_numRows

Set pegatest_cmd = Server.CreateObject ("ADODB.Command")
pegatest_cmd.ActiveConnection = MM_pegasusDB_STRING
pegatest_cmd.CommandText = "SELECT * FROM qBeboere WHERE Navn like ? and Gade like ? ORDER BY Navn"
pegatest_cmd.Prepared = true
pegatest_cmd.Parameters.Append pegatest_cmd.CreateParameter("param1", 200, 1, 255, "%" + pegatest__navnparam + "%") ' adVarChar
pegatest_cmd.Parameters.Append pegatest_cmd.CreateParameter("param2", 200, 1, 255, "%" + pegatest__gadeparam + "%") ' adVarChar

Set pegatest = pegatest_cmd.Execute
pegatest_numRows = 0
%>
<%
'*********************************
'*  RECORDSET PAGING - NUMERIC
'*  http://www.dwzone-it.com
'*  Version 1.1.0
'*********************************
set dwzPaging_0 = new dwzRecPaging
dwzPaging_0.init()
dwzPaging_0.setTypeNumeric()
dwzPaging_0.setRecordset pegatest
dwzPaging_0.setRecPaging 10
dwzPaging_0.setPages 5
dwzPaging_0.setStyle "None", "None", "None"
dwzPaging_0.setText ">>", "<<", "Første", "Sidste"
dwzPaging_0.setSeparator " | "
dwzPaging_0.setLinkMask "[ {1} ]"
dwzPaging_0.Execute()
set pegatest = dwzPaging_0.getRecordset()
%>
<%
Dim Repeat1__numRows
Dim Repeat1__index

Repeat1__numRows = 10
Repeat1__index = 0
pegatest_numRows = pegatest_numRows + Repeat1__numRows
%>
Avatar billede keysersoze Guru
01. maj 2008 - 13:41 #7
begge dine variabler skal laves på den måde - du mangler gade.

og så mangler du også at bruge de sessions du laver i din sql.
Avatar billede rudymadsen Nybegynder
01. maj 2008 - 18:12 #8
Hvad gør jeg forkert?

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!--#include file="dwzPaging/dwzPaging.asp" -->
<!--#include file="Connections/pegasusDB.asp" -->
<%
'Dim pegatest__navnparam
'pegatest__navnparam = "%"
'If (session("navn") <> "") Then
'  pegatest__navnparam = session("navn")
'End If

If Session("navn") = "" Then
  Dim pegatest__navnparam
  pegatest__navnparam = "%"
  If (Request.Form("formnavn")  <> "") Then
    pegatest__navnparam = Request.Form("formnavn") 
  End If
  Session("navn") = pegatest__navnparam
End If


%>
<%
'Dim pegatest__gadeparam
''pegatest__gadeparam = "%"
'If (session("gade")  <> "") Then
'  pegatest__gadeparam = session("gade")
'End If

If Session("gade") = "" Then
  Dim pegatest__gadeparam
  pegatest__gadeparam = "%"
  If (Request.Form("formgade")  <> "") Then
    pegatest__gadeparam = Request.Form("formgade") 
  End If
  Session("gade") = pegatest__gadeparam
End If

%>
<%
Dim pegatest
Dim pegatest_cmd
Dim pegatest_numRows

Set pegatest_cmd = Server.CreateObject ("ADODB.Command")
pegatest_cmd.ActiveConnection = MM_pegasusDB_STRING
pegatest_cmd.CommandText = "SELECT * FROM qBeboere WHERE Navn like ? and Gade like ? ORDER BY Navn"
pegatest_cmd.Prepared = true
pegatest_cmd.Parameters.Append pegatest_cmd.CreateParameter("param1", 200, 1, 255, "%" + pegatest__navnparam + "%") ' adVarChar
pegatest_cmd.Parameters.Append pegatest_cmd.CreateParameter("param2", 200, 1, 255, "%" + pegatest__gadeparam + "%") ' adVarChar

Set pegatest = pegatest_cmd.Execute
pegatest_numRows = 0
%>
<%
'*********************************
'*  RECORDSET PAGING - NUMERIC
'*  http://www.dwzone-it.com
'*  Version 1.1.0
'*********************************
set dwzPaging_0 = new dwzRecPaging
dwzPaging_0.init()
dwzPaging_0.setTypeNumeric()
dwzPaging_0.setRecordset pegatest
dwzPaging_0.setRecPaging 10
dwzPaging_0.setPages 5
dwzPaging_0.setStyle "None", "None", "None"
dwzPaging_0.setText ">>", "<<", "Første", "Sidste"
dwzPaging_0.setSeparator " | "
dwzPaging_0.setLinkMask "[ {1} ]"
dwzPaging_0.Execute()
set pegatest = dwzPaging_0.getRecordset()
%>
<%
Dim Repeat1__numRows
Dim Repeat1__index

Repeat1__numRows = 10
Repeat1__index = 0
pegatest_numRows = pegatest_numRows + Repeat1__numRows
%>
Avatar billede keysersoze Guru
01. maj 2008 - 18:47 #9
du mangler stadig at tilpasse din søgning så dine sessions benyttes.
Avatar billede rudymadsen Nybegynder
01. maj 2008 - 21:02 #10
Ok, her giver en fuldblods amatør op :-(

Jeg har gjort følgende, men det virker ikke:

Set pegatest_cmd = Server.CreateObject ("ADODB.Command")
pegatest_cmd.ActiveConnection = MM_pegasusDB_STRING
pegatest_cmd.CommandText = "SELECT * FROM qBeboere WHERE Navn like ? and Gade like ? ORDER BY Navn"
pegatest_cmd.Prepared = true
pegatest_cmd.Parameters.Append pegatest_cmd.CreateParameter("param1", 200, 1, 255, "%" + Session("navn") + "%") ' adVarChar
pegatest_cmd.Parameters.Append pegatest_cmd.CreateParameter("param2", 200, 1, 255, "%" + Session("gade") + "%") ' adVarChar
Avatar billede rudymadsen Nybegynder
02. maj 2008 - 09:37 #11
Det er faktisk ligesom om at søgningen er god nok. Når den har stået lidt og session'en er udløbet, og jeg laver en ny søgning, så gør den det, den skal. Det er bare som om den ikke frigiver sessionen.

Hvaordan får man den til at frigive sessionen lige før man lave en ny søgning?

/Rudy
Avatar billede keysersoze Guru
02. maj 2008 - 17:17 #12
skod - havde ellers skrevet et svar men det kan jeg se ikke er blevet postet... så det bliver den korte version

hvis din side er bygget op med en søgeside og en resultatside så nulstil på din søgeside;

session("xxx") = ""

eller lav din if-statements om til

Dim pegatest__gadeparam
pegatest__gadeparam = "%"
If (Request.Form("formgade")  <> "") Then
  pegatest__gadeparam = Request.Form("formgade") 
End If
If Session("gade") = "" Then
  Session("gade") = pegatest__gadeparam
End If

bare husk på, at session (som du selv har oplevet) udløber med tiden og umuliggør dine brugere at sende søgelinks videre til venner.
Avatar billede rudymadsen Nybegynder
02. maj 2008 - 23:21 #13
Som du kan se er min søgeresultatside den samme, som jeg søger fra, vd ikke lige, om det har betydning.
Jeg har gjort, som du skrev med at lave min if-sætning om .... men uden resultat :-( sorry.

http://asp.ab-pegasus.dk/pegatest.asp
Avatar billede rudymadsen Nybegynder
02. maj 2008 - 23:28 #14
Nu prøvede jeg så at skifte min søgning tilbage igen fra session("navn") til pegatest__navnparam og den anden også:

pegatest_cmd.Parameters.Append pegatest_cmd.CreateParameter("param1", 200, 1, 255, "%" + pegatest__navnparam + "%") ' adVarChar
pegatest_cmd.Parameters.Append pegatest_cmd.CreateParameter("param2", 200, 1, 255, "%" + pegatest__gadeparam + "%") ' adVarChar

... og så virker den første søgning igen, men hvis jeg bladre, går den igen ud af søgningen.

Hmm... :-(
Avatar billede keysersoze Guru
03. maj 2008 - 08:58 #15
almindelige variabler bliver ikke overført fra side til side så derfor virker det ikke.

jeg glemte en ting før;

Dim pegatest__gadeparam
pegatest__gadeparam = "%"
If (Request.Form("formgade")  <> "") Then
  Session("gade") = ""
  pegatest__gadeparam = Request.Form("formgade") 
End If
If Session("gade") = "" Then
  Session("gade") = pegatest__gadeparam
End If
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