Avatar billede thomashansen Nybegynder
31. august 2003 - 15:53 Der er 24 kommentarer og
1 løsning

Manuel sortering af > 1 kolonne ved udtræk fra database til web

Brugeren skal kunne sortere kolonner ASC/ DESC manuelt ved tryk på kolonneoverskrift. Inden manuel sortering er kolonnerne altid sorteret ASC.

Hvordan indsætter jeg variabelen sort ?
Kan jeg "genbruge" dele af script til kolonnerne ?

Set list = Server.CreateObject ("ADODB.Recordset")
list.Open "SELECT * FROM database WHERE Database_Status =1 AND Kriterie LIKE " & soegestreng & " ORDER BY En, To , Tre", Conn

Variabelen sort undersøges jævnf. nedenstående:

sort = Request.QueryString("sort")
If Request.QueryString("Submit") = "" Then
    If sort = "" Then
        sort = "ASC"
    ElseIf sort = "ASC" Then
        sort = "DESC"
    Else
    sort = "ASC"
    End If
End If
Avatar billede medions Nybegynder
31. august 2003 - 15:55 #1
Set list = Server.CreateObject ("ADODB.Recordset")
list.Open "SELECT * FROM database WHERE Database_Status =1 AND Kriterie LIKE " & soegestreng & " ORDER BY En, To , Tre" & Request.QueryString("sort"), Conn

//>Rune
Avatar billede eagleeye Praktikant
31. august 2003 - 15:58 #2
Skal du ændre søge retning for alle 3 kolonner efter ORDER BY eller kun nogle af dem?
Avatar billede thomashansen Nybegynder
31. august 2003 - 16:07 #3
Ja, det virker på kolonne Tre men hvordan indsætter jeg udtrykket så det virker på kolonne Et og To ?
Avatar billede eagleeye Praktikant
31. august 2003 - 16:14 #4
Det kommer an på om det skal ændre på samme tid for alle kolonner eller må du lave 3 stk mend sort:  sort = Request.QueryString("sort")

sort1 = Request.QueryString("sort1")
sort2 = Request.QueryString("sort2")
sort3 = Request.QueryString("sort3")
Avatar billede eagleeye Praktikant
31. august 2003 - 16:16 #5
Skal det være samme sort order for alle 3 kolonner på samme tid så prøv:


sort = Request.QueryString("sort")
If Request.QueryString("Submit") = "" Then
    If sort = "" Then
        sort = "ASC"
    ElseIf sort = "ASC" Then
        sort = "DESC"
    Else
    sort = "ASC"
    End If
End If
if sort="" then sort = "ASC"

Set list = Server.CreateObject ("ADODB.Recordset")
list.Open "SELECT * FROM database WHERE Database_Status =1 AND Kriterie LIKE " & soegestreng & " ORDER BY En " & sort & ", To " & sort & ", Tre " & sort, Conn
Avatar billede thomashansen Nybegynder
31. august 2003 - 17:14 #6
Jeg har valgt løsningen med sort1, sort2 og sort3.
Ved sortering af kolonne 1 med sort1 og efterfølgende sortering af kolonne 2 med sort2 "reset´es" sortering i kolonne 1 til ASC.
Jeg havde tænkt mig, at sortering af de enkelte kolonne kan ske uafhængigt.
Har man f.eks valgt sort1=ASC ændres det ikke fordi man vælger sort3=DESC
Avatar billede eagleeye Praktikant
31. august 2003 - 17:20 #7
Så du nød til at overføre alle 3 i querystringen så de kan ændre en af gange og det link man trykker på skal så laves så det kun ændre en retning:

if sort1 = "ASC" then 'ændre sort1 -> DESC link
  response.write "<a href='fil.asp?sot1=DESC&sort2=" & sort2 & "&sort3=" & sort3 "'>Sorter kolonne En DESC</A>"
else 'ændre sort1 -> ASC link
  response.write "<a href='fil.asp?sot1=ASC&sort2=" & sort2 & "&sort3=" & sort3 "'>Sorter kolonne En ASC</A>"
end if


Det samme for de andre eks 2:

if sort2 = "ASC" then 'ændre sort1 -> DESC link
  response.write "<a href='fil.asp?sort1=" & sort1 & "&sort2=DESC&sort3=" & sort3 "'>Sorter kolonne To DESC</A>"
