如何使用以前从数据库提交的数据预先选择下拉选项,MySQLI

时间:2016-02-24 16:22:30

标签: php database mysqli

我有两个表:订单公司。请注意,两个表都有company_id行。

订单表
order_id | order_name | company_id | .....

公司表
company_id | company_name | .....

我有一个页面,其中包含一个表单,用于将订单的INSERTS数据插入到我的数据库中的orders表中。部分订单是从公司表中选择一家公司,因此我使用下拉列表。

我还有另一个页面,其中包含更新该数据的表单(编辑页面)。当我点击按钮调出编辑页面时,我想在输入字段中输入先前提交的数据。对于文本字段,我只使用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

1 个答案:

答案 0 :(得分:2)

如果<script type="text/javascript"> function showForm() { document.getElementById('formElement').style.display = 'block'; } </script> 包含订单明细(包括 $getOrder ),则company_id包含公司详细信息(包括 $getCompany < / em>),那么你可以比较两者。

如果相同,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>";
        }
    } 
?>