首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从数组构建下拉列表

从数组构建下拉列表
EN

Stack Overflow用户
提问于 2012-03-28 19:02:23
回答 1查看 438关注 0票数 0

作为一个自认的新手,我正在寻求一些建议和指导:)

我的数据库中有一个名为的表,它只是全世界水坝的列表。该表中的一个字段名为 country ;命名的大坝所在的国家。

我想在我的网站上放一张搜索表格,允许有人在水坝中搜索,对于 country 字段,我想把它表示为下拉列表,按字母顺序列出发生在该字段中的所有国家,并在每个国家的名称后面加上该国家在该字段中出现的次数。例如,巴西有15个大坝,所以我希望巴西的下拉条目是“巴西(15个大坝)”。

情况更加复杂,因为数据库中保存的大坝国家只是国家代码(美国、GB等)。而非实际国名(美国、联合王国等)这就是我想要的。

我创建了一系列国家代码/名称,如下所示:

代码语言:javascript
复制
$countries = array(
  "AF" => "Afghanistan",
  "AL" => "Albania",
  "DZ" => "Algeria",
  "AS" => "American Samoa",
  ...
  "ZW" => "Zimbabwe"
);

我创建了下面的查询,从表中检索国家字段内容,统计每个国家发生了多少次,并将结果分组:

代码语言:javascript
复制
$result = $this->db->query("select country,count(*) as count from default_dams group by country")->result_array();

现在我已经到了我不知道该怎么做的地步了。

我使用了类似于这样的foreach循环进行了实验:

代码语言:javascript
复制
foreach ($query as $row)
{
   $dropdown[$row['country']] = $row['count'];
}
return $dropdown;

它给了..。

代码语言:javascript
复制
<option value="AL">3</option>
<option value="CN">94</option>
<option value="ZW">1</option>

...so --我觉得我正在取得一些进展,但我不知道如何引入$countries数组,以便提供如下输出:

代码语言:javascript
复制
<option value="AL">Albania (3 dams)</option>
<option value="CN">China (94 dams)</option>
<option value="ZW">Zimbabwe (1 dam)</option>

我猜我需要一个foreach循环来遍历$result并形成一个结果数组从我的模型传递到视图,但是如何构建这个数组呢?

顺便说一下,显示下拉列表的视图文件中的代码片段是:

代码语言:javascript
复制
$first_field = '><option value="all">Any Country</option';
echo form_dropdown('dam-country', $dropdown, 'all', $first_field);

所有的帮助和建议都会受到感激。:)

托尼。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-28 19:20:39

呃,我不确定下面的代码是否正确,因为我没有得到您描述的某些部分,但是我会这样重写:

代码语言:javascript
复制
foreach ($query as $row)
{
    $option = $countries[$row['country']] . '(' . $row['count'];
    // check dams number if one then word "dam" is singular, otherwise plural
    if ($row['count'] == 1) {
       $option .= ' dam)';
    } else {
       $option .= ' dams)';
    }

    $dropdown[$row['country']] = $option;
}
return $dropdown;

我本人并不是html代码生成函数的粉丝,我只是在视图中编写所有myseld (基于一些假设的示例):

代码语言:javascript
复制
// rows - data from the DB sent to View
echo '<select name="countries">';
    echo '<option value="all">Any Country</option>';
    foreach ($rows as $row)
    {
        echo '<option value="' . $row['country'] . '">';
            $option = $countries[$row['country']] . '(' . $row['count'];
            // there must be a dedicated function to deal with singular/plural words in CI
            if ($row['count'] == 1) {
                $option .= ' dam)';
            } else {
                 $option .= ' dams)';
            }
            echo $option;
        echo '</option>';

        $dropdown[$row['country']] = $option;
    }
echo '</select>';
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9914011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档