webForumDet fria alternativet

Dela upp i bokstavsordning

ASP

27 svar · 685 visningar · startad av Gimbo

Medlem sedan dec. 20001 626 inlägg
Frågan#1

Hejsan!

I min tabell i datbasen har jag en kolumn som heter namn...
Och den är så gott som fullproppad med olika namn, nu är det så att jag vill dela upp alla dessa namn i ett bokstavs register, dvs.
A,B,C,D....Ö
När man klickar på bokstaven A så ska samtliga namn som börjar på A listas klickar man på B så ska samtliga namn som börjar på B listas, någon som har någon som helst lösning på detta??

Medlem sedan aug. 200133 inlägg
#2

Länkarna: <a href="filen.asp?bokstav=a">A</a> <a href="filen.asp?bokstav=b">B</a> osv...

SQL i filen.asp: "SELECT * FROM tabell WHERE namn LIKE '" & Request.QueryString("bokstav") & "%'"

(Procenttecknet är wildcard, vissa databaser använder stjärna (*) i stället.)

Medlem sedan nov. 20017 144 inlägg
#3

Det kan vara smidigt att skapa en liten array också.

Dim arr, a
arr = Array ( "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "Å", "Ä", "Ö" )

For a = 0 To uBound ( arr )
     Response.Write "<a href=""filen.asp?bokstav=" & arr ( a ) & """>" & arr ( a ) & "</a>&nbsp;"
Next

MVH Jesper :)

Medlem sedan dec. 20001 626 inlägg
#4

jag får detta felmeddelande i sql sattsen:

Microsoft OLE DB Provider for ODBC Drivers error '80040e14' 

[Microsoft][ODBC Microsoft Access Driver] Syntax error in FROM clause.
Medlem sedan dec. 20001 626 inlägg
#5

Ajdå vilket misstag, stavade Where som were... det va därför jag fick det felmeddelandet

Medlem sedan dec. 20001 626 inlägg
#6

ok, fick det att fungera men om jag nu vill vidare utveckla detta, jag vill att då det inte finns några namn säg på bokstaven Ö, så ska det stå, inga namn arkiverade...

jag gör så här, men det fungerar naturligtvis INTE:

<%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("databasen.mdb")
Set RecSet = Server.CreateObject("ADODB.Recordset")
SQL = "SELECT * FROM Medlemmar WHERE Namn LIKE '" & Request.Querystring("bokstav") & "%'"
RecSet.Open SQL, Connect, adOpenStatic, adLockOptimistic
Do until RecSet.EOF

If Request.Querystring("bokstav") = EOF then
respons.write "Inga namn arkiverade"
End If
%>

Och en sista fråga om jag har några namn som börjar på en siffra hur gör jag då, med avseende på array scriptet jag fick, jag lägger till # (nummer) och sedan vill jag att alla namn som börjar på ett nummer ska listas där, måste deklerera # så att den får värdet 1,2,3,4...9 hur kan man göra det??

Medlem sedan mars 20025 907 inlägg
#7

Prova

Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("databasen.mdb")
Set RecSet = Server.CreateObject("ADODB.Recordset")
SQL = "SELECT * FROM Medlemmar WHERE Namn LIKE '" & Request.Querystring("bokstav") & "%'"
RecSet.Open SQL, Connect, adOpenStatic, adLockOptimistic
If RecSet.EOF then
Response.write "tjoohoo"
Else
Do until RecSet.EOF
...
End if
%>
Medlem sedan dec. 20001 626 inlägg
#8

d ville sig inte, men om vi går över till min andra fråga det där med inga poster komemr jag kunna fixa förr lr senare, men det där med nummer blir lite svårare, ngn som kan hjälpa mig med det??

Medlem sedan mars 20015 287 inlägg
#9

Fungerade det inte med:

<%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("databasen.mdb")
Set RecSet = Server.CreateObject("ADODB.Recordset")
SQL = "SELECT * FROM Medlemmar WHERE Namn LIKE '" & Request.Querystring("bokstav") & "%'"
RecSet.Open SQL, Connect, adOpenStatic, adLockOptimistic
If RecSet.EOF then
respons.write "Inga namn arkiverade under bokstaven " & Request.Querystring("bokstav")

Else
Do until RecSet.EOF

'gör vad du ska på sidan...

End if
%>

?

Det där med siffrorna fattar jag inte riktigt?
Du kan väl lägga in dom i din array också, eller?

Medlem sedan nov. 20017 144 inlägg
#10

Hoppas att du kan få lite insperation ifrån detta!
Det måste säkert fixas lite för att funka!

bokstav=Request.Querystring("bokstav")
if bokstav = "siffror" then
sql = "SELECT *FROM Medlemmar WHERE Namn Not Like 'a%'"
for alphabet = 98 to 122
sql = sql & " AND Namn Not Like '" & chr(alphabet) & "%'"
  next
  sql = sql & " ORDER BY Namn"
else
  SQL = "SELECT * FROM Medlemmar WHERE Namn LIKE '" & Request.Querystring("bokstav") & "%'"
end if 

Response.Write "<a href='filen.asp?bokstav=siffror'>Siffror och andra konstiga tecken</a> "

MVH Jesper :)

Medlem sedan mars 2002777 inlägg
#11

Jag skulle gjort menyn så här:

strSQL = "select distinct(ucase(left(Username,1))) " & _
" from tabell order by Username"

set rs = connect.Execute(strSQL)

if not rs.eof then
arrMeny = rs.GetRows()

Response.Write "<p>Meny:</p>"

For I = 0 To UBound(arrMeny,2)

category = arrMeny(0,I)

Response.Write "<a href=""users.asp?ordning="&category&""">"&category&"</a>"
Next 

else

'#-- inga medlemmar fanns
end if

RED stavfel

Medlem sedan dec. 20001 626 inlägg
#12

Jag har fått det att fungera då det inte finns några namn under en bokstav..,

2 problem kvarstår:

1, det där med att fiza så att de numrerade namnen får en meny länk
2, på aspfilens första sida så listas alla namn från databasen och sen kommer menyn, jag vill att bara menyn skall visas och inte samtliga namn och därefter menyn.

för problem 1 så har jag följande kod som meny

<%
Dim arr, a
arr = Array ( "#", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "Å", "Ä", "Ö" )
For a = 0 To uBound ( arr )
Response.Write "<a href=""tillf_text.asp?bokstav=" & arr ( a ) & """>" & arr ( a ) & "</a> "
  Next
%>

direkt saxad från Jesper...

det jag vill är då man klickar på # som är en länk så skall alla namn som börjar med en siffra listas...

det jag undrar, och som inte fungerar, d e att jag deklerar variabeln #
och sedan sätter jag den = 2 or 1 or 3 osv ända till 9, men det fungerar naturligtvis inte... någon som kan hjälpa mig med dessa 2 kvarstående problem??

Medlem sedan feb. 20001 590 inlägg
#13

Det borde fungera med en teckenmatchning direkt ur databasen.

bokstav=Request.Querystring("bokstav")

strSQL = "select * from tabell where username like '"&bokstav&"*' order by username"

dvs. att använda sig av * för mönstermatchning.

Om du har Access, kolla hjälpfilerna för Like operatorn.

/T

Medlem sedan dec. 20001 626 inlägg
#14

jojo men så har jag gjort o, du kollar tidigare inlägg, problemet är menyn, dvs att länken # ... närman klickar på den nu så kommer man till aspsidan.asp?bokstav=# och den här länken vill jag ska sortera samtliga nummernman från databasnkolumnen...

och min andra fråga, hur ska jag bli av med alla namn som listas på första sidan?? jag vill bara ha menyn med bokstäverna och inte så att alla namn listas från databasen och sen en bokstavsmeny, hela min kodning ser ni i tidigare inlägg

Medlem sedan mars 20015 287 inlägg
#15

hur ska jag bli av med alla namn som listas på första sidan??

et är väl redan löst? Med den kod du visar 3 inlägg högre upp!?!
Den listar ju bara bokstäver.
Red. Å vid närmare eftertanke borde väl eg. ditt script vara "klart" nu:

<%
Dim arr, a
arr = Array ( "#", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "Å", "Ä", "Ö" )
For a = 0 To uBound ( arr )
Response.Write "<a href=""tillf_text.asp?bokstav=" & arr ( a ) & """>" & arr ( a ) & "</a> "
  Next

bokstav = Request.Querystring("bokstav")
If  bokstav  <> "" then

Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("databasen.mdb")
Set RecSet = Server.CreateObject("ADODB.Recordset")
SQL = "SELECT * FROM Medlemmar WHERE Namn LIKE '" & bokstav & "%'"
RecSet.Open SQL, Connect, adOpenStatic, adLockOptimistic
If RecSet.EOF then
respons.write "Inga namn arkiverade under bokstaven " & Request.Querystring("bokstav")

Else
Do until RecSet.EOF

'gör vad du ska på sidan...

End if
End if

%>

Ja, själva utloopningen av namnen ska ju till iofs, men urvalet, både vad det gäller bokstäver samt siffror, fungerar inte det nu?

Medlem sedan dec. 20001 626 inlägg
#16

alltså så här ser hela min sida ut, och den fungerar inte:

<%
Dim arr, a
arr = Array ( "#", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "Å", "Ä", "Ö" )
For a = 0 To uBound ( arr )
Response.Write "<a href=""tillf_text.asp?bokstav=" & arr ( a ) & """>" & arr ( a ) & "</a> "
Next
bokstav = Request.Querystring("bokstav")
if bokstav <> "" then
%>
<br><br>
<%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("databasen.mdb")
Set RecSet = Server.CreateObject("ADODB.Recordset")
SQL = "SELECT * FROM Medlemmar WHERE Namn LIKE '" & Request.Querystring("bokstav") & "%'"
RecSet.Open SQL, Connect, adOpenStatic, adLockOptimistic
If RecSet.EOF then
response.write " Inga namn arkiverade unde bokstaven "& Request.Querystring("bokstav")
Else
Do until RecSet.EOF
%>
<b><%=RecSet("Namn")%></b> - <a href="javascript:visa('visa.asp?visa=<%=RecSet("id")%>&artist=<%=RecSet("Namn")%>');" onfocus="this.blur()"><%=RecSet("eNamn")%></a>

<%
Dim Datum
Datum = RecSet("sDatum")
if (Datum  > date()-7) then
response.write("<font color=red><b>NY</b></font>" & "&nbsp;")
end if
%>
<br>
<%
RecSet.MoveNext
Loop
RecSet.Close
Connect.Close
set Connect = nothing
%>

.
.
en del html kod
.
<%End If%>
<%End If%>

hoppas ni förstår mig bättre nu, och det där med nummer fungerar inte d heller

Medlem sedan mars 20015 287 inlägg
#17

Vad är det som inte fungerar? Bortsett från numren.

Medlem sedan dec. 20001 626 inlägg
#18

Hela sidan laddas inte, plus att den loppar igenom allt som finns i databasen på första sidan

Medlem sedan mars 20015 287 inlägg
#19

Om du bara kör den sidan, som jag tar för givet heter tillf_text.asp(?) UTAN någon querystring så laddar den väl? Och visar "menyn" med bokstavslänkarna?

Medlem sedan dec. 20001 626 inlägg
#20

om jag tar bort

bokstav = request.qyerystring("bokstav")
if bokstav <>  "" then
..

och end if som tillhör denna satts så fungerar det men då listar den samtliga namn på första sidan, och hela menyn fungerar förrutom #, som skall lista namnen som börjar med nummer

270 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)