2012-03-28 53 views
0

作爲一個自認新手我正在尋找一些建議和指導:)從一個數組

我有一個表在我的數據庫稱爲大壩這簡直是整個大壩的列表構建一個下拉列表世界。一個表中的字段被稱爲國家;全國已命名的大壩是英寸

我想提出一個搜索表單上我的網站允許某人通過水壩搜索,併爲國家領域我想將其作爲一個下拉列表,列出所有發生在這一領域,與每個國家在該領域發生該國的次數名稱後面的數字字母順序排列的國家。例如,在巴西15個水壩,所以我想爲巴西下拉條目改爲「巴西(15個壩)」。

事情進一步複雜化,因爲保存在數據庫中壩國家僅僅是國家代碼(美國,英國等),而不是實際的國名(美國,英國等),這是我想用什麼。

我創建國家代碼的數組一樣/名稱,以便:

$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> 

...所以我覺得我取得了一些進展,但我不「知道如何把我的$國陣,以提供輸出,如:

<option value="AL">Albania (3 dams)</option> 
<option value="CN">China (94 dams)</option> 
<option value="ZW">Zimbabwe (1 dam)</option> 

我猜我需要一個foreach循環去ŧ通過$結果並形成一個結果數組從我的模型傳遞到視圖,但如何構建該數組?

順便說一句,從我的視圖文件的代碼片段顯示的下拉是:

$first_field = '><option value="all">Any Country</option'; 
echo form_dropdown('dam-country', $dropdown, 'all', $first_field); 

所有幫助和建議深表歡迎。 :)

託尼。

+0

這個問題幾乎每天都問,張貼 – Philip 2012-03-28 19:33:50

回答

1

呃,我不知道,如果下面的代碼是正確的,因爲我沒有得到你的描述的某些部分,但我已經重寫的foreach像這樣:

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>'; 
+0

這真是棒極了之前瀏覽的類似問題的檔案!我甚至沒有想過什麼時候使用'水壩'或'水壩',所以額外的代碼是非常有用的:) – tcarnell 2012-03-29 16:27:55