문제

내가 사용하는 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 를 사용하여 카운트 값을 보장하는 경우에 없는 결과를 하나만 표시 문자(표준으로 텍스트)또는지 표시합니다.

얼마나 많은 행은 당신이 작동 될 것에 있을 수 있으므로 더 좋은 방법이 있습니다.예를 들어,저장하는 첫 번째 문자의 필요한 링크 필드에서 별도의 열에 삽입하는 것을 줄이는 오버헤드를 선택할 때.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top