form_dropdown() в форме Codeigniter возвращает неправильное значение

#php

#php

Вопрос:

Я обновляю некоторые элементы управления из Tank_auth и пытаюсь вставить выпадающий список в register_form. Выпадающий список содержит массив из sql-запроса. Код модели:

 public function get_group(){

  $query = $this->DB1->query('SELECT val7 from table group by val7;');
  if($query->num_rows()>0){
    $group= array();
    foreach($query->result_array() as $r){
       $group[$r['val7']] = $r['val7'];
    }
  }

  return $group;
  

}

И код представления:

 <div class="control-group">
    <?php echo form_label('Grupo', $grupo['id'], array('class' => 'control-label')); ?>
    <div class="controls">
        <?php echo form_error('grupo'); ?>                               
        <?php echo form_dropdown('grupo',$list_groups)?>
        <p class="help-block"></p>
    </div>
  

Массив показывает: Array ( [cliente1] => cliente1 [cliente2] => cliente2 [cliente3] => cliente3 ) затем для отправки формы он записывает в БД, но записывает значение 0.
В контроллере я использую:

 $this->form_validation->set_value('grupo')
  

Каков наилучший способ?

Большое спасибо.

РЕДАКТИРОВАТЬ Дополнительную информацию о коде php: файл просмотра:

     <!--Top of file, more code-->
    $grupo = array(
    'name'  => 'grupo',
    'id'    => 'grupo',
    'value' => set_value('grupo'),
    );
    <!--rest of the form, start the form_dropdown()-->
    <div class="control-group">
    <?php echo form_label('Grupo', $grupo['id'], array('class' => 'control-label')); ?>
    <div class="controls">
        <?php echo form_error('grupo'); ?>                               
        <?php echo form_dropdown('grupo',$list_groups)?>
        <p class="help-block"></p>
    </div>
    <!--rest of the form, end of view-->
  

контроллер:

      <!--top of the controller and resto of the code, start validation-->    
     $this->form_validation->set_rules('grupo', 'Grupo', 'trim|required|xss_clean');
     <!--rest of all validations, pass the values to $data array and create_user    function-->    
     $this->form_validation->set_value('grupo'),
  

Библиотека:

      <!--start function with arguments-->    
     function create_user($username, $email, $password, $email_activation, $grupo){
     $data = array(
    'username'  => $username,
    'password'  => $hashed_password,
    'email'     => $email,
    'servicegroup'  => $grupo,
    'last_ip'   => $this->ci->input->ip_address(),
    );
  

Модель:

 if ($this->db->insert($this->table_name, $data)) {
        $user_id = $this->db->insert_id();
        if ($activated) $this->create_profile($user_id);
        return array('user_id' => $user_id);
    }
  

Результатом является пустая переменная для servicegroup .
Я думаю, что это проблема form_dropdwon, не передающего значения контроллеру.

Спасибо за помощь.

Комментарии:

1. когда форма генерируется в браузере, отображается ли она с правильными значениями или все значения имеют значение 0?

2. Он отображает правильные значения, он показывает выпадающий список с 3 значениями: cliente1, cliente2, cliente 3. Я пытаюсь записать массив вручную, но он все равно вставляет 0 в поле DB. Спасибо!

3. если все это отображается правильно, 0 можно ввести с помощью разных вещей. 2 общие проблемы, если ваше приведение (bool) или (int) к значению или значение неправильно передается в метод db. можете ли вы показать контроллер и код модели, потому что именно там будет эта проблема, и поможет кому-то еще отладить ее для вас?

4. Отредактировал сообщение с дополнительной информацией о коде. Спасибо mic 🙂

Ответ №1:

Решено!! просто простая проблема с порядком аргументов.