Как отобразить название штата и города из базы данных на странице редактирования? - PullRequest
0 голосов
/ 15 сентября 2018

Я получаю данные из базы данных на странице редактирования.

Я использую CodeIgniter, у меня есть две страницы просмотра, register и edit_register.

У меня нет проблем на странице register, но я делюсь процессом, чтобы понять мою проблему. На этой странице также работает зависимость страны, штата, города. Я имею в виду, что я выбрал «Индия», тогда в раскрывающемся списке будет отображаться название всего штата. Теперь я выбираю «Махараштра», затем я выбираю «Мумбаи». Работает отлично.

Я отправил форму и в базе данных получаю значение типа

 Country_name | state_name | city
 101          |  22        | 2707
--------------------------------------
    101-India
    22-Maharashtra
    2707-Mumbai

Давайте поговорим о edit_register странице.

Теперь я на странице edit_register, я выбираю название страны в раскрывающемся списке. Я получаю правильный вывод "Индия", но не получаю название штата и города.

Итак, моя проблема в том, как отобразить название штата и города из базы данных?

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

enter image description here

Если я выберу другую страну и снова выберу Индию, тогда в раскрывающемся списке я получу название штата.

Контроллер

Отображается моя страница редактирования с названием страны в раскрывающемся списке

public function search_with_number(){
  $c_mobileno=$this->input->post('c_mobileno_search');
  $got_customer_info['search_customer_info']=$this->Customer_model->get_customer_info($c_mobileno);
  $got_customer_info['get_country']=$this->Customer_model->get_country();// all country name
  $this->load->view('customer/search_order',$got_customer_info);
}

Страна раскрывающегося списка Работает.

<select  class="form_control country_change" name="c_s_country" data-target="target_state_dropdown2">
    <option value="" disabled selected>Select Country</option>
    <?php foreach ($get_country as $row) {?>
    <option <?php if($row->id == $post->c_s_country ){ echo 'selected="selected"'; } ?> value="<?php echo $row->id; ?>"><?php echo $row->country_name;?></option>
    <?php }?>
</select>

Состояние раскрывающегося списка Не работает

<select  class="form_control state_get" name="c_s_state" id="target_state_dropdown2" data-target="city_dropdown2">
    <option value='' disabled selected>Select state</option>
    <!--What code I have to user here-->
</select>

Город Не работает

<select  class="form_control city_get" name="c_s_city" id="city_dropdown2">
    <option value="" disabled selected>Select city </option>
    <!--What code I have to user here-->
</select>

Ajax, который я использую на странице регистрации

    /*Get all the state name using country code*/
   $(".country_change").on('change',function(){
      var country_id=$(this).val();
      var select_list = $(this).data('target'); // The dropdown ID
  $.ajax({
      url:baseUrl +"/Customer_control/statename",
      method:"POST",
      data:"country_id="+country_id,
     dataType: "json",
      success:function(data){
        $('#'+select_list).empty();
        var placeholder="<option value='' disabled selected>Select state</option>";
        $('#'+select_list).html(placeholder);
            $.each(data, function(i, data) {
          $('#'+select_list).append("<option value='" + data.id + "'>" + data.state_name + "</option>");
            });
      }
     });
  });
   /*Get all the city name using state code*/
   $(".state_get").on('change',function(){
      var state_id=$(this).val();
      var select_list = $(this).data('target'); // The dropdown ID
  $.ajax({
      url:baseUrl +"/Customer_control/cityname",
      method:"POST",
      data:"state_id="+state_id,
      dataType: "json",
      success:function(data){
        $('#'+select_list).empty();
        var placeholder="<option value='' disabled selected>Select city</option><option value='Other'>Other</option>";
        $('#'+select_list).html(placeholder);
        $.each(data, function(i, data) {
        $('#'+select_list).append("<option value='" + data.id + "'>" + data.cities_name + "</option>");
            });
      }

     });
  });

Состояние модели

   public function get_country()
{
  $get_country = array('is_country_active' => 1);
    $this->db->where($get_country);
     $query = $this->db->get('countries');
      $result = $query->result();
      if($result)
      {
        return $result;
      }
      else 
      {
        return 0;
      } 
}

public function get_state($country_id){
  $get_state = array('is_state_active' => 1,'country_id'=>$country_id);
    $this->db->where($get_state);
     $query = $this->db->get('states');
      $result = $query->result();
      if($result)
      {
        return $result;
      }
      else 
      {
        return 0;
      } 
}
public function get_city($state_id){
  $get_city = array('is_city_active' => 1,'state_id'=>$state_id);
    $this->db->where($get_city);
     $query = $this->db->get('cities');
      $result = $query->result();
      if($result)
      {
        return $result;
      }
      else 
      {
        return 0;
      } 
}

Я не добавил город JS.

Теперь, пожалуйста, проверьте мой Ajax-код. Название моего штата меняется, когда я выбираю название страны. Я должен отобразить состояние и название города по нагрузке из базы данных

1 Ответ

0 голосов
/ 15 сентября 2018

В режиме редактирования вам нужно сделать то же самое, что вы сделали для страны. Прежде всего, вам нужно получить все ваши штаты и города из базы данных.
Также вам нужно хранить state_id и city_id в БД, если вы не сохраняете их при создании.

Теперь вам нужно передать эти данные в окно редактирования и сделать то же самое, что вы сделали для страны, например так: -

<select name = "state">
<option value="">Choose State</option>  
    <?php foreach($state as $row){ ?> 
          <option value="<?php echo $row->state_id; ?>"  <?php if($row->state_id == $selected->state_id){  echo "SELECTED";}  ?>> <?php echo $row->state_id; ?></option>  
    <?php } ?>    
</select>

Сделайте то же самое для города. Также помните, что вам нужно выполнить ajax на странице редактирования, даже если пользователь меняет город.

Это должен быть код на контроллере: -

public function search_with_number(){
  $c_mobileno=$this->input->post('c_mobileno_search');
  $got_customer_info['search_customer_info']=$this->Customer_model- 
   >get_customer_info($c_mobileno); //get here your saved state id of this user and match it in the view level
  $got_customer_info['get_country']=$this->Customer_model->get_country();// all country name;
  $got_customer_info['get_state']=$this->State_model->get_state();// all state name;
  $this->load->view('customer/search_order',$got_customer_info);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...