2011-09-10 163 views
1

我知道如何創建一個下拉列表,但是如果你要創建一個表單,輸入一個在下拉列表的狀態(兩個字母的詞),我只是一個接一個地輸入狀態,還是應該將狀態存儲在數據庫中?創建的狀態下拉列表

+0

能不能請您使用DB爲別的? – kinakuta

+0

嗯...不是真的,我有一個表中的數據庫填充下拉以及..但這似乎是合乎邏輯的,因爲用戶可以添加更多的選項到下拉列表中。 – adit

+0

我不會打擾與表除非你打算在你的數據庫中使用它來達到其他目的。否則它是過度的。 – kinakuta

回答

0

這是有點奇怪的問題。當然取決於你的項目。

如果您需要的性能和速度,加載你的下拉列表時,(我假設你的意思<select />)。然後你可能想把它們放入一個單獨的.php文件中。所以稍後你可以用foreach()來循環它們。這種方法肯定會加載得更快,然後從DB加載50個狀態。

INC-states.php:

$states = array(
    1 => 'Alabama', 
    2 => 'Indiana', 
    3 => 'Nevada' 
    // etc.. 
); 

生成形式:

echo '<select name="states">'; 
foreach ($states as $key => $state) { 
    echo '<option value="' . $key . '">' . $state . '</option>'; 
} 
echo '</select>'; 

所以張貼您將只保存鍵後。稍後,您可以通過密鑰再次獲得正確的狀態:

include('inc-states.php') 

$user['state'] = 2; // Lets make a default for this example 

print $states[$user['state']]; // outputs Indiana 

同樣的基本思想仍然與DB方法一樣。只有這可能更快..除非你想要通過某種管理控制檯來編輯狀態。

注意:你其實說的只是兩個字符的簡碼,但我的例子數組看起來比較漂亮的完整標題。無論如何,正如您可能知道的那樣,您可以將數組中的狀態置於任何格式中。

1

國家名單真的沒有更新的時候,它似乎有點小題大做使用一個數據庫來存儲它們。我不知道你的後端技術是什麼,但我可能會創建一個狀態下拉控件(或任何在你的環境中通過控件傳遞的控件),這可以在多個位置使用,所以在極少數情況下你必須修改你的狀態列表,它只在一個位置完成。您也可以將狀態作爲列表存儲在某種配置系統中,但如果不瞭解有關堆棧的更多信息,則無法提供更多詳細信息。

+0

它是PHP和MySQL在db – adit

+0

在這種情況下,您可以包含()一個包含狀態下拉列表的文件。你可以像Kalle建議的那樣把它們放在一個循環中。 –

0

我會把名單的數據庫,這樣,如果你想存儲的ID爲參考,而不是保存狀態的文本,它會更容易管理關係數據庫的方式。

+0

在表中存儲2個字符的狀態可能只會比存儲引用查詢表的tinyint多一個字節,這意味着只要您想查看某人選擇的狀態,就必須加入查找表。在這個微不足道的例子中,我不認爲正常化是可取的。 –

+1

在數據庫中,兩個字符佔用的空間少於ID。這將更快,更簡單,並且使用更少的空間來存儲兩個字母,而不是存儲ID並鏈接到具有兩個字母的表格。 –

+0

非常真實,我有一個國家數據庫,在那個數據庫中,我有國家代碼,國家全名,ID,緯度,長,等....如果您只使用這兩個字母,那麼我同意,將它們存儲在數據庫中並帶有ID是沒有意義的。 – NateB