如何根据下拉列表中的选择过滤查询结果

时间:2015-06-11 04:48:35

标签: coldfusion

我有两张桌子:foodrequest和employeedetails。我可以根据" FromDate"按日期搜索这些表中的记录。和#34; ToDate"像这样的价值观:

array_shift()

但我无法按员工搜索。即如果我从下拉列表中选择任何员工,它将仅返回其记录。

有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

假设您想要运行您提供的相同代码,偶尔会有日期,偶尔会有员工ID,偶尔会有两个,那么我认为以下内容可行。

<cfquery name="qryFoodRequest" datasource="ebms"  cachedWithin = "#createTimeSpan(0,0,0,5)#">
SELECT  e.FullName FullName
        , e.EmployeeCode EmployeeCode
        , e.DesignationName DesignationName
        , e.DateOfJoin DateOfJoin
        , e.DepartmentName DepartmentName
        , e.ManagerName ManagerName
        , e.ParentOffice ParentOffice
        , f.Requesttype Requesttype
        , f.Foodtype Foodtype
        , f.ReqDate ReqDate
        , f.remarks remarks
FROM    foodrequest f INNER JOIN employeedetails e 
             ON  f.EmployeeId = e.empId 

<cfif structKeyExists(localData,"frmDate") AND structKeyExists(localData,"toDate")>
    AND f.ReqDate between (<cfqueryparam cfsqltype="cf_sql_date" value="#localData.frmDate#">) and (<cfqueryparam cfsqltype="cf_sql_date" value="#localData.toDate#">)
</cfif>
<cfif structKeyExists(form,"empId")>
    AND e.empId = <cfqueryparam cfsqltype="cf_sql_integer" value="#form.empId#">
</cfif>
order by e.empId;
</cfquery>

您可能希望向empId字段添加更多验证。我还更新了您使用的日期参数,这是最佳实践,对正确的页面安全性非常关键。