2011-10-06 78 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