Avatar billede crapman Nybegynder
16. februar 2005 - 11:58 Der er 13 kommentarer og
1 løsning

Vis ikke allerede viste records

Hejsa,
Jeg har et loop, som lister en række records fra en mysql tabel. I hver record er der et nyt recordsset som henter noget information fra en ny tabel - blandt andet tech_pattern.

Der listes max 20 records pr. side, men nogle af disse 20 records har samme værdi i tech_pattern.

Under mit loop, vil jeg så lave en liste med de forskellige tech_pattern's der er brugt.

Hvordan???
Avatar billede eagleeye Praktikant
16. februar 2005 - 12:27 #1
Du kan med distinct hente forskellige, når du åbner det nye recordset:

SQL = "select distinct tech_pattern.navn from tech_pattern limit 20"

Så tager den 20 forskeliige fra tech_pattern. Der nok også en where på så den henter de rigtige fra tech_pattern i forhold til det første recordset.
Avatar billede crapman Nybegynder
16. februar 2005 - 12:37 #2
ohh den skal ikke hente forskellige...

Det den skal gøre, er at liste de samme tech_pattern (som er et felt i den tabel der bliver listet fra i første loop), som er blevet listet i første loop. Der er bare nogle af dem som bliver listet to gange, fordi den samme værdi i tech_pattern eksisterer i flere forskellige records. Derfor skal man udelukke nogle af dem, så den kun viser den samme værdi én gang.
Avatar billede crapman Nybegynder
16. februar 2005 - 12:38 #3
tech_pattern er ikke en tabel, men et felt i den tabel som bliver loopet.
Avatar billede eagleeye Praktikant
16. februar 2005 - 12:47 #4
Ok, så må du lave en liste med de test_patten som er udskrevet og før du udskriver et test_pattern tjekke om det findes i den liste, her en variable som hedder test_pattern_list :

test_pattern_list = ","  'Sæt listen lig med et skille tegn som ikke kan være i teksten.

'Udskriv test_pattern
if inStr(1,test_pattern_list, "," & rs("test_pattern") & ",",1)=0 then
  'Udskriv og gem det test_pattern listen
  response.write rs("test_pattern")
  test_pattern_list = test_pattern_list & rs("test_pattern") & ","
end if
Avatar billede crapman Nybegynder
16. februar 2005 - 12:55 #5
Frækt... :)
Hvordan er det så at jeg laver et loop ud fra denne liste??
Avatar billede crapman Nybegynder
16. februar 2005 - 12:57 #6
Hmm jeg bruger vel en split på den right? Men så skal jeg så bare loope alle de strings der ligger i mit array.. hvordan er det nu jeg gør det?
Avatar billede eagleeye Praktikant
16. februar 2005 - 12:59 #7
Det er den liste som bliver udskrevet vil du også loopen igennem den?

Ja du kan bruge split til at lave et array så skal det første og sidste skille tegen fjernes


test_pattern_list = mid(test_pattern_list,2, len(test_pattern_list)-2)
test_pattern_array = split(test_pattern_list, ",")
Avatar billede crapman Nybegynder
16. februar 2005 - 13:02 #8
yups netop... så langt nåede jeg, men når jeg så skal loope den, kan jeg jo self. ikke huske hvordan man finder antallet af "post" i array'et... så jeg kan lave en "for" sætning
Avatar billede eagleeye Praktikant
16. februar 2005 - 13:03 #9
Ja ubound giver din antalet -1 da array's starter fra index 0.

Så du kan udskrive dem:

test_pattern_list = mid(test_pattern_list,2, len(test_pattern_list)-2)
test_pattern_array = split(test_pattern_list, ",")

for i = 0 to ubound(test_pattern_array)
  response.write test_pattern_array(i)
next
Avatar billede crapman Nybegynder
16. februar 2005 - 13:12 #10
Det er perfekt!! Smid et svar ;)
Avatar billede eagleeye Praktikant
16. februar 2005 - 13:13 #11
Ok her er et svar :)
Avatar billede crapman Nybegynder
16. februar 2005 - 13:22 #12
Ehh lige et tillægsspørgsmål... Kan man sortere et array? Altså i alfabetisk rækkefølge???
Avatar billede eagleeye Praktikant
16. februar 2005 - 13:51 #13
Ja så skal man havde en sort function


Her er en som kan det:


Function SortArray(ByVal arrToSort)
  Dim arrWork
  Dim intOuterIndex, intInnerIndex, intSmallestIndex
  Dim varTemp
  arrWork = arrToSort
  For intOuterIndex = 0 To UBound(arrWork)
    intSmallestIndex = intOuterIndex
    For intInnerIndex = intOuterIndex To UBound(arrWork)
      If arrWork(intInnerIndex) < arrWork(intSmallestIndex) Then
        intSmallestIndex = intInnerIndex
      End If
    Next
    If intSmallestIndex <> intOuterIndex Then
      varTemp = arrWork(intOuterIndex)
      arrWork(intOuterIndex) = arrWork(intSmallestIndex)
      arrWork(intSmallestIndex) = varTemp
    End If
  Next
  SortArray = arrWork
End Function


Den kaldes sådan ehr:

array = SortArray(array)
Avatar billede eagleeye Praktikant
16. februar 2005 - 13:56 #14
Her er et link til en anden sort funktion QuickSort:

http://www.4guysfromrolla.com/webtech/012799-2.shtml
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