我有一个数据库中的城市列表。我想在编辑页面上的两个下拉列表中显示用户,所选源和目的地(如果他之前已经选择过),一个用于源,另一个用于目的地。
表格架构
用户表
-----------------------------
UID | RouteID
-----------------------------
|
|
路线表
-----------------------------
ID | From_city | To_city
-----------------------------
| |
| |
显而易见的方法是:
1)触发一个查询以获取用户选择的源和目标城市。 2)触发另一个查询以获取不同的源城市并选择用户选择的源城市。 3)触发第三个查询以获取不同的目的地城市,并选择用户选择的目的地城市。
我花了三个查询。
我可以进一步优化此过程吗?这里的主要目标是当用户没有在编辑页面上选择时,旧的选定值将通过表单提交。
修改
答案 0 :(得分:0)
您可以通过两个查询进行管理。
JOIN
声明获取用户数据。在视图中构建城市列表时,在foreach
循环:
foreach ($cities as $city){
if($city->id_city == $user_data->from_city){
echo '<option val="'.$city->id_city.'" selected="selected">..</option>'
} else {
echo '<option val="'.$city->id_city.'">..</option>'
}
}
对to_city
执行相同操作。