Avatar billede wolfgang Praktikant
08. juni 2005 - 09:54 Der er 14 kommentarer og
1 løsning

Alfabetisk liste - udtræk

Hej,
Jeg har nu søgt exp tynd, uden at finde et spørgsmål der lignede mit, så her kommer der et fra mig.

Jeg skal lave et udtræk fra min DB, Der skal give brugeren en alfabetisk oversigt, over indhold på et site.

Resultat skal se således ud (Eks.):
A
- Abemad
- Armbryst

B
- Børn
- Bison-okse

Etc...
Etc...

Hvordan skal dette gribes an?

Glæder mig til at høre fra jer.
Avatar billede busschou Praktikant
08. juni 2005 - 10:05 #1
Hvis du har det hele i din database skal du vel blot sortere på feltet i tabellen indeholdende overskriften? Ellers må du give lidt mere info
En løsning som kun viser "A" hvis der er et ord indeholdende A som start kunne være
---
sql = "Select * From tabel Order By overskrift"
set rs = Conn.execute(sql)
startbogstav = ""
do while not rs.eof
if UCase(Left(rs("overskrift"),1)) <> startbogstav then
  startbogstav = UCase(Left(rs("overskrift"),1))
  response.write(startbogstav&"<br>")
end if
response.write("- "&rs("overskrift")&"<br>")
rs.movenext
loop
Avatar billede wolfgang Praktikant
08. juni 2005 - 10:24 #2
Det er topNice - Mange tak for det hurtige svar.

Opret venligst et svar, så du kan modtage dine pointz.
Avatar billede busschou Praktikant
08. juni 2005 - 10:27 #3
topNice ligefrem ;o) .. godt det virker :o)
Avatar billede nybroe Nybegynder
09. juni 2005 - 09:51 #4
...jeg har rodet med noget lignende... men hvis man gerne vil have den til at udskrive i 2 kolonner, hvordan kan man så gøre det? Jeg har oplevet, at indholdet under bogstaverne kommer til at stå i begge kolonner, hvor det er meningen, at scriptet skal skrive A, så B etc. under hinanden i samme kolonne indtil midten - omkring bogstavet N - og så starte med de resterende bogstaver i kolonne 2 med de sidste sider, der ligger derunder.

Jeg vil gerne oprette dette som et nyt spørgsmål med 100 point, hvis der er nogen der kan hjælpe...
Avatar billede busschou Praktikant
09. juni 2005 - 11:34 #5
Forstår ikke helt det du mener med at rette i kollonnerne til sidst.. men at lave to kolonner er jo blot at lave en tabel og løbe igennem
---
<table>
<%
sql = "Select * From tabel Order By overskrift"
set rs = Conn.execute(sql)
startbogstav = ""
do while not rs.eof
response.write "<tr>"
if UCase(Left(rs("overskrift"),1)) <> startbogstav then
  startbogstav = UCase(Left(rs("overskrift"),1))
  response.write("<td>"&startbogstav&"</td>")
else
  response.write("<td></td>")
end if
response.write("<td>"&rs("overskrift")&"</td>")
response.write "</tr>"
rs.movenext
loop

</table>
Avatar billede nybroe Nybegynder
09. juni 2005 - 12:06 #6
--> busschou
Det problem jeg oplevede var, at underpunkterne fra den ene kolonne også stod i den anden kolonne, hvis der er flere end et underpunkt f.eks.

A
Abemad          Armbryst

B
Børn

C
Cykler

B
Børn
Bison-okse

Men jeg vil lige teste dit script, når jeg kommer tilbage til en anden PC...
Avatar billede nybroe Nybegynder
09. juni 2005 - 12:08 #7
.. det sidste B skal selvfølgelig ikke med ....
Avatar billede busschou Praktikant
09. juni 2005 - 12:16 #8
jeg vil mene det burde virke
For det holder øje med forbogstavet
Hvis forbogstavet er forskellig fra tidligerer så laver den en <td> med bogstavet og ellers laver den en tom <td>
Det eneste der mangler i det ovenstående er at jeg glemte den sidste %> til at slutte asp koden
Avatar billede nybroe Nybegynder
09. juni 2005 - 17:10 #9
hmm, den skriver det hele ud i en smørre ... der mangler også en <tr> mellem bogstaverne (A, B etc.) og så de punkter, der er derunder.

Ved ovenstående funktion kommer det til at se sådan ud:

A Abemad Armbryst B Børn C Cykler... etc...

Jeg ved ikke rigtigt om man skal beregne antal poster, og så få det til at vise ca. halvdelen i hver kolonne..eller hvordan...??
Avatar billede busschou Praktikant
09. juni 2005 - 21:21 #10
den ekstra <tr> er lige til at sætte ind, hvordan ser din kode ud?, Det virker hos mig
Avatar billede nybroe Nybegynder
10. juni 2005 - 10:48 #11
Jeg tror at vi taler lidt forbi hinanden. Udtrækket sker ikke i 2 kolonner, da der ikke er nogen steder i scriptet, hvor dette anføres.... der må skulle lægges en ekstra funktion ind.....
Avatar billede busschou Praktikant
10. juni 2005 - 11:13 #12
Jo det gør da
<td></td> Det er en kolonne i en tabel
---
<table><tr><td></td><td></td></tr></table>
---
Det svarer til en tabel med een række med to kolonner
i mit indlæg 09/06-2005 11:34:17 bliver der i hver løkke genereret een <tr> indeholdende netop to <td> - ergo en række med to kolonner
Så hvis du får noget andet må du have lavet noget om
Prøv smide din kode herind
Avatar billede nybroe Nybegynder
10. juni 2005 - 12:29 #13
Jeg har indsat counteren fra http://eksperten.dk/spm/375559 - så nu virker det:

Der ser nu sådan ud:

A                      P
Abe                    Piller
Anker                  Portræt

B                      R
Bus                    Radiator
Bycykel                Radio

Osv                    Osv
Osv                    Osv
Avatar billede busschou Praktikant
10. juni 2005 - 12:33 #14
ahh det var sådan du ville have det
Jeg troede du ville have det sådan her
A    Abe
      Anton
B    buller
      Børge
      Benny
C    Carl
osv
osv
osv.
Avatar billede nybroe Nybegynder
10. juni 2005 - 12:38 #15
ja, vi gik lige lidt forkert af hinanden... jeg benyttede koden fra:

eagleeye
13/07-2003 01:38:02

på den pågældende side. Koden er genial, da man kan bestemme om det skal være 2, 3, 4 eller flere kolonner - blot ved at ændre en enkelt variabel....
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