當(dāng)時(shí)弄了一個(gè)例子,搞完了隨手也就扔了-_-!
前些天藍(lán)色經(jīng)典論壇那一位朋友問(wèn)起來(lái),又突然想到了,不過(guò)我看到PM的時(shí)候,他已經(jīng)自己搞定了
汗,怕遺忘,加來(lái)算篇日志:)
我當(dāng)時(shí)的思路是:
1,目前暫以歌手的拼音首字母排序
2,數(shù)據(jù)庫(kù)中輸入的歌手名稱(chēng),直接漢字(除了外國(guó)佬:),不帶任何的首字母前綴
3,解決辦法,用一函數(shù)(現(xiàn)成的),功能嘛就是提取一段字符串的首字母
[Ctrl+A 全部選擇 提示:你可先修改部分代碼,再按運(yùn)行]
4,接著一個(gè)提取判斷:如果需要首字母為L(zhǎng)的,則提取出數(shù)據(jù)庫(kù)中的歌手名,進(jìn)行轉(zhuǎn)換函數(shù)的附加,與約定的需要的字母L判斷
我弄了個(gè)懶方法。
Function show(wchar) Set rs = Server.CreateObject ("ADODB.Recordset") sql = "Select * from mper" rs.Open sql,conn,1,1 if rs.EOF and rs.BOF then response.write ("暫時(shí)還沒(méi)有記錄") else Do Until rs.EOF if getpychar(rs("m_name"))=wchar then response.write("歌手:"& rs("m_name")) end if rs.MoveNext Loop end if end function |
這個(gè)自定義函數(shù),就是顯示數(shù)據(jù)庫(kù)中 某歌手拼音首字母 是 變量wchar對(duì)應(yīng)的值(比如A,B,C,D……)show("L")就是首字母是L的:)
就這樣,功能很快實(shí)現(xiàn)了,不過(guò)沒(méi)有再優(yōu)化,細(xì)化下去-_-!
我的操作步驟:
1,建立數(shù)據(jù)庫(kù)cnvm.mdb
建立表 mper
建立字段 m_id:自動(dòng)編號(hào),主鍵
建立字段 m_name:文本,歌手名
建立字段 m_zj:文本,歌手專(zhuān)集或歌曲名
2,數(shù)據(jù)庫(kù)連接文件conn.asp
<% db_path = "cnvm.mdb" Set conn= Server.CreateObject("ADODB.Connection") connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath(db_path) conn.Open connstr %> |
3,庫(kù)文件lib.asp,主要功能見(jiàn)上描述
<!--#include file="conn.asp" --> <% function getpychar(char) tmp=65536+asc(char) if(tmp>=45217 and tmp<=45252) then getpychar= "A" elseif(tmp>=45253 and tmp<=45760) then getpychar= "B" elseif(tmp>=45761 and tmp<=46317) then getpychar= "C" elseif(tmp>=46318 and tmp<=46825) then getpychar= "D" elseif(tmp>=46826 and tmp<=47009) then getpychar= "E" elseif(tmp>=47010 and tmp<=47296) then getpychar= "F" elseif(tmp>=47297 and tmp<=47613) then getpychar= "G" elseif(tmp>=47614 and tmp<=48118) then getpychar= "H" elseif(tmp>=48119 and tmp<=49061) then getpychar= "J" elseif(tmp>=49062 and tmp<=49323) then getpychar= "K" elseif(tmp>=49324 and tmp<=49895) then getpychar= "L" elseif(tmp>=49896 and tmp<=50370) then getpychar= "M" elseif(tmp>=50371 and tmp<=50613) then getpychar= "N" elseif(tmp>=50614 and tmp<=50621) then getpychar= "O" elseif(tmp>=50622 and tmp<=50905) then getpychar= "P" elseif(tmp>=50906 and tmp<=51386) then getpychar= "Q" elseif(tmp>=51387 and tmp<=51445) then getpychar= "R" elseif(tmp>=51446 and tmp<=52217) then getpychar= "S" elseif(tmp>=52218 and tmp<=52697) then getpychar= "T" elseif(tmp>=52698 and tmp<=52979) then getpychar= "W" elseif(tmp>=52980 and tmp<=53640) then getpychar= "X" elseif(tmp>=53689 and tmp<=54480) then getpychar= "Y" elseif(tmp>=54481 and tmp<=62289) then getpychar= "Z" else '如果不是中文,則不處理 getpychar=char end if end function function getpy(str) for i=1 to len(str) getpy=getpy&getpychar(mid(str,i,1)) next end function Function show(wchar) Set rs = Server.CreateObject ("ADODB.Recordset") sql = "Select * from mper" rs.Open sql,conn,1,1 if rs.EOF and rs.BOF then response.write ("暫時(shí)還沒(méi)有記錄") else Do Until rs.EOF if getpychar(rs("m_name"))=wchar then response.write("歌手:"& rs("m_name")) response.write(" 歌名:"& rs("m_zj")) response.write("<br>") end if rs.MoveNext Loop end if rs.close Set rs = Nothing end function %> |
4,頁(yè)面顯示index.asp,沒(méi)有多考慮,用了幾個(gè)特例進(jìn)行調(diào)試
<!--#include file="lib.asp" --> <% mchr=request.querystring("mchr") if mchr="" then %> D開(kāi)頭的<hr> <%=show("D")%><br> L開(kāi)頭的<hr> <%=show("L")%><br> Z開(kāi)頭的<hr> <%=show("Z")%> <%else%> <%=mchr%>開(kāi)頭的<hr> <%=show(mchr)%> <%end if%> <% for i = 65 to 90 response.write("<a href=index.asp?mchr="&chr(i)&">"&chr(i)&"</a> ") next %> |
頁(yè)面調(diào)試地址:
http://cnbruce.com/test/music/
SO,上面算是我的回憶。再看這位朋友是如何解決的:
http://www.5do8.com/news.asp?id=193