-
08-06-2019 - |
문제
내가 사용하는 ColdFusion
결과를 반환에서 설정한 SQL 데이터베이스로 목록은.
나는 몇 가지 방법이 필요를 생성하는 알파벳 navigation bar 에 대한 목록입니다.나는 퓨전 및 jQuery 라이브러리를 사용할 수 있다.
내가 찾는 것을 생성하는 무언가 이것을 좋아한다:
A | B | C | ...
- A
- A
- B
- B
- B
- C
- D
는 곳 중 하나를 클릭하면 문자를 삭제 당신은 페이지를 아래로 처음 항목에 대한 편지입니다.하지 않는 모든 26 알파벳 글자는 반드시 사용합니다.
해결책 4
그래서,그 많이 있었의 좋은 제안,그러나 아무도 정확히 무엇을했습니다.다행히 난 그들을 사용할 수 있 그 밖으로 내가 정말 하고 싶었다.유일한 것은 다음을 하지 않는 인쇄 마지막 몇 가지 사용하지 않는 글자(이 있는 경우).그 이유는 내가 하는 cfif 문 검사를 위한'W'로 그의 마지막 편지 사용,그렇지 않으면 그것은을 확인해야 한다 Z.
<cfquery datasource="#application.dsn#" name="qTitles">
SELECT title, url, substr(titles,1,1) as indexLetter
FROM list
ORDER BY indexLetter,title
</cfquery>
<cfset linkLetter = "#asc('A')#">
<cfoutput query="titles" group="indexletter">
<cfif chr(linkLetter) eq #qTitles.indexletter#>
<a href="###ucase(qTitles.indexletter)#">#ucase(qTitles.indexletter)#</a>
<cfif asc('W') neq linkLetter>|</cfif>
<cfset linkLetter = ++LinkLetter>
<cfelse>
<cfscript>
while(chr(linkLetter) != qTitles.indexletter)
{
WriteOutput(" " & chr(linkLetter) & " ");
IF(linkLetter != asc('W')){WriteOutput("|");};
++LinkLetter;
}
</cfscript>
<a href="###ucase(qTitles.indexletter)#">#ucase(qTitles.indexletter)#</a>
<cfif asc('W') neq linkLetter>|</cfif>
<cfset linkLetter = ++LinkLetter>
</cfif>
</cfoutput>
<ul>
<cfset currentLetter = "">
<cfoutput query="qTitles" group="title">
<cfif currentLetter neq #qTitles.indexletter#>
<li><a name="#ucase(qTitles.indexletter)#">#ucase(qTitles.indexletter)#</a></li>
</cfif>
<cfset currentLetter = #qTitles.indexletter#>
<li><a href="#url#">#title#</a></li>
</cfoutput>
</ul>
다른 팁
를 생성하는 네비게이션 바,당신이 뭔가를 할 수 있습니다:
<cfoutput>
<cfloop from="#asc('A')#" to="#asc('Z')#" index="i">
<a href="###chr(i)#">#chr(i)#</a>
<cfif asc('Z') neq i>|</cfif>
</cfloop>
</cfoutput>
(CFLOOP 에서 작동하지 않는 문자,그래서 당신은 당신을 변환하는 ascii 코드고 다시.)
를 표시 항목에서 쿼리를 당신이 뭔가를 할 수 있습니다.
<cfset currentLetter = "">
<cfoutput query="data">
<cfif currentLetter neq left(data.name, 1)>
<h3><a name="#ucase(left(data.name, 1))#">#ucase(left(data.name, 1))#</a></h3>
</cfif>
<cfset currentLetter = left(data.name, 1)>
#name#<br>
</cfoutput>
사용할 수 있습니다 쿼리를 그룹화 기능을 쿼리에 기록합니다.당신은 분명히 있는 쿼리를 변경하려면 필드에 따라 데이터와 왼쪽()함수를 다를 수 있는 구문에 따라 데이터베이스 엔진입니다.쿼리는 아래에서 작동합 MSSQL.
<cfquery datasource="#application.dsn#" name="qMembers">
SELECT firstname,lastname, left(lastname,1) as indexLetter
FROM member
ORDER BY indexLetter,lastName
</cfquery>
<p id="indexLetter">
<cfoutput query="qMembers" group="indexLetter">
<a href="###qMembers.indexLetter#">#UCase(qMembers.indexLetter)#</a>
</cfoutput>
</p>
<cfif qMembers.recordCount>
<table>
<cfoutput query="qMembers" group="indexLetter">
<tr>
<th colspan="99" style="background-color:##324E7C;">
<a name="#qMembers.indexLetter#" style="float:left;">#UCase(qMembers.indexLetter)#</a>
<a href="##indexLetter" style="color:##fff;float:right;">index</a>
</th>
</tr>
<cfoutput>
<tr>
<td><strong>#qMembers.lastName#</strong> #qMembers.firstName#</td>
</tr>
</cfoutput>
</cfoutput>
</table>
<cfelse>
<p>No Members were found</p>
</cfif>
을 얻을 것 SQL 결과 집 목록을 반환하는 첫 번째 장소에서,당신은 쉽게 수 있습 첫 번째 편지의 필요한 항목의 개수.는 가장 빠른 방법을 수행 하는 것입 가입 테이블에 26 개의 문자(이하의 문자열 조작하는 방법).
CF 를 사용하여 카운트 값을 보장하는 경우에 없는 결과를 하나만 표시 문자(표준으로 텍스트)또는지 표시합니다.
얼마나 많은 행은 당신이 작동 될 것에 있을 수 있으므로 더 좋은 방법이 있습니다.예를 들어,저장하는 첫 번째 문자의 필요한 링크 필드에서 별도의 열에 삽입하는 것을 줄이는 오버헤드를 선택할 때.