2011-12-22 96 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