Avatar billede Slettet bruger
28. januar 2004 - 13:59 Der er 27 kommentarer og
1 løsning

Alfabetisk gruppering

Hejsa,

Hvad er den smarteste måde at lave følgende på?

Henter fra mySQL: ord, id, forfatter

Vil gerne ha' udskrevet en liste over ord, men grupperet efter begyndelsesbogstav.

A -
abe
ananas
attribut

etc..
Avatar billede mm12010 Nybegynder
28. januar 2004 - 14:01 #1
SELECT ord, id, forfatter FROM dinTabel ORDER BY ord
Avatar billede Slettet bruger
28. januar 2004 - 14:03 #2
jeg vil ha' udskrevet

A -
abe
ananas
attribut

B -
bas
brille
båthorn

C -
californien
citron
cykel
Avatar billede Slettet bruger
28. januar 2004 - 14:08 #3
incl. begyndelsesbogstavet
Avatar billede kosmos Nybegynder
28. januar 2004 - 14:18 #4
Dim StrString, MyArray, nCount, StrSql, rs

StrString = "A,B,C,D,E,F...etc"

MyArray = Split(MyArray,",")
nCount = 0

for lBound(MyArray) to uBound(MyArray)

StrSql = "select ord, id, forfatter from table order by " & MyArray(nCount)
        Set rs = Conn.Execute(StrSql)

response.write MyArray(nCount) & "-"
do while (not rs.eof or rs.bof)
    response.write rs("ord") & "<br>"
rs.movenext
loop

nCount = nCount + 1
Next

Noget i den stil, jeg har ikke afprøvet det, og husk at lukke dine forbindelser.
Avatar billede Slettet bruger
28. januar 2004 - 14:22 #5
kosmos > virker ikke
Avatar billede kosmos Nybegynder
28. januar 2004 - 14:24 #6
Lige en rettelse..

for lBound(MyArray) to uBound(MyArray)

skal hedde

for nCount = lBound(MyArray) to uBound(MyArray)

Håber du får det til at virke.
Avatar billede Slettet bruger
28. januar 2004 - 14:25 #7
kosmos > Det ændrede ikke noget - den når slet ikke ind i løkken
Avatar billede kosmos Nybegynder
28. januar 2004 - 14:27 #8
Hvad skriver den af fejl?
Avatar billede Slettet bruger
28. januar 2004 - 14:29 #9
intet, for løkken kører slet ikke

StrString = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,X,Y,Z,Æ,Ø,Å"

MyArray = Split(MyArray,",")
nCount = 0

for nCount = lBound(MyArray) to uBound(MyArray)


StrSql = "SELECT ord, id, forfatter FROM ord ORDER BY " & MyArray(nCount)
response.write "test"
response.write StrSql
response.end
        Set rs = Conn.Execute(StrSql)

response.write MyArray(nCount) & "-"
do while (not rs.eof or rs.bof)
    response.write rs("ord") & "<br>"
rs.movenext
loop

nCount = nCount + 1
Next
Avatar billede thesurfer Nybegynder
28. januar 2004 - 14:29 #10
fjern nCount = 0
Avatar billede thesurfer Nybegynder
28. januar 2004 - 14:31 #11
det gør vist ingen forskel :)
Avatar billede Slettet bruger
28. januar 2004 - 14:31 #12
nope
Avatar billede erikjacobsen Ekspert
28. januar 2004 - 14:38 #13
set rs = conn.execute("select hvor from bungy order by hvor")

startbogstav=" "
do until rs.eof
  ord=rs("hvor")
  if startbogstav<>left(ord,1) then
    startbogstav=left(ord,1)
    response.write "<h2>" & startbogstav & "</h2>"
  end if
  response.write ord & "<br>"

  rs.movenext
loop
Avatar billede Slettet bruger
28. januar 2004 - 14:48 #14
erik > perfekt :) smid et svar
Avatar billede erikjacobsen Ekspert
28. januar 2004 - 14:53 #15
Tak, jeg samler ikke på point.
Avatar billede Slettet bruger
28. januar 2004 - 15:06 #16
erik > Lige én ting.

