【问题标题】:trying to get categories name along with the images in dynamic table rows试图获取类别名称以及动态表行中的图像
【发布时间】:2026-01-28 03:15:01
【问题描述】:

使用此代码进行冷融合,但在尝试了几次之后,我总是多次显示类别和多次图像,我尝试使用 group 属性但它也没有做它的工作,不知道发生了什么错了

这是我的完整代码

<cfparam name="url.mode" default="">
<cfquery name="ImagesCategories">
    select * from rivereast_gallerycategories 
</cfquery>
<div id="spacingorder" align="right"><cfoutput>#DateFormat(now(),'long')#</cfoutput></div>
<div class="row">
  <div class="col-xs-12 col-sm-12">
    <h2>View Gallery Contents</h2>
    <div align="right"> </div>
    <div align="center">
      <cfset variables.newrow = False>
      <table align="center" width="100%" cellpadding="1" cellspacing="5" class="borderspacing">
        <tr>
        <cfif ImagesCategories.recordcount>
           <cfoutput query="ImagesCategories">
           #gallerycategory#
            <cfquery name="filesListings">
                select c.galleryCatID,c.ImageID,c.ImageName as name,c.updatedon
                from rivereast_gallery c
                order by updatedon desc 
            </cfquery>
            <cfloop query="filesListings">
            <cfif variables.newrow EQ true>
                <tr>
            </cfif>
            <td height="30" valign="middle">
            <div id="previewArea">
            <cfset filename = Listlast(filesListings.name,'~')>
            
            
                <img src="#request.weburl#uploads/#filename#" class="img-fluid"><br>
            
            <input type="checkbox" class="ImagesDelete" name="delItems" data-id="#filesListings.imageID#">&nbsp;Delete #filesListings.currentRow#
            </div>
            </td>
            <cfif filesListings.currentRow MOD 5 EQ 0>
                </tr>
                <cfset variables.newrow = true>
            <cfelse>
              <cfset variables.newrow = false>
            </cfif>
            </cfloop>
       </cfoutput> 
       <cfelse>
       <td colspan="3" align="center"><h2>No Files Found</h2></td>
       </cfif>
       </tr>
      </table>
      <cfif filesListings.recordcount>
        <div><input type="button" name="deleImages" id="delImages" class="button btn btn-info" value="Delete"></div>
      </cfif>  
    </div>
  </div>
</div>

这里出了什么问题

【问题讨论】:

    标签: coldfusion lucee


    【解决方案1】:

    没有看到数据很难说,但它可能是这样的。您正在查询循环中运行此查询。

           <cfquery name="filesListings">
                select c.galleryCatID,c.ImageID,c.ImageName as name,c.updatedon
                from rivereast_gallery c
                order by updatedon desc 
            </cfquery>
    

    请注意,它没有where clause。这可能是多次查看相同数据的原因。

    假设您的数据库有些标准化,建议的解决方法是只使用一个查询同时从两个表中获取数据。 sql 看起来像这样。

    select JustTheFieldsYouNeed
    from rivereast_gallerycategories c join rivereast_gallery g 
       on c.categoryID = g.categoryID
    where some condition is met
    

    【讨论】:

    • 一个查询的问题是,如果我使用 frm 分组,所有组都停留在顶部,图像出现在其下方
    • 分组查询输出的一个常见错误是忘记它需要排序查询结果。
    【解决方案2】:

    我会加入这两个查询

    SELECT c.*, g.galleryCatID, g.ImageID, g.ImageName as name, g.updatedon
    FROM rivereast_gallerycategories c, rivereast_gallery g
    WHERE c.galleryCatID = g.galleryCatID
    ORDER BY c.gallerycategory, g.ImageName
    

    然后使用

    &lt;cfoutput query="ImagesCategoriesAndFiles" group="category"&gt;

    更简洁的代码,更少的混乱。

    请参阅此处有关如何使用 cfoutput 对记录输出进行分组的示例:https://cfdocs.org/cfoutput

    【讨论】: