简体   繁体   English

如何基于存储在数据库中的值在选择菜单中预先选择一个选项?

[英]How can I pre-select an option in a select menu based on a value stored in the database?

I have a number of dropdown lists, which update a database, however once updated the first object on the list is displayed, rather than the actual object selected. 我有许多下拉列表,它们会更新数据库,但是一旦更新,就会显示列表上的第一个对象,而不是所选的实际对象。 What is the best way to fix this? 解决此问题的最佳方法是什么?

Code sample: HTML code sample 代码示例:HTML代码示例

<select name="sleeps">
       <option value="0">Sleeps</option>
       <option value='1'>1</option>
       <option value='2'>2</option>
       <option value='3'>3</option>
       <option value='4'>4</option>
</select>

This is generated using: 这是使用以下命令生成的:

 <?php 
                                for ($x = 1; $x <=10; $x++) {
                                    echo "<option value='$x'>$x</option>";
                                }
?>

Desired result 所需结果

 <select name="sleeps">
       <option value="0">Sleeps</option>
       <option value='1'>1</option>
       <option value='2'>2</option>
       <option value='3'>3</option>
       <option value='4' selected>4</option>
</select>
        for ($x = 1; $x <=10; $x++) {
            $sel = ($x == $the_value) ? " selected='selected'" : "";
            echo "<option value='$x'$sel>$x</option>";
        }

For the record, mixing your PHP and HTML like this is very messy and not easily maintained. 记录下来,像这样将PHP和HTML混合使用非常混乱并且不容易维护。

Edit: Since you're likely new to PHP, I should mention this is called the ternary operator which is just a shorthand way of writing an if statement. 编辑:由于您可能不熟悉PHP,因此我应该提到这称为三元运算符 ,这只是编写if语句的一种简便方法。

Figured it out :) 弄清楚了 :)

Note - $echo and $title are there to allow changes in order to allow flexibility. 注意-可以通过$ echo和$ title进行更改,以实现灵活性。

function select_dropdown($sql, $echo, $title) {
include 'connect.php';
$id = $_GET['id'];
$select = $conn->prepare($sql);
$select->bind_param('s', $id);
$select->execute();
$select->store_result();
if ($select->num_rows > 0) {
    $meta = $select->result_metadata();
echo "<select name='$title'>
                        <option value='0'>$title</option>\n";
    while ($field = $meta->fetch_field()) {
        $params[] = &$row[$field->name];
    }
    call_user_func_array(array($select, 'bind_result'), $params);
    while ($select->fetch()) {
                 for ($x = 1; $x <=10; $x++) {
             if ($row[$echo] == $x) {
                 echo "<option value='$row[$echo]' selected>$row[$echo]</option>";
             } else {
             echo "<option value='$x'>$x</option>";
             }
                            }

    }
    $select->close();
    echo "</select>";
}

}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM