我在我的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