循环通过Coldfusion中另一个查询的cfoutput内的查询

时间:2012-08-10 20:45:59

标签: coldfusion

我正在尝试编写一个函数来查找产品的替代版本中的图像(这些是书籍,因此任何具有相同“标题”的产品都可以使用)通过循环浏览任何与该产品共享标题的产品错过了一个图像。

我首先运行查询以获取将在页面上显示的产品(我知道这部分工作正常,所以我不关心它)。在显示图像时,我首先检查所选产品是否有一个。

如果没有可用的图像,我想对具有相同“标题”或“完整标题”的任何产品运行第二个查询,并查看它们是否具有可用图像。 (正如您在代码中看到的那样#SKU#.jpg)如果找到其中一个备用版本的图像,我将其保存到变量中,一旦循环结束,我将显示所选图像。

如果我仍未找到产品图片,则会显示我们的默认“图片不可用”图片。

<cfquery name="GetProductBasicInfo" datasource="#Request.Application.DataApp.datasource#" dbtype="odbc">
    SELECT product.Title, product.FullTitle, product.SKU, product.series, product.pubdate, productmarket.binding, product.productid, productmarket.productid
    FROM Product, productmarket
    WHERE product.productid = productmarket.productid 
        AND productmarket.Binding LIKE '#FORM.formFormat#' 
        AND product.series NOT IN ('Young Adult','childrens') 
        AND product.PubDate 
            BETWEEN '<cfoutput>#DatePart("m", FORM.formDate)#</cfoutput>/01/<cfoutput>#DatePart("yyyy", FORM.formDate)#</cfoutput>' 
            AND '<cfoutput>#DatePart("m", FORM.formDate)#</cfoutput>/28/<cfoutput>#DatePart("yyyy", FORM.formDate)#</cfoutput>' 
</cfquery> 

<cfoutput query="GetProductBasicInfo">
<!-- set of CFIF statements that determine if the current product has an image. If not, the following code is executed -->
    <cfquery name="altImages" datasource="#Request.Application.DataApp.datasource#" dbtype="odbc">
        SELECT product.SKU
        FROM Product
        WHERE product.title = '#Title#' OR product.fulltitle = '#FullTitle#'
    </cfquery>
    <cfset altPic = "">
    <cfloop query="altImages">
        <cfset altPicLocation = '#application.site.PWROOT#/client/products/prodimagetmb/#altImages.sku#.jpg'>
        <cfif FileExists(ExpandPath(altPicLocation)) eq 'true'>
             <cfset altPic = altPicLocation>
        </cfif>
    </cfloop>
    <cfif altPic NEQ "">
        <img src = "#altPic#" border = "0"> </a>
    <cfelse>
        <img src = "<cfoutput>#application.site.PWROOT#</cfoutput>/client/Products/prodimagedefault/tmbdefault/defaulttmb.jpg" border="0"> </a>
    </cfif>
</cfoutput>

当我运行上面的代码时,我收到错误响应。由于“安全问题”我不允许Coldfusion管理员通过或访问我正在开发的网站的错误日志(是的,我知道这有多愚蠢)所以我不知道具体的错误是什么我到了。

编辑:错误已解决。它与我的第二个查询的格式和我修复过的拼写错误有关。结果就像我担心的那样低效,所以我仍然希望以某种方式简化它。

编辑:添加了每个请求的第一个查询的代码。 “产品”是一个绝对大量的表,包含我们公司销售的约20k个产品记录,每个产品大约35-40列。 Productmarket是一个关联表,其中包含大约40多列。

第一个查询按产品类型和发布日期搜索,以定义页面的内容。当给定产品不存在名称为#SKU#.jpg的图像时,将触发第二个查询;它搜索具有完全相同标题的任何其他产品(从第一次搜索中将省略,因为它是错误的产品类型)。如果存在此类产品,则会检查 #SKU#.jpg是否存在。如果是,则将其分配给变量并用于代替原始变量。

0 个答案:

没有答案