Avatar billede Slettet bruger
12. juli 2005 - 11:27 Der 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">&nbsp;</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
}

var res = DB.Execute(sql)
%> </p>
                <p><strong>Søgeresultat</strong></p>
                <p>&nbsp;</p>
                <p><% if (res.eof) { %> </p>
                <p align="left">Der blev ikke fundet nogen navne der matcher dine søgekrav.</p>
                <p><% } else { %> </p>
                <table border="1" width="579" height="61" cellspacing="0" bordercolor="#FFFFFF"
                bgcolor="#E6E6E6">
                  <tr>
                    <th class="sogeres" width="112" height="28" align="center" bgcolor="#AFB9CA"></th>
                    <th class="sogeres" width="118" height="28" align="center" bgcolor="#AFB9CA"></th>
                    <th class="sogeres" width="260" height="28" align="center" bgcolor="#AFB9CA">Adresse</th>
                    <th class="sogeres" width="45" height="28" align="center" bgcolor="#AFB9CA">Husnr.</th>
                    <th class="sogeres" width="45" height="28" align="center" bgcolor="#AFB9CA">Postnr.</th>
                    <th class="sogeres" width="166" height="28" align="center" bgcolor="#AFB9CA"><font
                    color="#000040">By</font></th>
                    <th class="sogeres" width="66" height="28" <font color="#FFFFFF" face="Arial" size="2"
                    align="center" bgcolor="#AFB9CA">Tlf.</th>
                  </tr>
<% while (! res.EOF ) { %>
                  <tr>
                    <td class="dbcell" width="95" height="25" style align="center"><%subst_char(res("Fork")) %>
</td>
                    <td class="dbcell" width="118" height="25" style align="center"><%subst_char(res("navn")) %>
</td>
                    <td class="dbcell" width="260" height="25" align="center"><p align="center"><%=res("gadenavn") %> </td>
                    <td class="dbcell" width="45" height="25" style align="center"><%subst_char(res("husnr")) %>
</td>
                    <td class="dbcell" width="45" height="25" style align="center"><%subst_char(res("Postnr")) %>
</td>
                    <td class="dbcell" width="166" height="25" align="center"><%=res("by") %>
</td>
                    <td class="dbcell" width="1" height="25" style align="center"><%subst_char(res("tlf")) %>
</td>
<%                  res.MoveNext()
                  }
%>
                  </tr>
                </table>
<%    }
    res.Close() %>
Avatar billede jss Nybegynder
12. juli 2005 - 12:11 #1
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.
Avatar billede Slettet bruger
12. juli 2005 - 13:17 #2
Kan du lave et eks. til mig ?
Avatar billede jss Nybegynder
12. juli 2005 - 13:36 #3
er tilbage om 5 minutter ...
Avatar billede jss Nybegynder
12. juli 2005 - 13:52 #4
<%
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">&nbsp;</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

var res = DB.Execute(sql)
%> </p>
                <p><strong>Søgeresultat</strong></p>
                <p>&nbsp;</p>
                <p><% if (res.eof) { %> </p>
                <p align="left">Der blev ikke fundet nogen navne der matcher dine søgekrav.</p>
                <p><% } else { %> </p>
                <table border="1" width="579" height="61" cellspacing="0" bordercolor="#FFFFFF"
                bgcolor="#E6E6E6">
                  <tr>
                    <th class="sogeres" width="112" height="28" align="center" bgcolor="#AFB9CA"></th>
                    <th class="sogeres" width="118" height="28" align="center" bgcolor="#AFB9CA"></th>
            <th class="sogeres" width="260" height="28" align="center" bgcolor="#AFB9CA"><a href="denneside.asp?<%=tmpurl&"&orderby=Adresse" %>">Adresse</a></th>
              <th class="sogeres" width="45" height="28" align="center" bgcolor="#AFB9CA"><a href="denneside.asp?<%=tmpurl&"&orderby=Husnr" %>">Husnr.</a></th>
            <th class="sogeres" width="45" height="28" align="center" bgcolor="#AFB9CA"><a href="denneside.asp?<%=tmpurl&"&orderby=Postnr" %>">Postnr.</a></th>
              <th class="sogeres" width="166" height="28" align="center" bgcolor="#AFB9CA"><font color="#000040"><a href="denneside.asp?<%=tmpurl&"&orderby=By" %>">By</a></font></th>
            <th class="sogeres" width="66" height="28" <font color="#FFFFFF" face="Arial" size="2" align="center" bgcolor="#AFB9CA"><a href="denneside.asp?<%=tmpurl&"&orderby=tlf" %>">Tlf.</a></th>
                  </tr>
<% while (! res.EOF ) { %>
                  <tr>
                    <td class="dbcell" width="95" height="25" style align="center"><%subst_char(res("Fork")) %>
</td>
                    <td class="dbcell" width="118" height="25" style align="center"><%subst_char(res("navn")) %>
</td>
                    <td class="dbcell" width="260" height="25" align="center"><p align="center"><%=res("gadenavn") %> </td>
                    <td class="dbcell" width="45" height="25" style align="center"><%subst_char(res("husnr")) %>
</td>
                    <td class="dbcell" width="45" height="25" style align="center"><%subst_char(res("Postnr")) %>
</td>
                    <td class="dbcell" width="166" height="25" align="center"><%=res("by") %>
</td>
                    <td class="dbcell" width="1" height="25" style align="center"><%subst_char(res("tlf")) %>
</td>
<%                  res.MoveNext()
                  }
%>
                  </tr>
                </table>
<%    }
    res.Close() %>
Avatar billede jss Nybegynder
12. juli 2005 - 13:54 #5
har ændret 3 steder:

1. Tilføjet funktion der behandler QueryString
2. Tilføjer ORDER BY-clause til din sql-sætning
3. Lavet overskrifter om til links
Avatar billede -mundi- Nybegynder
12. juli 2005 - 13:55 #6
Avatar billede Slettet bruger
12. juli 2005 - 14:31 #7
Hej Jss
Det ser super ud, kan du ikke lægge et svar så du kan få dine velfortjente point.
Avatar billede Slettet bruger
12. juli 2005 - 14:32 #8
Til mundi
Det ser spændende ud, det vil jeg også kigge på. Tak.
Avatar billede jss Nybegynder
12. juli 2005 - 14:43 #9
og hermed et svar:-)
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