Как отрисовать 216 912 строк городских данных без зависания в Yii? - PullRequest
0 голосов
/ 25 ноября 2010

У меня проблема с выпадающим меню города.ситуация такая, у меня 3 таблицы.а именно страны, штаты, города, я смог создать выпадающее меню для стран, штатов. Мне также удалось создать выпадающее меню для городов, но проблема в том, что когда я отправил код на рабочий сервер, страница перевернуласьбелый из-за слишком большого потребления памяти, вот мой код

//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 ]

4 голосов
/ 25 ноября 2010

Если у вас есть 216 912 option элементов, он должен подать сигнал тревоги, что есть лучший способ:)

Могу ли я предложить

  • Автозаполнение, которое запрашивает ваш сервер сAJAX.
  • Сначала выберите почтовый индекс, затем отобразите соответствующие пригороды.
2 голосов
/ 25 ноября 2010

Я не делаю Yii, но должны быть какие-то отношения между странами, штатами, городами, верно?Никто не выберет город Тайбэй, а затем выберет CA, США в качестве страны и штата.

Для штатов и городов я бы предложил выбрать приемлемый выбор через Javascript / AJAX только после того, как пользователь выбрал страну /государство.

0 голосов
/ 19 декабря 2010

См. Эту вики о создании зависимых выпадающих меню в Yii:

http://www.yiiframework.com/wiki/24/creating-a-dependent-dropdown/

Я думаю, что вам лучше использовать автозаполнение - документы здесь:

http://www.yiiframework.com/doc/api/1.1/CJuiAutoComplete

Широко используется автозаполнение пользовательского интерфейса jQuery.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...