作为一个自认的新手,我正在寻求一些建议和指导:)
我的数据库中有一个名为的表,它只是全世界水坝的列表。该表中的一个字段名为 country ;命名的大坝所在的国家。
我想在我的网站上放一张搜索表格,允许有人在水坝中搜索,对于 country 字段,我想把它表示为下拉列表,按字母顺序列出发生在该字段中的所有国家,并在每个国家的名称后面加上该国家在该字段中出现的次数。例如,巴西有15个大坝,所以我希望巴西的下拉条目是“巴西(15个大坝)”。
情况更加复杂,因为数据库中保存的大坝国家只是国家代码(美国、GB等)。而非实际国名(美国、联合王国等)这就是我想要的。
我创建了一系列国家代码/名称,如下所示:
$countries = array(
"AF" => "Afghanistan",
"AL" => "Albania",
"DZ" => "Algeria",
"AS" => "American Samoa",
...
"ZW" => "Zimbabwe"
);我创建了下面的查询,从表中检索国家字段内容,统计每个国家发生了多少次,并将结果分组:
$result = $this->db->query("select country,count(*) as count from default_dams group by country")->result_array();现在我已经到了我不知道该怎么做的地步了。
我使用了类似于这样的foreach循环进行了实验:
foreach ($query as $row)
{
$dropdown[$row['country']] = $row['count'];
}
return $dropdown;它给了..。
<option value="AL">3</option>
<option value="CN">94</option>
<option value="ZW">1</option>...so --我觉得我正在取得一些进展,但我不知道如何引入$countries数组,以便提供如下输出:
<option value="AL">Albania (3 dams)</option>
<option value="CN">China (94 dams)</option>
<option value="ZW">Zimbabwe (1 dam)</option>我猜我需要一个foreach循环来遍历$result并形成一个结果数组从我的模型传递到视图,但是如何构建这个数组呢?
顺便说一下,显示下拉列表的视图文件中的代码片段是:
$first_field = '><option value="all">Any Country</option';
echo form_dropdown('dam-country', $dropdown, 'all', $first_field);所有的帮助和建议都会受到感激。:)
托尼。
发布于 2012-03-28 19:20:39
呃,我不确定下面的代码是否正确,因为我没有得到您描述的某些部分,但是我会这样重写:
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 (基于一些假设的示例):
// 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>';https://stackoverflow.com/questions/9914011
复制相似问题