在动态下拉列表中设置选定的值

时间:2018-01-15 12:13:13

标签: php jquery drop-down-menu html-select

我有以下代码,因此用户可以选择他想要的语言:

<label style="float: left; width: 50%;" for="system_language">Select Language:</label>
        <select id="system_language" class="selectbox float-right" onChange="switchLanguageLogin();  ">
        <? echo getLanguageList(); ?>

    </select>

这是语言的功能!

function loadLanguage($lng, $units = '')
{
    global $ms, $la, $gsValues;

    // always load main english language to prevet error if something is not translated in another language
    include ($gsValues['PATH_ROOT'].'lng/english/lng_main.php');

    // load another language
    if ($lng != 'english')
    {
        $lng = $gsValues['PATH_ROOT'].'lng/'.$lng.'/lng_main.php';

        if (file_exists($lng))
        {
            include($lng);
        }
    }

添加了语言功能

function getLanguageList()
{
    global $ms, $gsValues;

    $result = '';
    $languages = array();

    $q = "SELECT * FROM `gs_system` WHERE `key`='LANGUAGES'";
    $r = mysqli_query($ms, $q);
    $row = mysqli_fetch_array($r);

    $languages = explode(",", $row['value']);

    array_unshift($languages , 'english');

    foreach ($languages as $value)
    {
        if ($value != '')
        {
            $result .= '<option  value="'.$value.'">'.ucfirst($value).'</option>';  
        }
    }

    return $result;
}

下拉菜单中的第一个(和默认)选项是英语。问题是如果我选择西班牙语,它会转换为西班牙语,但在下拉菜单中它会保留默认值,即英语。结论是该页面是西班牙语,但下拉列表中的值显示为“英语”。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

您不在全局范围内使用$lng变量,因此它对您的函数不可见。因此,解决方案是将所选语言作为参数提供给getLanguageList函数,并将相等值设置为所选:

function getLanguageList($selected = 'english') {
    //...
    foreach ($languages as $value) {
        if ($value !== '') {
            $result .= '<option  value="'.$value.'" ' . ($selected === $value ? ' selected="selected"' : ''). '>' . ucfirst($value) . '</option>';  
        }
    }
    //...
}

像这样选择保留下拉列表,因此保留HTML。 在您的视图中,您需要提供$lng并致电<? echo getLanguageList($lng); ?>

答案 1 :(得分:0)

检入 init.php 文件应该有评论

  

//从cookies中获取语言

如果没有这样的评论,请在MySQL连接之前写下它并在其后添加以下代码

if (isset($_COOKIE['gs_language']))
{
    $gsValues['LANGUAGE'] = $_COOKIE['gs_language'];
}
else
{
    $expire = time() + 2592000;
    setcookie('gs_language', $gsValues['LANGUAGE'], $expire, '/');
}

// puts selected language into cookies
if (isset($_GET['lng']))
{
    $gsValues['LANGUAGE'] = $_GET['lng'];
    $expire = time() + 2592000;
    setcookie('gs_language', $gsValues['LANGUAGE'], $expire, '/');
}

然后转到 fn_common.php 文件并将getLanguageList函数更改为

function getLanguageList()
{
    global $ms, $gsValues;

    $result = '';
    $languages = array();

    $q = "SELECT * FROM `gs_system` WHERE `key`='LANGUAGES'";
    $r = mysqli_query($ms, $q);
    $row = mysqli_fetch_array($r);

    $languages = explode(",", $row['value']);

    array_unshift($languages , 'english');

    $currentLang = $gsValues['LANGUAGE'];

    foreach ($languages as $value)
    {
        if ($value != '')
        {
            $result .= '<option  value="'.$value.'" ' . ($currentLang === $value ? ' selected="selected"' : ''). '>' . ucfirst($value) . '</option>';
        }
    }

    return $result;
}
相关问题