Sortera upp Medlemmar i A-Ö?

ASP

18 svar · 699 visningar · startad av Qimen

Medlem sedan juni 20015 009 inlägg
Trådstart#1

Hej jag har en data bas med medlemmar och så kan varje medlem logga in och så vidare. Men så har jag en sida där man kan se alla medlemmar. Men där är ju inte så bra att ha alla på en sida (kan ju bli rätt långt). Det jag vill att när man väljer till ex. en bokstav "A" så kommer man in på den sidan och där listar scriptet upp alla medlemmar som börjar på A.
Förstår ni?

Ex. på hur jag får upp alla.

<%

If Session("login") <> "ok" Then
	Session("meddelande") = "Du har blivit urloggad, var god logga in igen!"
	Response.Redirect "default.asp"
End If

Set Connect = Server.CreateObject("ADODB.Connection") 
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("../db/members.mdb")&";pwd=000"

Set RecSet = Server.CreateObject("ADODB.Recordset")

Addera = "Select * From members ORDER BY datum"
RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic

%>

Det var databaskopplingen.

<%
X = 0
DO Until RecSet.EOF OR X = 50
X=X+1
%>
        <tr> 
          <td width="55"><font size="1" color="#000000" face="Verdana, Arial, Helvetica, sans-serif"><a href="add_friend.asp?id2=<%=RecSet("id")%>" target="_self">lägg 
            till</a> </font></td>
          <td width="100"><font size="1" color="#000000" face="Verdana, Arial, Helvetica, sans-serif"><a href="whois1.asp?checkid=<%=RecSet("id")%>"><%=RecSet("username")%></a></font></td>
          <td width="100"><font size="1" color="#000000" face="Verdana, Arial, Helvetica, sans-serif"><%=RecSet("kunskap")%></font></td>
          <td><b><font size="1" <%if recset("status") = "offline" then%> color="#FF0000" <%else%>color="#339933" <%end if%>face="Verdana, Arial, Helvetica, sans-serif" face="Verdana, Arial, Helvetica, sans-serif"><%=RecSet("status")%></b></font></td>
          <td><font size="1" color="#000000" face="Verdana, Arial, Helvetica, sans-serif"><%=RecSet("datum")%></font></td>
        </tr>

<%
RecSet.MoveNext
Loop

RecSet.Close
Connect.Close
Set RecSet = nothing
Set Connect = nothing
%>

och det var själva uppspelningen.

Hur gör jag detta? tacksam för kod exempel.

Medlem sedan aug. 20013 824 inlägg
#2

byt ut

Addera = "Select * From members ORDER BY datum"
RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic

mot

Addera = "Select * From members ORDER BY username"
RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic

/ Mikul

Medlem sedan juni 20015 009 inlägg
#3

ja men då sortetar den väl bara ut användarnamnen, väll? jag vill ha bara dom som börjar på A.

Medlem sedan dec. 200012 464 inlägg
#4

Om du skickar vilken bokstav du vill söka på i querystring så kan du använda en fråga som ser ut så här

sql = "select * from members where username like '" & request.querystring("bokstav") & "%'"
Medlem sedan juni 20015 009 inlägg
#5

Så att jag på varje sida gör jag en databaskoppling med det typ så här:

<%
If Session("login") <> "ok" Then
Session("meddelande") = "Du har blivit urloggad, var god logga in igen!"
Response.Redirect "default.asp"
End If

Set Connect = Server.CreateObject("ADODB.Connection") 
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("../db/members.mdb")&";pwd=000"

Set RecSet = Server.CreateObject("ADODB.Recordset")

sql = "select * from members where username like '" & request.querystring("A") & "%'"

%>

eller är det helt fel?

Medlem sedan dec. 200012 464 inlägg
#6

Njae, jag tänkte mer att du på söksidan lade upp det så här

Set Connect = Server.CreateObject("ADODB.Connection") 
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("../db/members.mdb")&";pwd=000"

sql = "select distinct left(username,1) from members order by 1"

set rs = connect.execute(sql)
response.write "Sök medlemmar"
while not rs.eof
response.write "<a href='search.asp?bokstav=" & rs(0)& ">" & rs(0) & "</a>"
rs.movenext
wend
rs.close
connect.close

