12. juli 2005 - 11:27Der er
8 kommentarer og 1 løsning
Lad bruger sortere
Hej Eksperter Jeg har en søgefunktion, der virker fint, men jeg kunne godt tænke mig at give brugere mulighed for at sortere på resultatet ved at klikke på overskriften, kan det lade sig gøre ? Min kode er herunder <% var soeg_Fork = new String(Request.Querystring("Fork")) var soeg_navn = new String(Request.Querystring("navn")) var soeg_Gadenavn = new String(Request.Querystring("Gadenavn")) var soeg_Husnr= new String(Request.Querystring("Husnr")) var soeg_Postnr= new String(Request.Querystring("Postnr")) var soeg_by= new String(Request.Querystring("by")) var soeg_tlf = new String(Request.Querystring("tlf"))
%> <p align="left"> </p> <p><% var tick = /'/ var tick2 = "''" soeg_Fork = soeg_Fork.replace(tick, tick2) soeg_Postnr = soeg_Postnr.replace(tick, tick2)
// Opbyg betingelse for søgning var clauses = new Array() var count = 0
if (soeg_Postnr!= "") { var test = "" soeg_Postnr = Trim(soeg_Postnr) sep = soeg_Postnr.indexOf(" ") while (sep >= 0) { if (test != "") { test += " AND " } test += "[Postnr] like '%" + Trim (soeg_Postnr.substr (0,sep)) + "%')" soeg_Postnr = LTrim(soeg_Postnr.substr(sep)) sep = soeg_Postnr.indexOf(" ") } if (test != "") { test += " AND " } test += "[Postnr] like '%" + soeg_Postnr + "%'" clauses[clauses.length] = "("+test+")"
} if (soeg_Fork!= "") { test = "" soeg_Fork = Trim(soeg_Fork) sep = soeg_Fork.indexOf(" ") while (sep >= 0) { if (test != "") { test += " AND " } test += "[Fork] like '%" + Trim(soeg_Fork.substr(0, sep)) + "%'" soeg_Fork = LTrim(soeg_Fork.substr(sep)) sep = soeg_Fork.indexOf(" ") } if (test != "") { test += " AND " } test += "[Fork] like '%" + soeg_Fork + "%'" clauses[clauses.length] = "(" + test + ")" } if (soeg_navn != "") { test = "" soeg_navn = Trim(soeg_navn) sep = soeg_navn.indexOf(" ") while (sep >= 0) { if (test != "") { test += " AND " } test += "[navn] like '%" + Trim(soeg_navn.substr(0, sep)) + "%'" soeg_navn = LTrim(soeg_navn.substr(sep)) sep = soeg_navn.indexOf(" ") } if (test != "") { test += " AND " } test += "[navn] like '%" + soeg_navn + "%'" clauses[clauses.length] = "(" + test + ")"
}
where_clause = "" for (i=0; i<clauses.length; i++) { where_clause += (i>0 ? " AND " : "") + clauses[i] }
// Udfør søgning og vis resultatet sql = "select Fork,navn, Gadenavn, Husnr, Postnr,By,Tlf from fe" if (clauses.length > 0) { sql += " where " + where_clause }
Det kan gøres på flere måder, men jeg har god erfaring med at bruge en parameter i QueryString´en som definerer hvilket felt der skal sorteres efter. Denne parameter skal du bruge i din sql-sætning i en ORDER BY-clause. I dine overskrifter laver du reelt et link som peger på "sig selv" (samme side), MEN også indeholder de oprindelige søge-parametre PLUS sorteringsparameter.
<% var soeg_Fork = new String(Request.Querystring("Fork")) var soeg_navn = new String(Request.Querystring("navn")) var soeg_Gadenavn = new String(Request.Querystring("Gadenavn")) var soeg_Husnr= new String(Request.Querystring("Husnr")) var soeg_Postnr= new String(Request.Querystring("Postnr")) var soeg_by= new String(Request.Querystring("by")) var soeg_tlf = new String(Request.Querystring("tlf"))
// NY KODE Dim tmpurl,start,order order=""
// QueryString opfanges og behandles til sortering ("orderby=" fjernes, ellers dubletter) tmpurl=request.servervariables("QUERY_STRING") start = InStr(tmpurl, "orderby=") if (start>0) Then tmpurl=left(tmpurl,start-2)
// Opbygning af ORDER BY-CLAUSE if len(Request.QueryString("orderby")) > 0 Then order = " ORDER BY "& Request.QueryString("orderby") &" ASC" else order = " ORDER BY ID ASC" end if // NY KODE SLUT
%> <p align="left"> </p> <p><% var tick = /'/ var tick2 = "''" soeg_Fork = soeg_Fork.replace(tick, tick2) soeg_Postnr = soeg_Postnr.replace(tick, tick2)
// Opbyg betingelse for søgning var clauses = new Array() var count = 0
if (soeg_Postnr!= "") { var test = "" soeg_Postnr = Trim(soeg_Postnr) sep = soeg_Postnr.indexOf(" ") while (sep >= 0) { if (test != "") { test += " AND " } test += "[Postnr] like '%" + Trim (soeg_Postnr.substr (0,sep)) + "%')" soeg_Postnr = LTrim(soeg_Postnr.substr(sep)) sep = soeg_Postnr.indexOf(" ") } if (test != "") { test += " AND " } test += "[Postnr] like '%" + soeg_Postnr + "%'" clauses[clauses.length] = "("+test+")"
} if (soeg_Fork!= "") { test = "" soeg_Fork = Trim(soeg_Fork) sep = soeg_Fork.indexOf(" ") while (sep >= 0) { if (test != "") { test += " AND " } test += "[Fork] like '%" + Trim(soeg_Fork.substr(0, sep)) + "%'" soeg_Fork = LTrim(soeg_Fork.substr(sep)) sep = soeg_Fork.indexOf(" ") } if (test != "") { test += " AND " } test += "[Fork] like '%" + soeg_Fork + "%'" clauses[clauses.length] = "(" + test + ")" } if (soeg_navn != "") { test = "" soeg_navn = Trim(soeg_navn) sep = soeg_navn.indexOf(" ") while (sep >= 0) { if (test != "") { test += " AND " } test += "[navn] like '%" + Trim(soeg_navn.substr(0, sep)) + "%'" soeg_navn = LTrim(soeg_navn.substr(sep)) sep = soeg_navn.indexOf(" ") } if (test != "") { test += " AND " } test += "[navn] like '%" + soeg_navn + "%'" clauses[clauses.length] = "(" + test + ")"
}
where_clause = "" for (i=0; i<clauses.length; i++) { where_clause += (i>0 ? " AND " : "") + clauses[i] }
// Udfør søgning og vis resultatet sql = "select Fork,navn, Gadenavn, Husnr, Postnr,By,Tlf from fe" if (clauses.length > 0) { sql += " where " + where_clause }
// NY KODE ' ORDER BY-CLAUSE tilføjes til sql-sætning sql = sql & order // NY KODE SLUT
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.