我有两个表:订单和公司。请注意,两个表都有一个company_id
行。
订货表:
order_id | order_name | company_id | .....
公司表:
company_id | company_name | .....
我有一个带有表单的页面,该表单将订单数据插入到数据库的订单表中。订单的一部分是从公司表中选择一个公司来配合它,所以我为此使用了一个下拉菜单。
我还有另一个页面,其中包含一个更新该数据的表单(编辑页面)。当我单击按钮以显示编辑页面时,我希望在输入字段中包含以前提交的数据。对于文本字段,我只使用value="<?php echo $company['whatever']; ?>"
.但是,使用下拉菜单,我无法弄清楚如何预先选择正确的选项。
这是我的网址结构:
http://website.com/orders.php?page=edit&order_id=1
这是我创建下拉菜单所必需的:
$getOrder = mysqli_query($db, "SELECT * FROM orders WHERE order_id = ".$_GET['order_id']);
$getCompany = mysqli_query($db, "SELECT * FROM companies ORDER BY company_name ASC");
....
<select class="form-control" name="company_id" id="company_id">
<?php
if($getCompany) {
while($company = mysqli_fetch_assoc($getCompany)) { ?>
<option value="<?php echo $company['company_id']; ?>">
<?php echo $company['company_name']; ?>
</option>
<?php }
}
?>
如何获得之前选择的选项selected
?
如果$getOrder
有订单详情(包括company_id
),$getCompany
有公司详情(包括company_id
),那么你可以比较两者。
如果它们相等,则echo
selected
作为option
中的一个属性,如下所示:
<select class="form-control" name="company_id" id="company_id">
<?php
if($getCompany) {
//Get company ID from Order
$orderID = $getOrder["company_id"];
while($company = mysqli_fetch_assoc($getCompany)) { ?>
<option value="<?php echo $company['company_id']; ?>"
<?php
//Compare and echo `selected` if they are equal
if($orderId==$company["company_id"]) echo "selected";
?>>
<?php echo $company['company_name']; ?>
</option>
<?php }
}
?>
但是,可以清理该代码:
<select class="form-control" name="company_id" id="company_id">
<?php
if($getCompany) {
$orderID = $getOrder["company_id"];
while($company = mysqli_fetch_assoc($getCompany)) {
echo "<option value='{$company['company_id']}".($getOrder["company_id"]==$getCompany["company_id"] ? " selected" : null).">{$company['company_name']}</option>";
}
}
?>