2011-10-06 40 views
2

我會先解釋我在做什麼 - 我覺得'真實世界'的解釋會使這個更容易理解。我有一個類別&在線商店的子類別列表。數據庫表以簡單的方式進行配置 - id,category_name和subcategoryof - subcategoryof是0來表示頂級類別。cfquery分組,計數和最大行數

在商店的主索引中,我列出了所有類別和子類別 - 使用左連接的單個查詢和cfoutput查詢中的cfoutput(代碼粘貼在下面)的組合。這樣做效果很好,可以讓我對頂級類別和子類別進行足夠的風格區分。

但是,該列表現在有點長,現在需要大量的滾動來瀏覽頁面。我想要做的是這個;

輸出目前所有頂級類別 僅輸出2個子類別 顯示有多少額外子類別(即+7更多子類別)的計數。

現在,我將實際輸出所有內容,正如我現在所做的那樣 - 然而,在第二個子類別之後,我會將以下子類別設置爲隱藏,並使用「+7更多子類別」文本切換顯示?)。

我的問題和問題是這樣的 - 我如何獲得用於「+ x更多子類別」文本的子類別計數?我假設我目前使用遞增計數來確定開始隱藏行的點是最佳路線?下面

<cfquery name="getcategories"> 
SELECT p.ID AS CategoryID, p.Cat_Name as CategoryName, p.Cat_Shortname, c.ID AS SubCategoryID, c.Cat_Name as SubCategoryName, c.Cat_Shortname AS SubCatShortname 
FROM product_categories p LEFT JOIN product_categories c ON p.ID = c.SubcategoryOf 
WHERE p.SubcategoryOf = 0 
</cfquery> 
<ul> 
    <cfoutput query="getcategories" group="CategoryName"> 
    <li class="catli"><a href="">#CategoryName#</a></li> 
    <cfoutput><li class="subli"><a href="">#SubcategoryName#</a></li></cfoutput> 
     <li class="subli moreli"><a href="">+ 7 More Subcategories</a></li> 
    </cfoutput> 
</ul> 

回答

2
<ul> 
    <cfset SubcategoryNames = []> 
    <cfoutput query="getcategories" group="CategoryName"> 
    <li class="catli"><a href="">#CategoryName#</a></li> 
     <cfoutput> 
      <cfset arrayAppend(subcategoryNames, SubcategoryName)> 
     </cfoutput> 
     <cfloop from="1" to="#max(arrayLen(subcategoryNames),2)#" index="i"> 
      <li class="subli"><a href="">#SubcategoryName[i]#</a></li> 
     </cfloop> 
     <cfif arrayLen(subcategoryNames) GT 2> 
      <li class="subli moreli"> 
      <a href="">+ #arrayLen(subcategoryNames) - 2# More Subcategories</a> 
      </li> 
     </cfif> 
    </cfoutput> 
</ul> 
+0

感謝亨利

現有的代碼,那是一個巨大的幫助。爲了其他人試圖做同樣的事情,你的代碼工作正常,但我不得不做一個小的改動,以使輸出正確顯示;

  • #SubcategoryName[i]#
  • Lee

    +0

    @Lee thx,固定。 :) – Henry