2016-08-12 54 views
0

我不確定這可以完成,但我想我會問,以防萬一。我有一個配方應用程序,用php編寫。我想將粘貼到文本框中的成分轉換成mysql數據庫中的一行。因此,例如,如果,如果我有一個表名叫成分,它所含將文本中的單詞映射到數據庫中的字符串

id  ingredient  calories 
1  bread crumbs 10 
2  egg   15 
3  salt   1 

,幷包含

id ingredient 

然後該網站有一個文本文件中輸入配料其他表命名的食譜,你說:

1/2 cup bread crumbs 
1 egg 
1 tsp salt 

我想拉「麪包屑」出來的文字,將其插入到recipes表,並匹配到麪包屑在數據庫中,然後取一個雞蛋nd鹽,並做同樣的事情。然後,我可以總結配方的卡路里。

我基本上試圖找到最簡單的方法來提取成分,而不必將其輸入到單個字段或從下拉菜單中拉出它。下拉菜單將有數百行,並且很難。這顯然是一個非常簡單的例子,還有很多其他的事情需要完成,但提取部分就是我正在努力弄清楚的。有任何想法嗎?

+0

這樣做會很困難,因爲人們做錯別字,他們並不總是按照你想要的順序輸入數據等。你最好使用菜單與成分,以及數字輸入字段金額等。 – Barmar

+0

如果你不得不問在這裏如何去做,你將無法做得很好。這不是可以用簡短的答案解釋的東西,它幾乎是人工智能來解析自由形式的文本。 – Barmar

+0

是的......我會輸入文字,以便確保它匹配,即使只輸入成分,只是試圖找到最簡單的方法。 – 2pourdrummer

回答

2

您可以使用這樣的查詢從數據庫中查找成分信息。

$pdo->prepare("SELECT * 
       FROM ingredients 
       WHERE :input_string LIKE CONCAT('%', ingredient, '%') 
       ORDER BY LENGTH(ingredient) DESC 
       LIMIT 1"); 
$pdo->bindParam(':input_string', $_POST['ingredient']); 
$pdo->execute(); 

ORDER BY LENGTHLIMIT 1使其返回最長匹配,因此,如果他們輸入bread crumbs不會返回breadrum爲好。

分析數量會更困難。

+0

用於聰明地使用CONCAT來寬鬆比較列標題。 OP要求的是艱難的。在前端執行自動完成功能,並且如果沒有與期望值完全匹配,則執行驗證/拒絕可能會更好。 – BeetleJuice

相關問題