webForumDet fria alternativet

Loopa ut efter bokstav

12 svar · 654 visningar · startad av mackanz

mackanzMedlem sedan sep. 2003443 inlägg
#1

Jag har en långlista på låttitlar som jag loopar ut på en sida.

Hur gör jag för att dela upp dem så att den först loopar alla på bokstaven A sen alla B.

Jag vill att resultate ska bli så här ungefär.

A
Aldrig nån som du
Aldrig utan dig
Aldrig var min himmel så blå

B
Bara för en stund
Bortom natten finns en dag

etc... etc...

LarsGMedlem sedan dec. 200012 464 inlägg
#2
sql = "select title from so gs order by title"
set rs = connect.execute(sql)
pletter = ""
do while not rs.eof
    if  pletter <> left(rs("title"),1) then
        pletter = left(rs("title"),1)
        response.write pletter
    end if
    response.write rs("title")
    rs.movenext
loop
mackanzMedlem sedan sep. 2003443 inlägg
#3

Ska se om jag lyckas med detta.
Är ju ingen hejjare på ASP men ska göra ett försök.

Undrar vart jag anger bokstav den ska sortera ifrån?
och vad innebär "pletter"

voigtann1Medlem sedan juni 20019 519 inlägg
#4

pLetter är en variabel, om du läser av koden:

pletter = ""

sätts till inget (innan loopningen).

mackanzMedlem sedan sep. 2003443 inlägg
#5

ok så innanför "" ska jag skriva bokstaven som den ska loopa på eller vart sätter jag den?

voigtann1Medlem sedan juni 20019 519 inlägg
#6

Nej, det gör SQL frågan:

....order by title

Vad koden gör är att första gången koden körs, så är pLetter tom (vilket är bra eftersom if frågan i loopen kollar är pLetter annolunda än vad vad fösta tecknet är i fältet "title", om det är det så skall pLetter uppdateras och skrivas ut:

...
response.write pletter
...
sql = "select title from songs order by title"
set rs = connect.execute(sql)
pletter = "" ' set it as a empty string.
do while not rs.eof ' Loop all titles from songs-table
    if pletter <> left(rs("title"),1) then ' Is pLetter different then the first character in "title"? if so, we update the pLetter variable and print it out.
        pletter = left(rs("title"),1)
        response.write "<h2>" & pletter & "</h2>"
    end if
    response.write rs("title") & "<br />"
    rs.movenext
loop

Lite kommentarer.

mackanzMedlem sedan sep. 2003443 inlägg
#7

Okay. Ska se om jag förstår något av detta.

Just nu UTAN att ha infogat någon kod ser den ut så här.

<%
sql = "SELECT * from latar order by titel asc"
rs.open sql, mincon, 3, 3
%>
<%
vColor = Array("#F5EDED", "#ffffff")
i = 0
do while not rs.eof
	%>
	<tr bgcolor="<%=vColor(i Mod 2)%>" class="<%If rs("titel") < Now Then Response.Write "inthepast" Else Response.Write "inthefuture" End If%>">
	<td class="brodtext"><a href="visa_lat.asp?NAMEID=<%=rs("lat_ID")%>"><%=rs("titel")%>
</a>
<%
	rs.movenext
	i = i + 1
loop
rs.Close
%>
voigtann1Medlem sedan juni 20019 519 inlägg
#8

Och så infoga du logiken för det:

<%
sql = "SELECT * from latar order by titel asc"
rs.open sql, mincon, 3, 3

dim pLetter
pLetter = ""

vColor = Array("#F5EDED", "#ffffff")
i = 0
do while not rs.eof
	%>
	<%
	if(pLetter <> Left(rs("titel"), 1) Then
		pLetter= Left(rs("titel"), 1)
	%>
		<tr><td><h2><%=pLetter%></h2></td></tr>
	<%End If>
	<tr bgcolor="<%=vColor(i Mod 2)%>" class="<%If rs("titel") < Now Then Response.Write "inthepast" Else Response.Write "inthefuture" End If%>">
	<td class="brodtext"><a href="visa_lat.asp?NAMEID=<%=rs("lat_ID")%>"><%=rs("titel")%>
</a>
<%
	rs.movenext
	i = i + 1
loop
rs.Close
%>
mackanzMedlem sedan sep. 2003443 inlägg
#9

Nu börjar jag förstå en del. Satte in koden men får något error.
Tyvärr kan får jag inte fram något felmeddelande.
Utan det står att sidan kan inte visas.

Men en kompis fick upp.

Microsoft VBScript compilation error '800a03ee'

Expected ')'

/fakta/fakta_latar.asp, line 66

if(pLetter <> Left(rs("titel"), 1) Then
-----------------------------------^

Sidan jag arbetar med finnes här.
http://www.monags.se/fakta/fakta_latar.asp

mackanzMedlem sedan sep. 2003443 inlägg
#10

Misstänker att det kan ha med paranteserna att göra. Men är inte säker.

devotionMedlem sedan jan. 20013 582 inlägg
#11

Du har fått in en parentes för mycket:

if(pLetter <> Left(rs("titel"), 1) Then

Skall vara:

if pLetter <> Left(rs("titel"), 1) Then
mackanzMedlem sedan sep. 2003443 inlägg
#12

Tackar ALLA för all hjälp. Nu funkar allt som det ska.

devotionMedlem sedan jan. 20013 582 inlägg
#13

Hmmm...

<%End If>

Skall vara:

<%End If%>

;)

134 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)