基本的に、私のウェブサイトに検索ページを作成し、各バンド名/トラック/ロケーション AZ を表示する必要があります。すべてのバンドをアルファベット順に一覧表示することに成功しましたが、ページの半分に 0 ~ 9、AL を表示し、もう半分に MZ を表示したいと考えています。Ascii チェック + カウントを使用して各バンドの最初の文字をチェックし、それらを正しいアルファベット グループに呼び出す方法はありますか? ありがとう。
質問する
126 次
2 に答える
1
文字列の最初の文字に基づいてクエリをセットに分割したいようです。CF 10 または Railo 4 では、Underscore.cfc の groupBy 関数を使用して、次のようにこれを実現できます。
_ = new Underscore();
bands_by_name = _.groupBy(bands, function(band) {
var first_letter = left(band.name, 1);
if (isNumeric(first_letter))
return '0-9';
else if (first_letter <= 'L')
return 'A-L';
else
return 'M-Z';
});
groupBy(collection, callback)
コレクションを反復処理し、コールバック関数を各項目に適用し、戻り値を使用してコレクション項目を新しい構造体にグループ化します。
この場合、bands_by_name
構造体にはキー0-9
、A-L
、およびがありM-Z
、それぞれに関連する結果を含む構造体の配列が含まれます。例:
{
'0-9': [{name: '1 Band', track: 5, location: 'CA'}, {name: '2Cool', track: 1, location: 'NM'}],
'A-L': [{name: 'Good Band', track: 2, location: 'NY'}],
'M-Z': [{name: 'Some Band', track: 3, location: 'PA'}, {name: 'What a Band', track: 2, location: 'NV'}]
}
注: Underscore.cfc ライブラリを作成しました。
于 2012-12-17T10:07:06.973 に答える
0
少し冗長ですが、リストにASCII値を追加/変更することで、列をすばやく変更できますbandGroups
。 各列にデータがあると想定しています。
<!--- syntax may very depending on database --->
<cfquery ...>
Select
bandName
, trackName
, location
, upper(left(bandName,1)) as firstLetter
from
someTable
order by
bandName
</cfquery>
<!---
create a list of ascii values used to break up your columns
this will allow you to easily change the number of columns
End first group at L , end next group at [ (first char after "Z")
--->
<cfset bandGroups = asc("M") & ',' & asc("[")>
<cfset thisGroup = 1>
<cfset header = '<div style = "float: left; width: #int(100/listLen(bandGroups))#%"><table>'>
<cfoutput>#header#</cfoutput>
<cfoutput query = "query" group = "firstLetter">
<tr>
<td colspan="3">
#query.firstLetter#
</td>
</tr>
<cfoutput>
<tr>
<td>#query.bandName#</td>
<td>#query.trackName#</td>
<td>#query.location#</td>
</tr>
</cfoutput>
<cfif query.recordCount eq query.currentRow or asc(query.firstLetter) gte listGetAt(bandGroups, thisGroup)>
<cfset thisGroup++>
</table>
</div>
<cfif query.currentRow neq query.recordCount>
#header#
</cfif>
</cfif>
</cfoutput>
于 2012-12-17T16:51:43.190 に答える