我在数据库中有一个城市列表。我想在编辑页面上的两个下拉列表中显示用户、选定的源和目的地(如果他之前已经选择),一个用于源,另一个用于目的地。
表模式
用户表
-----------------------------
UID | RouteID
-----------------------------
|
|
路线表
-----------------------------
ID | From_city | To_city
-----------------------------
| |
| |
显而易见的方法是:
1) 激发一个查询以获取用户所选的来源和目的地城市。2) 激发另一个查询以获取不同的源城市,并选择用户所选的源城市。3) 启动第三个查询以获取不同的目的地城市,并选择用户所选的目的地。
我花了三个问题。
我可以进一步优化这个过程吗。这里的主要目标是,当用户在编辑页面上没有选择任何一个时,旧的选择值将通过表单提交
编辑
- 源和目标列表可以不同
- 在"编辑页面"上,用户从他想去的地方进行选择。在这种情况下,他已经选择了,但他仍然来到页面,我通过在下拉列表中选择它们作为默认值来显示之前选择的选项。这是因为如果他来到编辑页面,什么都不做并提交表格,我仍然会更新之前的选择
您可以通过两个查询来管理它。
- 获取城市
- 使用
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
执行相同操作。