首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CodeIgniter:假设从表中检索数据的页面上的数组到字符串转换错误,然后编辑和更新

CodeIgniter:假设从表中检索数据的页面上的数组到字符串转换错误,然后编辑和更新
EN

Stack Overflow用户
提问于 2013-07-11 16:57:43
回答 1查看 2K关注 0票数 1

我正在尝试获取记录,让应用程序的用户编辑记录的细节,并更新新的详细信息。但是当I print_r ($row->emp_name)返回: John Smith和($row->emp_type)返回Cachier,这些值是正确的。但是为什么这些数据没有传递到视图中的“emp_name”和“emp_type”输入呢?

第二个问题:我还想知道如何定义下拉列表的值,以便在加载时选择。请注意,下拉的值必须来自数据库,并且应该以上述类似的方式检索。

视图:

代码语言:javascript
运行
复制
<?php
    $js = 'id="emp_name"';
    echo form_input('emp_name', $emp_name, set_value('emp_name'), $js);
?>

控制器:

代码语言:javascript
运行
复制
function index() {
    $this->load->model('edit/default_price_model');

    //$data['query'] = $this->default_price_model->get_employees_table();
    $this_employee['emp_name'] = $this->default_price_model->current_cmployees();
    //$temp_array=array_merge($data, $this_employee);

    $this->load->view('/edit/employees', $this_employee);
}

function form_validation() {

    if($this->input->post('this_employee') == "View") {         
        $this->populate_form();
    }
    else {
        $this->load->library('form_validation');

        $this->form_validation->set_rules('emp_name','Employee Name', 'required|min_length[3]|max_length[60]');
        $this->form_validation->set_rules('emp_type','Employee Name', 'required');
        $this->form_validation->set_rules('emp_description','Optional Description', 'max_length[500]');

        if ($this->form_validation->run() == FALSE ) {
            $this->index();
        }       
        else {
            $this->update_table();
        }
    }
}

function populate_form() {
    $this->load->model('edit/default_price_model');
    $selection = $this->input->post('select_employee');
    $data['emp_name'] = $this->default_price_model->get_employees_table($selection);
    $this->index();
}

模型:

代码语言:javascript
运行
复制
function get_employees_table($selection) {
    $query = $this->db->query(" SELECT emp_name, emp_type, emp_description
                                FROM employees 
                                WHERE emp_name='$selection' 
                                ORDER BY emp_name ASC 
                                LIMIT 1");
    if($query->num_rows()>0) {
        foreach($query->result() as $row) {
            $row->emp_name;
            $row->emp_type;
            $row->emp_description;
        }
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-11 17:19:22

表单输入只有表单值,如果在set_value中设置,而不是数据库值,则应该如下所示

代码语言:javascript
运行
复制
<?php
    $js = 'id="emp_name"';
    echo form_input('emp_name', $emp_name,
set_value('emp_name', isset($emp_name[0]->emp_name) ? $emp_name[0]->emp_name : '') 
, $js);
?>

$emp_name是您从控制器获得的,并具有db值。

代码语言:javascript
运行
复制
$data['emp_name'] = $this->default_price_model->get_employees_table($selection);

有一件事我注意到,您没有返回来自您的模型中的查询的任何结果,而且foreach循环什么也不做。

代码语言:javascript
运行
复制
function get_employees_table($selection) {
    $query = $this->db->query(" SELECT emp_name, emp_type, emp_description
                                FROM employees 
                                WHERE emp_name='$selection' 
                                ORDER BY emp_name ASC 
                                LIMIT 1");
    if($query->num_rows()>0) {
      return $query->result();
    }else{
    return 0;
    }
}

希望它对你有帮助

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17599252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档