Jeg har implementeret det i et tabel design nu, hvor jeg havde tænkt mig at bruge følgende algoritme til at skifte farve på udtrækket.
if blnSpanClass = true then
    strSpanClass = "graa"
    blnSpanClass = false
else
    strSpanClass = "lys"
    blnSpanClass = true
end if

hvordan kan jeg kombinere det?
Avatar billede erikjacobsen Ekspert
28. januar 2004 - 15:11 #17
Skal du starte forfra med "graa"  ved det første ord i hver bogstavgruppe?
Avatar billede Slettet bruger
28. januar 2004 - 15:13 #18
ja
Avatar billede erikjacobsen Ekspert
28. januar 2004 - 15:24 #19
skitse

startbogstav=" "
strSpanClass = "lys"
do until rs.eof
  ord=rs("hvor")
  if startbogstav<>left(ord,1) then
    startbogstav=left(ord,1)
    response.write "<h2>" & startbogstav & "</h2>"
    strSpanClass = "lys"
  end if
  if strSpanClass = "lys" then
    strSpanClass = "graa"
  else
    strSpanClass = "lys"
  end if
  response.write "<span class=""" & strSpanClass & """>" & ord & "</span><br>"

  rs.movenext
loop
Avatar billede erikjacobsen Ekspert
28. januar 2004 - 15:25 #20
Et " for meget:


  response.write "<span class=""" & strSpanClass & "">" & ord & "</span><br>"
Avatar billede Slettet bruger
28. januar 2004 - 15:41 #21
tak for hjælpen :) Jeg går ud fra at Kosmos render med point?
Avatar billede erikjacobsen Ekspert
28. januar 2004 - 15:44 #22
Jeg blander mig ikke i hvem du giver point, så det skal du ikke spørge mig om ;)
For min skyld kan du tage dem selv eller give dem til en du synes der fortjener.
Avatar billede Slettet bruger
16. februar 2004 - 17:29 #23
Erik - har lige et spørgsmål hvis du stadig er der?
Avatar billede erikjacobsen Ekspert
16. februar 2004 - 18:00 #24
Hvor er jeg? ;)
Avatar billede Slettet bruger
16. februar 2004 - 18:11 #25
Her i tråden ;)

Fremgangsmåden er følgende:

<%
startbogstav=" "
strSpanClass = "graa"
i = 0
do until rs.eof
  ord=xhtml(rs("ord"))
  if startbogstav<>left(ord,1) then
    startbogstav=left(ord,1)
%>
<table cellspacing="0" cellpadding="0" width="100%">
    <tr>
        <td colspan="2">&nbsp;</td>
    </tr>
    <tr>
        <td colspan="2"><h1><%=startbogstav%></h1></td>
    </tr>
<%
strSpanClass = "lys"
  end if
if strSpanClass = "lys" then
    strSpanClass = "graa"
else
    strSpanClass = "lys"
end if
%>
    <tr>
        <td>
        ...selve tuplerne for hvert bogstav
        </td>
    </tr>
<%
  rs.movenext
loop
  i = i + 1
%>

    <tr>
        <td>&nbsp;</td>
    </tr>
</table>

hvilket bevirker at hvert startbogstav får
<table cellspacing="0" cellpadding="0" width="100%">
    <tr>
        <td colspan="2">&nbsp;</td>
    </tr>
    <tr>
        <td colspan="2"><h1>F</h1></td>
    </tr>

etc., men jeg kan ikke lure hvor </table> skal indsættes for at få det til at passe. Den <table> der genereres for hvert bogstav bliver ikke afsluttet.
Avatar billede erikjacobsen Ekspert
16. februar 2004 - 19:09 #26
Imellem de 2 linier:

if startbogstav<>left(ord,1) then
    startbogstav=left(ord,1)

indsætter du

  if startbogstav<>" " then
      response.write "</table>"
  end if

Første gang, hvor startbogstav er " ", skal der ikke sættes
en </table>, men alle efterfølgende gange. Og så til allersidst, som
du allerede har.
Avatar billede Slettet bruger
16. februar 2004 - 19:22 #27
Ahh ok :)
Avatar billede Slettet bruger
16. februar 2004 - 19:22 #28
tak
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