У меня есть таблица в этой таблице, у которой есть 3 поля (категория1, категория2, категория 3). Теперь я хочу заполнить раскрывающийся список, если вы выбрали один вариант, выпадающие значения 2 будут genarat из базы данных. Может кто-нибудь мне помочь.
Мой контроллер
$this->load->model('quiz_mode'); $arrStates = $this->quiz_mode->get_unique_catg1(); foreach ($arrStates as $states) { $arrFinal[$category->category1 ] = $category->category1 ; } $data['category2'] = $arrFinal; function ajax_call() { //Checking so that people cannot go to the page directly. if (isset($_POST) && isset($_POST['category1'])) { $catogory = $_POST['category1']; $arrcategory = $this->sampl_mode->get_cities_from_catgo1($catogory); foreach ($arrcategory as $category) { $arrFinal[$category->category2] = $category->category2; } //Using the form_dropdown helper function to get the new dropdown. print form_dropdown('category2',$arrFinal); } else { redirect('logged_in_user'); //Else redire to the site home page. } }
Моя модель
function get_unique_catg1() { $query = $this->db->query("SELECT DISTINCT category1 FROM sampl_table"); if ($query->num_rows > 0) { return $query->result(); } } function get_cities_from_catgo1($category) { $query = $this->db->query("SELECT category2 FROM sampl_table WHERE category2 = '{$category}'"); if ($query->num_rows > 0) { return $query->result(); } }
Мой взгляд
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>untitled</title> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script> <script type="text/javascript"> $(document).ready(function () { $('#catgo1-dropdown').change(function () { var selCat1 = $('#catgo1-dropdown').val(); console.log(selCat1); $.ajax({ url: "<?php echo base_url();?>index.php/sample/ajax_call", //The url where the server req would we made. async: false, type: "POST", //The type which you want to use: GET/POST data: "category1="+selCat1, //The variables which are going. dataType: "html", //Return data type (what we expect). //This is the function which will be called if ajax call is successful. success: function(data) { //data is the html of the page where the request is made. $('#cotegory').html(data); } }) }); }); </script> </head> <body> <div id="wrapper"> <div id="catgo1-dropdown"><?php print form_dropdown('category1'); ?></div> <div id="cotegory2"></div> </div> </body> </html>
Для этого есть очень простое решение
сначала показывать только раскрывающееся меню
тогда, когда пользователь выбирает какое-либо значение, отправьте его с помощью ajax в метод contrller, значение будет получено и передано модели.
в модели должен быть запрос с условием получения результатов
Затем обратно в контроллер вызывают представление и передают ему результат запроса
Ваше мнение должно содержать этот код
<?php foreach($queryresult as $row) { ?> <option value = "<?php echo $row->id?>"><?php echo $row->value;?</option> <?php } ?>
В вашем первом представлении, где есть раскрывающийся список, он должен содержать следующий код
<select name = "first_drop_down" id = "first_drop_down" onchange = "calljavascriptfunction();"> <?php foreach($first_drop_down_values as $row){?> <option value = "<?php echo $row->id?>"><?php echo $row->value;?</option> <?php}?>
А ТАКЖЕ
<select name = "second_drop_down" id = "second_drop_down" > <option value = "0">please select first dropdown</option> </select>
И функция ajax
function calljavascriptfunction(){ $.ajax({ type : 'POST', data : 'first_drop_down_id='+ $('#first_drop_down').val(), url : 'controller/method', success : function(data){ $('#second_drop_down').val(data); } }); }
Сделано, и вот урок тоже
Я использовал .html(msg);
на контейнере div выпадающего списка
<script type="text/javascript"> $(document).ready(function() { $('[name="wilaya"]').change(function () { var input= this.value; //alert(input); $.ajax({ url: "<?php echo base_url();?>/register/ajax_call", data: "input="+input }) .done(function( msg ) { $(".commune").html(msg); }); }); }); </script>
и контроллер Register.php methode ajax_call()
public function ajax_call(){ if (isset($_REQUEST['input'])) { // echo("hello"); $input = $_REQUEST['input']; $this->load->model('Pro_model'); $commune=$this->Pro_model->get_dropdown_commune($input); //print_r($commune); //$this->load->view('registerpro_view', $commune); echo form_dropdown('commune', $commune, 'Adrar'); } }
и на стороне модели Pro_model.php
function get_dropdown_commune($input) { $this->db->from('ea_commune'); $this->db->where('id_wilaya', $input); $this->db->order_by('id'); $result = $this->db->get(); $return = array(); if($result->num_rows() > 0) { foreach($result->result_array() as $row) { $return[$row['id']] = $row['label_commune']; } } return $return; }