2014-01-11 103 views
0

我有一个名为内容的表格,我在添加顶级页面和子页面。顶级页面将有parent__id as the id of page title home,子页面将分别有parent__id。当我添加页面时,它看起来像这样。如何展示小孩的孩子?

id parent__id title and so on. 
1  0  Home 
2  1  About 
3  2  services 
4  1  contact us 

在这里我要像

Home 
    >About 
    >>services 
    >contact 

显示它,我已经试过这

<cfquery name="d" datasource="mydata"> 
    SELECT p.id as parentid, 
      p.title as parent, 
      p.nav_depth, 
      c.id as childid, 
      c.title as child, 
      c.parent__id as child_parentid 
    from content p 
    left join content as c on c.parent__id = p.id 
    where p.site__id = "8432381492061036983" 
    group by p.id, c.id 
    order by p.id, c.id, c.nav_order 
</cfquery> 
<cfdump var="#d#"> 

<cfoutput query="d" group="parentid"> 
    <cfif d.nav_depth EQ 0> 
     #d.parent#<br /> 
     <cfif d.parentid EQ d.child_parentid> 
     <cfoutput>> #d.child#<br /></cfoutput> 
     </cfif> 
    </cfif> 
    <cfif d.nav_depth GT 0> 
      <cfif d.childid EQ d.child_parentid> 
      <cfoutput> >> #d.child<br /></cfoutput> 
      </cfif> 
    </cfif> 
</cfoutput> 

我得到的输出是这样的。当我看着转储它显示正确的结果。

Home 
> About US 
> Services 

可以在任何帮助我,我应该在查询或CFOUTPUT做不同的标记孩子的孩子,只是家长下方显示呢? 这里是我的完整表结构数据http://sqlfiddle.com/#!2/a29fc/1/0。谢谢

+0

请解释页面的概念,你看到它。您的散文与您的代码似乎存在脱节。 –

+0

默认情况下,稍后在内容表中会有一个名为'Home'的页面,每当你添加页面时他们将成为家中的孩子,例如添加名为'about'的页面,它将成为孩子家庭,然后创建另一个名为'services “当你寻找路径时,它会是这样的孩子。家/约/服务 –

回答

1

我没有看到孩子来自哪里,但你需要的是一个嵌套的组输出。这应该让你走上正轨。最值得关注的是您的查询按照它们应该在屏幕上显示的顺序排序。您当前的SQL小提琴没有正确执行此部分。

<cfoutput query="d" group="parentid"> 
    #d.parent#<br /> 
    <cfoutput group="child"><!--- group based on child ---> 
    > #d.child#<br /><!--- output child header ---> 
    <cfoutput> 
     >> #d.child<br /><!--- all matching children for current d.child ---> 
    </cfoutput> 
    </cfoutput> 
</cfoutput> 

这将输出

Home 
> About Us 
>> Our Works 
> Contact Us 
+0

我都试过,但它给别的 '首页 >关于我们 >>关于我们 >服务 >>服务 >我们的作品 >>我们works' –

+0

您需要订购贵正确查询并将第二个d.child引用更新为正确的值 –

+0

我正在订购查询来显示它正在显示正确的我想。引用到正确的这是我想知道的:( –