Då får du en länk för varje bokstav där det finns någon medlem.
Och sedan på search.asp så använder du den kod som jag skrev i förra inlägget.

Medlem sedan juni 20015 009 inlägg
#7

Oki, det med länken fatta jag men med

sql = "select * from members where username like '" & request.querystring("bokstav") & "%'"

fatta jag inte riktigt hur jag skulle göra med.

Medlem sedan dec. 200012 464 inlägg
#8

Jag tänkte bara att du byter ut din select-sats

Addera = "Select * From members ORDER BY datum"

mot den jag skrev och sedan loopar du igenom resultatet på samma sätt.

Medlem sedan juni 20015 009 inlägg
#9

oki. får prova nu

Medlem sedan juni 20015 009 inlägg
#10

Men på Search.asp sidan så får jag detta felmedelande:

ADODB.Recordset fel '800a0bb9'

Programmet använder felaktiga parametrar, som antingen ligger utanför tillåtet intervall, eller som skapar en inbördes konflikt.

/inloggad/search.asp, rad 24

Medlem sedan juni 20015 009 inlägg
#11

Då har jag gjort så här:

<%

If Session("login") <> "ok" Then
	Session("meddelande") = "Du har blivit urloggad, var god logga in igen!"
	Response.Redirect "../default.asp"
End If

Set Connect = Server.CreateObject("ADODB.Connection") 
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("../data/members.mdb")&";pwd=000"

Set RecSet = Server.CreateObject("ADODB.Recordset")

Addera = "Select * From members ORDER BY username"
RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic

%>

Och sedan försökt loppa upp det. Var är det för fel?

Medlem sedan juni 200032 967 inlägg
#12

Nu vet jag inte hur koden ser ut, men du kanske glömt att inkludera adovbs.inc och använder konstanter som deklareras där?

Annars: Hur ser koden ut?

Red: jag vet tydligen hur lite av koden ser ut. ;) adovbs.inc?

Mvh,

Medlem sedan juni 20015 009 inlägg
#13

Ohh, vad dum är, glömde den, men så fick jag det att funka men den visar ju alla medlemmar ändå när man tryckt på en bokstav.

Medlem sedan juni 200032 967 inlägg
#14

Har du bytt ut SQL-frågan till den du fick av LarsG tidigare?

Medlem sedan juni 20015 009 inlägg
#15

När man har valt en bokstav kommer man till Search.asp
På den sidan så har jag en databas koppling som ser ut så här

<%

If Session("login") <> "ok" Then
	Session("meddelande") = "Du har blivit urloggad, var god logga in igen!"
	Response.Redirect "default.asp"
End If

Set Connect = Server.CreateObject("ADODB.Connection") 
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("../data/members.mdb")&";pwd=000"

Set RecSet = Server.CreateObject("ADODB.Recordset")

sql = "select * from members where username like '" & request.querystring("bokstav") & "%'"
RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic

%>

När jag har den så det upp att Programmet använder felaktiga parametrar, som antingen ligger utanför tillåtet intervall, eller som skapar en inbördes konflikt.

Medlem sedan juni 200032 967 inlägg
#16

Oki, då gör vi så här:

Ta bort denna:

Set RecSet = Server.CreateObject("ADODB.Recordset")

Byt ut:

RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic

mot:

Set RecSet = Connect.Execute (Addera)

Mvh,

Medlem sedan juni 20015 009 inlägg
#17

Då får jag meddelande om att det inte angivits något kommando för kommandoobjektet.

:(

<%

If Session("login") <> "ok" Then
	Session("meddelande") = "Du har blivit urloggad, var god logga in igen!"
	Response.Redirect "default.asp"
End If

Set Connect = Server.CreateObject("ADODB.Connection") 
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("../data/members.mdb")&";pwd=000"

sql = "select * from members where username like '" & request.querystring("bokstav") & "%'"
Set RecSet = Connect.Execute (Addera)

%>
Medlem sedan dec. 200012 464 inlägg
#18
Set RecSet = Connect.Execute (sql)
Medlem sedan juni 20015 009 inlägg
#19

Tack så hemskt mycket alla ni som hjälpt mig.

Nu funkar det.

266 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)