微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

选择字段的optgroup-同一表中的组和选项字段我怎样才能做到这一点?

如何解决选择字段的optgroup-同一表中的组和选项字段我怎样才能做到这一点?

| 我有一个搜索表单,用于搜索数据库中的表。该表包括以下列: icao-名称-国家 我有PHP,它将使用以下查询在每行的选择选项中放置这些字段:
 public function airportstuff() {
        $query = \"SELECT icao,name,country
                FROM PHPvms_airports
                ORDER BY icao\";

        return DB::get_results($query);
    }
那么PHP如下:
 <?PHP foreach ($airports as $airport)
 {echo \'<option value=\"\'.$airport->icao.\'\">\'.$airport->icao.\' - \'.$airport->name.\'</option>\';}
                    ?>
这项工作正常,但是我希望能够将“国家/地区”列用作optgroup,因此每个国家/地区都是一个optgroup,该国家/地区的相应机场在正确的optgroup中。 我已经试过了:
<?PHP
foreach ($airports as $airport)
{
echo \'<optgroup label=\"\'.$airport->country.\'\">\';
echo \'<option value=\"\'.$airport->icao.\'\">\'.$airport->icao.\' - \'.$airport->name.\'</option>\';
?>
<?PHP echo \'</optgroup>\';}?>
但这只会为每个机场创建一个optgroup。 在这方面的任何帮助将不胜感激,并在此先感谢。 斯图尔特     

解决方法

        首先,修改查询以按
country
,然后按
icao
进行排序。
public function airportstuff() {
    $query = \"SELECT icao,name,country
            FROM phpvms_airports
            ORDER BY country,icao\";
    return DB::get_results($query);
}
然后试试这个:
$previousCountry = null;
foreach ($airports as $airport) {
    if ($previousCountry != $airport->country) {
        // close the previous optgroup tag only if this isn\'t our first time through the loop
        if ($previousCountry !== null) {
            echo \'</optgroup>\';
        }
        echo \'<optgroup label=\"\'.$airport->country.\'\">\';
    }
    echo \'<option value=\"\'.$airport->icao.\'\">\'.$airport->icao.\' - \'.$airport->name.\'</option>\';
    $previousCountry = $airport->country;
}
// close the final optgroup only if we went through the loop at least once
if ($previousCountry !== null) {
    echo \'</optgroup>\';
}
顺便说一句:为避免代码中存在XSS漏洞,您确实应该将正在构建的HTML的所有动态部分包装在ѭ7或类似功能中。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。