Я хочу запросить список элементов, который является раскрывающимся в соответствии с предыдущим раскрывающимся списком - PullRequest
0 голосов
/ 31 марта 2011

Как запросить раскрывающийся список в соответствии с другим результатом запросов

, поэтому у меня есть функция getMakes(), которая возвращает список марок автомобилей, которые я поместил в выпадающий список,

Я создал новый запрос в функции getModels(), который получает все возможные модели для каждой марки транспортного средства. Я хочу сделать утверждение where, которое будет захватывать только марки для выбранной марки автомобиля

Я думал о том, чтобы иметь функцию getModels($make), где $ make - это значение, которое мы хотим получить в предложении where, но как мне сделать значение в предложении where динамическим?

Ответы [ 2 ]

0 голосов
/ 01 апреля 2011

Вам нужно будет использовать ajax или javascript, если вы хотите, чтобы второй раскрывающийся список заполнялся на основе выбора из первого раскрывающегося списка.Вы не можете заставить PHP делать работу в этом случае;PHP запустится один раз, когда страница загрузится и все.

У вас может быть основной контроллер:

function index(){
    $l1=$this->db->query('SELECT make FROM cars');
    $l1arr = Array();
    foreach($l1 as $key=>$value){
        $l1arr[$key]=$value;
    }
    $data['list1']=$l1arr;
    $this->load->view('welcome_message',$data);
}

, затем другой контроллер, который возвращает модели: [при условии, что вы передаете make в URL]

function car_models(){
    $make = $this->uri->segment(2);//the make passed in URL e.g. site.com/getcars/honda
    $models=$this->db->query('SELECT models FROM cars WHERE make="',$make,'"');
    $marr = array();
    foreach($marr as $key=>$value){
        $marr[$key]=>$value;
    }
    return form_dropdown('models_dropdown',$marr);
}

затемсделать так, чтобы функция ajax вызывала страницу моделей на основе начального выбора;вы можете сделать это с помощью jQuery следующим образом:

function getModels(make){
    jQuery.ajax({
      type: 'GET',
      url: '/getcars/'+make,
      success: function(data){
          //populate dropdown with models
          jQuery('#models_dropdown').html(data);
      }
    });
    return false;
}         

не уверен, что все детали были правильными, но это должно по крайней мере указать вам правильное направление.

0 голосов
/ 31 марта 2011

Не могли бы вы заставить строку $sql использовать некоторую конкатенацию строк для создания SQL-запроса?Должна быть некоторая проверка, чтобы предотвратить атаку SQL-инъекцией, поскольку это может быть немного рискованно с точки зрения безопасности.

Конкатенация строк PHP будет учебным пособием, если вы хотите получить дополнительную помощь счто.

...