在ColdFusion数组中隐藏(不消除)重复项

时间:2014-08-27 02:33:55

标签: coldfusion

我们有一个三面板显示屏,其中Panel One显示国家列表,Panel Two显示组织列表,Panel Panel显示飞机列表。如果您单击某个国家/地区,则该组织和飞机都会按该国家/地区进行过滤,并使用每个国家/地区的ID。

这一切都运作正常,但飞机列表来自“链接表” - 每条记录包含飞机ID和名称,以及运营商ID和名称。任何类型的飞机都可以多次列出,具体取决于有多少组织运营。例如,“AW159 Wildcat”列出两次,一次用于陆军航空兵,一次用于皇家海军。它现在的工作方式,当页面最初加载时,面板3中列出了“AW159”两次。

我希望任何给定的飞机在初始页面加载时只显示一次,无论它在此链接表中列出的次数如何。但是,如果有人过滤营运组织,我希望显示所有可用的“重复项”。

有没有办法绕过所有飞机,但不知何故隐藏了飞机ID的重复?或者,我们的数据库设计方式可能存在更大的问题吗?我愿意接受建议。非常感谢大家!

编辑:抱歉没有发布代码;这里有一些。感谢大家的帮助!

1。 cfc中的查询和数组填充:

    <cfquery name="queryByOperator" datasource="vertipedia">
        SELECT view_aircraftbyoperators.aircraftID
          , view_aircraftbyoperators.Aircraft
          , view_aircraftbyoperators.operatorID
          , view_aircraftbyoperators.Operator
          , tbl_companies.country 
          , tbl_companies.companyShortName
        FROM view_aircraftbyoperators JOIN tbl_companies 
            ON tbl_companies.ID = view_aircraftbyoperators.operatorID
        ORDER BY Aircraft
    </cfquery>

    <cfset count = 1>
    <cfset aircraftByOperator = arrayNew(2)>

    <cfloop query="queryByOperator">
        <cfset aircraftByOperator[count][1] = aircraftID>
        <cfset aircraftByOperator[count][2] = Aircraft>
        <cfset aircraftByOperator[count][3] = operatorID>
        <cfset aircraftByOperator[count][4] = Operator>
        <cfset aircraftByOperator[count][5] = country>
        <cfset count = count+1>
    </cfloop>

2。在页面上输出:

<ul>
<cfloop from="1" to="#ArrayLen(aircraftByOperator)#" index="i">
    <cfoutput>
    <li name="#aircraftByOperator[i][3]#" class="#aircraftByOperator[i][5]#">
    <p>
        <a href="aircraft.cfm?aircraftID=#aircraftByOperator[i][1]#">#aircraftByOperator[i][2]#</a>
    </p>
    </li>
    </cfoutput>
</cfloop>
</ul>

[i] [1],[i] [3]和[i] [5]都是ID。 “operatorID”是根据操作飞机的人而改变的。我希望这有助于解释我正在尝试的内容,并再次非常感谢!

1 个答案:

答案 0 :(得分:0)

Dan Bracuk的评论“这是否意味着你要将所有数据预先加载到javascript中?在那里抛出一些ajax并在需要时得到你需要的东西可能更有效”最终成为了要走的路为了我们。我想将他的评论标记为答案,但我无法看到如何做到这一点。

对于可能阅读此帖的其他人,我们

  1. 最初装载所有飞机
  2. 当访问者按国家/地区和/或组织过滤时,会通过ajax
  3. 发送新查询
  4. 我很难格式化返回的数据,因此我使用jQuery的load()对其进行格式化并将其放在输出面板中的适当位置。
  5. 正如Dan所说,它非常快速且易于使用,特别是随着我们的数据库不断增长。

    谢谢Dan!