【问题标题】:PHP/HTML Showing selected option in dropdown from sql queryPHP/HTML 在 sql 查询的下拉列表中显示选定的选项
【发布时间】:2017-06-15 03:53:04
【问题描述】:

我不知道如何为我的问题命名,我基本上是在问是否有人知道更好的方法来解决这个问题。我在下面使用这个函数来显示从数据库中提取哪个选项,我想知道除了 elseif 每个 ID 之外是否有更紧凑的方法或更好的方法来做到这一点

function access_option($access)
{
    if ($access == 0)
    {
        echo '<option value="0" selected>Member</option>
        <option value="1">Streamer</option>
        <option value="2">Moderator</option>
        <option value="3">Manager</option>
        <option value="4">Administrator</option>
        <option value="5">Senior Administrator</option>';
    }
    elseif ($access == 1)
    {
        echo '<option value="0">Member</option>
        <option value="1" selected>Streamer</option>
        <option value="2">Moderator</option>
        <option value="3">Manager</option>
        <option value="4">Administrator</option>
        <option value="5">Senior Administrator</option>';
    }
    elseif ($access == 2)
    {
        echo '<option value="0">Member</option>
        <option value="1">Streamer</option>
        <option value="2" selected>Moderator</option>
        <option value="3">Manager</option>
        <option value="4">Administrator</option>
        <option value="5">Senior Administrator</option>';
    }
    elseif ($access == 3)
    {
        echo '<option value="0">Member</option>
        <option value="1">Streamer</option>
        <option value="2">Moderator</option>
        <option value="3" selected>Manager</option>
        <option value="4">Administrator</option>
        <option value="5">Senior Administrator</option>';
    }
    elseif ($access == 4)
    {
        echo '<option value="0">Member</option>
        <option value="1">Streamer</option>
        <option value="2">Moderator</option>
        <option value="3">Manager</option>
        <option value="4" selected>Administrator</option>
        <option value="5">Senior Administrator</option>';
    }
    elseif ($access == 5)
    {
        echo '<option value="0">Member</option>
        <option value="1">Streamer</option>
        <option value="2">Moderator</option>
        <option value="3">Manager</option>
        <option value="4">Administrator</option>
        <option value="5" selected>Senior Administrator</option>';
    }
}

这是最好的方法吗?

【问题讨论】:

    标签: php html mysql


    【解决方案1】:

    您可以使用三元运算符减少重复次数:

    function access_option($access)
    {
        echo '<option value="0"'.($access == 0 ? ' selected' : '').'>Member</option>';
        echo '<option value="1"'.($access == 1 ? ' selected' : '').'>Streamer</option>';
        echo '<option value="2"'.($access == 2 ? ' selected' : '').'>Moderator</option>';
        echo '<option value="3"'.($access == 3 ? ' selected' : '').'>Manager</option>';
        echo '<option value="4"'.($access == 4 ? ' selected' : '').'>Administrator</option>';
        echo '<option value="5"'.($access == 5 ? ' selected' : '').'>Senior Administrator</option>';
    }
    

    【讨论】:

    • 谢谢,这很有帮助,我一直在寻找
    • 很高兴能帮上忙!
    【解决方案2】:

    您可以遍历保存在数组中的值,并动态设置所选值。这种方法可以方便以后通过调整数组来添加/删除选项-

    function access_option($access)
    {
        $options = ["Member", "Streamer", "Moderator", "Manager", "Administrator", "Senior Administrator"];
        foreach($options as $key=>$value)
        {
            echo '<option value="'.$key.'"'.($key==$access ? ' selected' : '').'>'.$value.'</option>';
        }
    }
    

    【讨论】:

    • 我喜欢这个解决方案
    【解决方案3】:

    如另一个答案所述,三元运算符将减小它的大小。您也可以使用 switch 语句。类似于 if 和 elseif 但更容易并且会减少您的代码。

    例子:

    <?php
    function access_option($access)
    {
     switch ($access) {
        case 0: echo "access equals 0";
        case 1: echo "access equals 1";
        case 2: echo "access equals 2";
     }
    }
    ?>
    

    【讨论】:

      猜你喜欢
      • 2017-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-29
      • 1970-01-01
      • 2019-09-13
      相关资源
      最近更新 更多