【问题标题】:Codeigniter dropdown throws error and no data is displayingCodeigniter 下拉菜单抛出错误并且没有数据显示
【发布时间】:2013-12-03 08:24:25
【问题描述】:

在下面的 codeigniter 代码中,我放置了控制器、模型、视图。我在其中实现了大学名称下拉列表,但它会引发错误

未定义变量:select_options,提供的参数无效 foreach()

并且下拉列表中没有数据。 请帮我解决问题。

控制器

function add_content() {
    $data = array();
    $this->is_logged_in();
    $this->load->model('membership_model');
    $data['select_options'] = $this->membership_model-> validate();
    $this->load->view('login_form', $data);
}

function validate_credentials() {       
    $this->load->model('membership_model');
    $query = $this->membership_model->validate();

    if($query) { // if the user's credentials validated...
        $data = array(
            'username' => $this->input->post('username'),
            'is_logged_in' => true
        );

        if($query->num_rows()>0) {
            $status = $query->row()->account_status;
        } else {
            $status = ''; 
        }

        //Account active
        if($status == 'active') {
            $this->session->set_userdata($data);
            redirect('site1/members_area');
        } else if ($status == 'inactive') { //Account In active
            $this->inactive();
        } else { // incorrect username or password
            $this->invalid();
        }
    }   
}   

型号

function validate() {
    $this->db->where('username', $this->input->post('username'));
    $this->db->where('password', md5($this->input->post('password')));
    $this->db->select('college_name'); 
    $this->db->from('membership');
    $this->db->where('college_name');
    $query = $this->db->get('membership');

    foreach($query->result_array() as $row) {
        $data[$row['college_name']];
    }

    return $query;
}

查看

<?php 
    echo form_open('login/validate_credentials');
    echo form_input('username', 'Username');
    echo form_password('password', 'Password');
    echo form_dropdown('college_name', $select_options);

    echo form_submit('submit', 'Login');
    echo anchor('login/signup', 'Create Account');
    echo form_close();
?>

【问题讨论】:

  • 你确定你调用的是 add_content 函数而不是另一个函数!
  • validate() 正在返回 $query。它应该返回 $data。
  • 我已将这个功能添加到控制器中

标签: php codeigniter


【解决方案1】:

试试这样的

function validate()
{
    $this->db->where('username', $this->input->post('username'));
    $this->db->where('password', md5($this->input->post('password')));
    $this->db->select('college_name'); 
    $this->db->from('membership');
    $this->db->where('college_name');
    $query = $this->db->get('membership');
    $data = [];
    foreach($query->result_array() as $row){
      $data[$row['college_name']] = $row['college_name'];
    }
    return $data;
}

数组应该是这样的

$options = array(
              'small'  => 'Small Shirt',
              'med'    => 'Medium Shirt',
              'large'   => 'Large Shirt',
              'xlarge' => 'Extra Large Shirt',
            );

echo form_dropdown('shirts', $options, 'large');

// Would produce:

<select name="shirts">
<option value="small">Small Shirt</option>
<option value="med">Medium Shirt</option>
<option value="large" selected="selected">Large Shirt</option>
<option value="xlarge">Extra Large Shirt</option>
</select>

【讨论】:

  • 如何在视图部分进行更改
  • @user2991258 无需更改视图部分,只需更改您的验证功能
  • 我在问如何从上面的帖子中实现这个视图部分。
  • 下面只是你应该如何实现的例子
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多