else 'ændre sort1 -> ASC link
  response.write "<a href='fil.asp??sort1=" & sort1 & "&sort2=ASC&sort3=" & sort3 "'>Sorter kolonne To ASC</A>"
end if
Avatar billede thomashansen Nybegynder
31. august 2003 - 21:09 #8
Har du tid til, at forklare de enkelte linier
Avatar billede eagleeye Praktikant
31. august 2003 - 21:15 #9
Ja??
Jeg ved ikke helt hvordan du skifter sort order retning men typsik har men en tabel som man vil vise på forskellige måder og ved et link ændre på sort order.
Da jeg har forstået det sådan da at du vil havde en sort til hver kolonne uafhængig af de andre så har jeg vist et esk på hvordan man udksirver de enklete link som skifter sort order.
Første er sort1 som bruges til kolonnen Et.
Den ændre ASC til DESC og beholder sort order for sort2 og sort3.
Avatar billede thomashansen Nybegynder
31. august 2003 - 21:26 #10
Min browser melder fejl ved denne linie:
response.write "<a href='search_ttest01.asp?sort1=DESC&sort2=" & sort2 & "&sort3=" & sort3 "'>Sorter kolonne En DESC</A>"

NB: du må hellere få 30 points mere
Avatar billede eagleeye Praktikant
31. august 2003 - 21:28 #11
Ok der manglede et & lige føre "'>..., prøv med denne:

response.write "<a href='search_ttest01.asp?sort1=DESC&sort2=" & sort2 & "&sort3=" & sort3 & "'>Sorter kolonne En DESC</A>"
Avatar billede thomashansen Nybegynder
31. august 2003 - 21:46 #12
Der mangler noget efter tilføjelsen af de nye linier:
Microsoft VBScript compilation error '800a03f6'

Expected 'End'
Avatar billede eagleeye Praktikant
31. august 2003 - 21:47 #13
Det gælder for alle de linjer jeg har vist at der manger det & tegn:

også i denne:
  response.write "<a href='fil.asp?sot1=ASC&sort2=" & sort2 & "&sort3=" & sort3 "'>Sorter kolonne En ASC</A>"

Skal det være:
  response.write "<a href='fil.asp?sot1=ASC&sort2=" & sort2 & "&sort3=" & sort3 & "'>Sorter kolonne En ASC</A>"
Avatar billede thomashansen Nybegynder
31. august 2003 - 21:53 #14
Måske det letter min forståelse hvis denne linie forklares:

if sort1 = "ASC" then 'ændre sort1 -> DESC link

?? 'ændre
?? ->
?? link
Avatar billede eagleeye Praktikant
31. august 2003 - 21:57 #15
Ok i føste omgang:

if sort1 = "ASC" then
  'ændre sort1 -> DESC link
  response.write "<a href='fil.asp?sot1=DESC'>Sorter kolonne En DESC</A>"
else
  'ændre sort1 -> ASC link
  response.write "<a href='fil.asp?sot1=ASC'>Sorter kolonne En ASC</A>"
end if
Avatar billede thomashansen Nybegynder
31. august 2003 - 22:14 #16
OK, jeg har erstattet det forrige script med det sidste forenklede og browseren viser siden uden problemer. Ved aktivering af script sorteres.
Jeg forsøger mig med tilføjelse af sort2 og 3

Scriptet ser sålede ud nu:

sort = Request.QueryString("sort")
if sort1 = "ASC" then
  'ændre sort1 -> DESC link
  response.write "<a href='search_ttest01.asp?sort1=DESC'>Sorter kolonne En DESC</A>"
else
  'ændre sort1 -> ASC link
  response.write "<a href='search_ttest01.asp?sort1=ASC'>Sorter kolonne En ASC</A>"
end if
Avatar billede eagleeye Praktikant
31. august 2003 - 22:16 #17
variablen sort skal og "sort" skal hvade et 1 på:


sort1 = Request.QueryString("sort1")
if sort1 = "ASC" then
Avatar billede thomashansen Nybegynder
31. august 2003 - 23:05 #18
Så har jeg lavet det, men der er ingen respons (men vises uden problemer i browser). Script:

sort1 = Request.QueryString("sort1")
if sort1 = "ASC" then
  'ændre sort1 -> DESC link
  response.write "<a href='search_ttest01.asp?sort1=DESC & sort2=" & sort2 & "&sort3=" & sort3 &"'>Sorter kolonne En DESC</A>"
