我们正在开发内部库存系统。当用户从供应商订购商品并输入订单信息时,我希望brand
,model
,SKU
等用户输入为自由格式输入,然后在提交时,它将所有这些值与库存数据库中已有的项目进行比较。首先它会比较SKU
如果找到它然后直接匹配。如果没有,则继续比较model
和brand
,并要求用户确认它们是相同的项目。
有没有人对完成此操作的最佳方法有任何想法?我甚至无法想到这会被称为google它。 代码示例/资源将不胜感激!
答案 0 :(得分:2)
假设您的表单字段名为“orderInfo”,其值为“12345 Acme Gadget”(其中12345是有效的SKU)
<cfquery name="checkSKU" datasource="inventoryDSN">
SELECT
*
FROM
Inventory
WHERE
cast(SKU as varchar) IN (<cfqueryparam value="#ListChangeDelims(form.orderInfo, ' ', ',')#" list="true" cfsqltype="cf_sql_varchar">)
</cfquery>
<cfif checkSKU.recordCount>
<!--- We have a match! --->
<cfelse>
<cfquery name="checkOthers" datasource="inventoryDSN">
SELECT
inventory.*
FROM
Inventory
WHERE
1=0
<cfloop list="#form.orderInfo#" delimiters=" " index="searchTerm">
OR brand LIKE <cfqueryparam value="%#searchTerm#%" cfsqltype="cf_sql_varchar">
OR model LIKE <cfqueryparam value="%#searchTerm#%" cfsqltype="cf_sql_varchar">
</cfloop>
</cfquery>
<cfif checkOthers.recordCount IS 1>
<!--- have a solid match --->
<cfelseif checkOthers.recordCount GT 1>
<!--- have some ambiguity, present user with choice among returned results --->
<cfelse>
<!--- No match found, return error message --->
</cfif>