我在我的codeigniter應用程序中從數據庫中獲取數組的視圖。 我想根據數組的內容創建多個組合框。如何防止組合框中的重複值
這裏的數組是什麼樣子:
Array (
[0] => Array (
[L1ID] => 2
[L1Location] => USA
[L2ID] => 3
[L2Location] => New York
[L3ID] => 4
[L3Location] => Manhanttan
)
[1] => Array (
[L1ID] => 2
[L1Location] => USA
[L2ID] => 8
[L2Location] => New Jersey
[L3ID] => 7
[L3Location] => Bergen County
)
[2] => Array (
[L1ID] => 5
[L1Location] => Canada
[L2ID] => 12
[L2Location] => Ontario
[L3ID] => 50
[L3Location] => Toronto
)
[3] => Array (
[L1ID] => 6
[L1Location] => South Korea
[L2ID] => 22
[L2Location] => Gyungido
[L3ID] => 25
[L3Location] => Buchon
)
)
正如你所看到的,在陣列中的每個項目可以有內定義多達3個位置。 我想創建一個包含所有位置1的組合框。所以,換句話說,它會有「美國」,「加拿大」,「韓國」作爲選項。當用戶點擊任何位置時,我想要查詢相同的數組並獲得下一級別 - 所有位置2 - 填充到單獨的組合框中。 因此,例如,當他們在位置1選擇「USA」時,位置2組合將顯示「New York」和「New Jersey」作爲選項。我已經寫了一些代碼來開始循環數組並提取所有L1(位置1),但我不知道如何防止添加重複項。
這裏是我的代碼:
<select id="L1locationlist" name="L1locationlist">
<option value=""></option>
<?php
foreach ($locations as $location) {
echo ($location['L1ID'].'<BR>');
echo '<option value="' . $location['L1ID'] . '">' . $location['L1Location'].'</option>';
}
?>
</select>
我只希望在組合框中一個美國入境。 你能告訴我我該怎麼做?我是否必須創建一個單獨的函數來檢查它是否已經存在於組合框中? 謝謝。
編輯:
最初的計劃是從數據庫中獲取一次的所有位置信息,然後在客戶端上,不知何故動態地深入到根據用戶點擊一下不同的位置。 但我想我也應該問這是否是一個好的設計?如果我只是分別調用數據庫,代碼可能會更「乾淨」。例如,我將首先獲得所有位置1的值。然後,如果用戶選擇「美國」,我將再次查詢美國的所有sublocations db。 我想最初的想法是保存多次到數據庫。 有何評論?
你可以分開國家到另一個陣列,並填寫'select'與國家。當用戶點擊國家時,加載包含位置的數組。 – doktorgradus
點,我建議要麼爲每組位置做一個單獨的查詢,要麼編寫一個'JOIN'語句來獲取與此相同格式的所有字段,但僅限於您要使用的信息。 – 0b10011