如何使用先前从数据库MySQLI提交的数据来预选择下拉选项 [英] How can I pre-select a dropdown option using previously submitted data from database, MySQLI

查看:93
本文介绍了如何使用先前从数据库MySQLI提交的数据来预选择下拉选项的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have two tables: orders and companies. Note that both tables has a company_id row.

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

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

我有一个页面,该页面的表单可以将订单的数据插入到数据库中的orders表中.订单的一部分是从公司表中选择一家公司,因此我使用了一个下拉菜单.

I have a page with a form that INSERTS data for an order into the orders table in my database. Part of the order is selecting a company from the companies table to go with it, so I use a dropdown for this.

我还有另一个页面,该页面的表单可以更新该数据(编辑页面).当我单击按钮以打开编辑页面时,我想在输入字段中输入以前提交的数据.对于文本字段,我只使用value="<?php echo $company['whatever']; ?>".但是,通过下拉菜单,我无法弄清楚如何预先选择正确的选项.

I also have another page with a form that UPDATES that data (an edit page). When I click on the button to bring up the edit page, I'd like to have the previously submitted data in the input fields. With text fields, I just use value="<?php echo $company['whatever']; ?>". However, with dropdown menu's I can't figure out how to pre-select the correct option.

这是我的网址结构:

http://website.com/orders.php?page=edit&order_id=1

这是我创建下拉菜单所必须的:

Here is what I have to create my dropdown menu:

$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?

How can I get selected on the option that's been previously selected?

推荐答案

如果$getOrder具有订单详细信息(包括 company_id ),而$getCompany具有公司详细信息(包括 company_id ),那么您可以将两者进行比较.

If $getOrder has the order details (including company_id), and $getCompany has the company details (including company_id), then you can compare the two.

如果它们相等,则将echo移出selected作为option中的属性,就像这样:

If they are equal, echo out selected as an attribute in the option, like so:

<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 }
    } 
?>

该代码可以清除,但是:

That code can be cleaned up, however:

<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>";
        }
    } 
?>

这篇关于如何使用先前从数据库MySQLI提交的数据来预选择下拉选项的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