2011-12-22 97 views
0

我们正在研究内部库存系统。当用户从供应商处订购商品并输入订单信息时,我希望brand,model,SKU等用户输入为自由格式输入,然后在提交时将所有这些值与已经在库存数据库。首先它会比较SKU,如果找到则直接匹配。如果没有,那么它会继续比较modelbrand,并要求用户确认它们是相同的项目。多值匹配比较输入与数据库?

有没有人有任何想法完成此最佳方法?我什至不能想到这将被称为谷歌它。代码示例/资源将不胜感激!

回答

2

假设你的表单字段被命名为 “订单信息”,和值为 “12345 Acme的小工具”(其中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> 

+0

哇。这是惊人的。说实话! – Brian 2011-12-29 23:41:44