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が含まれるコンボボックスを作成したいと思います。つまり、オプションとして「USA」、「CANADA」、「SOUTHKOREA」があります。ユーザーが任意の場所をクリックすると、同じ配列をクエリして、次のレベル(すべての場所2)を別のコンボボックスに入力したいと思います。たとえば、ロケーション1で「USA」を選択すると、ロケーション2のコンボにはオプションとして「ニューヨーク」と「ニュージャージー」が表示されます。
配列のループを開始し、すべての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>
コンボボックスにUSAエントリを1つだけ入れたい。どうすればいいのか教えていただけますか?コンボボックスに既に存在するかどうかを確認するために、別の関数を作成する必要がありますか?ありがとうございました。
編集:
当初の計画では、データベースからすべての位置情報を一度取得してから、クライアント側で、ユーザーがクリックした内容に応じて、さまざまな場所に動的にドリルダウンするというものでした。しかし、これが良いデザインかどうかも尋ねるべきだと思います。データベースを個別に呼び出すだけで、コードが「よりクリーン」になる可能性があります。したがって、たとえば、最初はすべてのロケーション1の値を取得します。次に、ユーザーが「USA」を選択した場合、米国内のすべてのサブロケーションについてデータベースに再度クエリを実行します。最初の考えは、データベースへの複数のトリップを保存することだったと思います。コメントはありますか?