2010-11-25 45 views
0

我遇到了城市下拉菜單的問題。情況是這樣的, 我有3張桌子。即國家,州,城市,我能夠爲國家,州生成一個下拉菜單 ..我也能夠爲城市生成下拉菜單,但問題是,當我將代碼推送到生產服務器時,頁面變白是由於過多的內存消耗,這是我的代碼如何渲染216,912行城市數據而不掛在Yii中?

//model 
    public function fetchCityName() 
    { 
     $connection = Yii::app()->db->createCommand("SELECT CityName from gg_t_worldareascities ORDER BY CityName ASC")->queryColumn(); 
     return $connection; 

    } 

//view 
     <?php 
      $this->widget('CAutoComplete', array(
       'model' => $model, 
       'attribute' => 'cityID', 
       'data' => $model->fetchCityName(), 
       'multiple' => false, 
       'htmlOptions' => array('size' => 25), 
      )); 
     ?> 
+3

嵌入在HTML中的200000多個城市的列表應該嵌入到頁面中的數兆字節的數據中。聽起來像是一個可怕的想法開始。 – deceze 2010-11-25 05:59:50

回答

4

如果你有216912個option元素,它爲我們敲響了警鐘,有一個更好的辦法:)

我可以建議

  • 自動完成使用AJAX查詢您的服務器。
  • 先選擇郵編,然後顯示匹配的郊區。
+0

我試過CAutoComplete,但他們想要一個國家,州,市的下拉菜單..你有這個片段嗎?我的意思是依賴下拉框? – sasori 2010-11-26 07:41:07

2

我不做Yii,但是國家,國家,城市之間應該有某種關係吧?沒有人會選擇臺北的城市,然後選擇美國的CA作爲國家和州。

對於國家和城市,我建議僅在用戶選擇國家/州後通過Javascript/AJAX獲取可接受的選項。