else
  'ændre sort1 -> ASC link
  response.write "<a href='search_ttest01.asp?sort1=ASC & sort2=" & sort2 & "&sort3=" & sort3 &"'>Sorter kolonne En ASC</A>"
end if

sort2 = Request.QueryString("sort2")
if sort2 = "ASC" then
  'ændre sort2 -> DESC link
  response.write "<a href='search_ttest01.asp?sort1=" & sort1 &" & sort2=DESC & sort3=" & sort3 &"'>Sorter kolonne To DESC</A>"
else
  'ændre sort2 -> ASC link
  response.write "<a href='search_ttest01.asp?sort1=" & sort1 &" & sort2=ASC & sort3=" & sort3 &"'>Sorter kolonne To ASC</A>"
end if
Avatar billede eagleeye Praktikant
31. august 2003 - 23:12 #19
Det så kun links som er udskrevet...
Samtidig med skal du også lave det kode om som finde ud af om det er ASC eller DESC om så der er 3 variable:


sort1 = Request.QueryString("sort1")
If sort1 = "" Then
  sort1 = "ASC"
ElseIf sort1 = "ASC" Then
  sort1 = "DESC"
Else
  sort1 = "ASC"
End If

sort2 = Request.QueryString("sort2")
If sort2 = "" Then
  sort2 = "ASC"
ElseIf sort2 = "ASC" Then
  sort2 = "DESC"
Else
  sort2 = "ASC"
End If

sort3 = Request.QueryString("sort3")
If sort3 = "" Then
  sort3 = "ASC"
ElseIf sort3 = "ASC" Then
  sort3 = "DESC"
Else
  sort3 = "ASC"
End If


Set list = Server.CreateObject ("ADODB.Recordset")
list.Open "SELECT * FROM database WHERE Database_Status =1 AND Kriterie LIKE " & soegestreng & " ORDER BY En " & sort1 & ", To " & sort2 & ", Tre " & sort3, Conn
Avatar billede thomashansen Nybegynder
31. august 2003 - 23:39 #20
Der må være noget galt med response.write når der optræder mere end sort1

- men jeg er på dybt vand
Avatar billede eagleeye Praktikant
31. august 2003 - 23:41 #21
Prøv disse så der er et par mellemrum som ikke skal være der:


sort1 = Request.QueryString("sort1")
if sort1 = "ASC" then
  'ændre sort1 -> DESC link
  response.write "<a href='search_ttest01.asp?sort1=DESC&sort2=" & sort2 & "&sort3=" & sort3 &"'>Sorter kolonne En DESC</A>"
else
  'ændre sort1 -> ASC link
  response.write "<a href='search_ttest01.asp?sort1=ASC&sort2=" & sort2 & "&sort3=" & sort3 &"'>Sorter kolonne En ASC</A>"
end if

sort2 = Request.QueryString("sort2")
if sort2 = "ASC" then
  'ændre sort2 -> DESC link
  response.write "<a href='search_ttest01.asp?sort1=" & sort1 & "&sort2=DESC&sort3=" & sort3 &"'>Sorter kolonne To DESC</A>"
else
  'ændre sort2 -> ASC link
  response.write "<a href='search_ttest01.asp?sort1=" & sort1 & "&sort2=ASC&sort3=" & sort3 &"'>Sorter kolonne To ASC</A>"
end if
Avatar billede thomashansen Nybegynder
31. august 2003 - 23:51 #22
Det hjalp. 1000 tak.
Avatar billede eagleeye Praktikant
31. august 2003 - 23:52 #23
;)
et svar så :)
Avatar billede thomashansen Nybegynder
31. august 2003 - 23:55 #24
Jeg har et problem vedr. at bevare søgestreng. Pt "reset´es" den men det kræver vist et nyt spørgsmål.
Hvis du svarer får du point. Ved du om kan øge point´s ?
Avatar billede eagleeye Praktikant
01. september 2003 - 00:00 #25
Det skal så ekstra med på linket i hver link:

EKS her angtager jeg har din variable i QuerStringen hedder soeg:


response.write "<a href='search_ttest01.asp?sort1=" & sort1 & "&sort2=ASC&sort3=" & sort3 & "&soeg=" & soegestreng & "'>Sorter kolonne To ASC</A>"


Du kan give flere point ved at trykke på point tallet ud for dig spørgsmål eller i menuen "Afsæt Flere Point", men det kan man ikke når spørgsmålet er lukket.
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