【发布时间】:2019-04-08 07:23:07
【问题描述】:
我有两个表,一个 Workorder 表,其中有一个名为 status_id 的列,它让我知道订单的状态,如果它未触及、进行中或已完成。它只是保存状态的数值。
我有另一个名为 Status 的表,它具有匹配的 status_id 和状态文本。
我有一个下拉式 while 循环,可以拉出状态表并将其显示出来。
我正在尝试让它选择与工作订单表状态关联的下拉选项。
<select name="status" class="form-control input-default" required>
<option selected disabled>Status</option>
<?php
$status_sql = "SELECT * FROM STATUS";
$result_status = $conn->query($status_sql);
while ($status_row = $result_status->fetch_assoc()) {
$status_id = $status_row['status_id'];
$status_name = $status_row['status_text'];
//select status based on value in workorder row
$select_status = (1 == 1)? 'selected="selected"':'';
echo '<option value="' . $status_id . '" '.$select_status.'>'.$status_name . '</option>';
}
?>
</select>
我正在使用这个 php 代码作为一个等于来回显所选的 html 标记
我正在尝试将两个表合二为一
$sql = "SELECT *, w.status_id as wid, s.status_id as sid
FROM WORKORDER w
INNER JOIN STATUS s
ON w.status_id = s.status_id
";
然后把语句变成这个
$select_status = ( $status_row['sid'] == $status_id = $status_row['status_id'])? 'selected="selected"':'';
我无法弄清楚是否有人可以帮助我。谢谢!
【问题讨论】:
-
提示:切勿使用
SELECT * -
1 查询是否返回您期望它返回的内容? 2 在您问题的示例表中,status_id == 2,但在 Status 表中没有 status_id == 2。 3 您的查询应至少返回 order_id 和 status_id。 4 供您选择,获取所有现有状态。循环时,如果循环元素的status_id ==正在处理的order_id的status_id,则添加
selected = "selected"。 5 所以 2 个循环。 1:工单。 2:状态,在循环 1 内。 -
这一行:
$select_status = (1 == 1)? 'selected="selected"':'';1 总是等于 1,所以它总是设置为选中。这个(1 == 1)比较应该类似于($Workorder->status_id == $status_id)
标签: php mysql loops select while-loop