2013-10-06 57 views
-1

我對這一切都很陌生,我似乎無法在google上找到正確的搜索來獲取我正在尋找的答案。我有一個用戶將用來創建新事務的前端。有一個下拉菜單綁定到與「交易」具有1:M關係的「類別」表(參見圖片)。我的問題是,如果用戶提交此表單以保存新的交易,他們不知道類別表中的ID,他們所做的只是從類別表中拉出的下拉列表中選擇一個。我所知道的在這一點上的做法是從下拉菜單中取出他們的輸入並將其存儲到交易表中的一個字段中。我試圖理解如何使用關係,但是由於我對密鑰的工作原理有限的理解,似乎除非你知道身份證號碼是什麼,否則這種關係並不好。如果您所做的只是從下拉列表中提取並將其存儲在交易表中,那麼您仍然只是將類別名稱存儲在2個不同的表中,那麼具體是什麼意思?我錯過了在這裏的一個步驟,我希望有人可以幫助理解這一點。網站用戶如何與數據庫交互?

enter image description here

回答

2

用戶不知道類別ID。 (儘管他們可以,如果他們想要的話,那就是標記。)更重要的是,你的代碼會知道類別ID。創建該下拉列表(select元素)時,您的代碼將填充這兩個的ID和名稱。該ID用於該值,該名稱用於顯示文本。

產生的標記可能是這樣的:

<select name="category"> 
    <option value="1">First Category</option> 
    <option value="2">Second Category</option> 
    <option value="3">Third Category</option> 
</select> 

等。

當用戶選擇一個時,他們會根據文本進行選擇。但實際的表單會將所選選項的發回給服務器。因此,如果用戶選擇Second Category,那麼在您的服務器端代碼$_POST["category"]將包含值2,這是您需要插入到交易記錄中的ID。

+0

好的,是的!這就是我想要了解的。我最終想要做的是讓用戶能夠添加更多的類別,那麼有沒有辦法讓選項標籤自動增量中的值與類別ID一起使用? – hyphen

+0

@ user1476992:沒有可靠的方法。標識符的真實來源是數據庫。所以你不希望你的UI在這種情況下創建鍵。你可以做的是讓用戶輸入一個類別,然後在你的服務器端代碼中檢查類別是否存在,如果不存在則添加它,然後從插入的新添加的ID中插入以便插入交易記錄。 ('LAST_INSERT_ID()'是獲取新添加的ID的有用的MySQL函數:http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_last-insert-id) – David

+0

ok , 謝謝!! – hyphen