【问题标题】:how to get the value of form input box in codeigniter如何在codeigniter中获取表单输入框的值
【发布时间】:2026-02-09 06:10:01
【问题描述】:

FORM INPUT 帮助的值!!

//这只是test_model中$nm和$fid的引用//

  $data['fid']['value'] = 0;
  $data['nm'] = array('name'=>'fname',
                      'id'=>'id');

说我有一个 form_view

<?=form_label('Insert Your Name :')?>
<?=form_input($nm)?>

还有一个获取单行的函数

 function get($id){
    $query = $this->db->getwhere('test',array('id'=>$id));
    return $query->row_array();
}

然后在控制器中.. index($id = 0)

在索引中的某处

 if((int)$id > 0)
        {
            $q = $this->test_model->get($id);
            $data['fid']['value'] = $q['id'];
            $data['nm']['value'] = $q['name'];
        }

mysql 表的名称值类似于 1. victor、2. visible 等

但这里它没有从 form_input 中获取 name 和 id 的值,也没有在 form_view 中与 victor 等相同的输入框中再次显示它,以便更新并将其发布回数据库...

请大家帮忙!! 请放轻松,因为我是 CI 新手!!

【问题讨论】:

    标签: php mysql forms codeigniter input


    【解决方案1】:

    根据您对我的第一个答案的评论,这里有一个控制器、模型和视图的示例,用于更新从数据库中的表中提取的用户条目。

    控制器

    class Users extends Controller
    {
        function Users()
        {
            parent::Controller();
        }
    
        function browse()
        {
        }
    
        function edit($id)
        {
            // Fetch user by id
            $user = $this->user_model->get_user($id);
    
            // Form validation
            $this->load->library('form_validation');
            $this->form_validation->set_rules('name', 'Name', 'required');
    
            if ($this->form_validation->run())
            {
                // Update user
                $user['name'] = $this->input->post('name', true);
                $this->user_model->update_user($user);
    
                // Redirect to some other page
                redirect('users/browse');
            }
            else
            {
                // Load edit view
                $this->load->view('users/edit', array('user' => $user));
            }
        }        
    }
    

    型号

    class User_model extends Model
    {
        function User_model()
        {
            parent::Model();
        }
    
        function get_user($user_id)
        {
            $sql = 'select * from users where user_id=?';
            $query = $this->db->query($sql, array($user_id));
            return $query->row();
        }
    
        function update_user($user)
        {
            $this->db->where(array('user_id' => $user['user_id']));
            $this->db->update('users', $user);
        }
    }
    

    查看

    <?php echo form_open('users/edit/' . $user['user_id']); ?>
    <div>
        <label for="name">Name:</label>
        <input type="text" name="name" value="<?php echo set_value('name', $user['name']); ?>" />
    </div>
    <div>
        <input type="submit" value="Update" />
    </div>
    <?php echo form_close(); ?>
    

    【讨论】:

    • 现在完全与最后一个 sn-p 混淆了,请举一个简单的例子,我是 CI 新手。您没有使用活动记录,而我的 sn-p 仅使用活动记录。 CI有那么难理解吗……
    • 为了检索记录,我决定自己编写 sql 语句,而不是使用 CI 数据库 get_where 方法。它只是出于习惯,因为这是我通常做的。这并不重要。您可以改用 get_where 方法。重点是代码的一般模式: 1. 调用控制器动作并传递用户 ID 进行更新。 2. 从模型中检索用户对象并传递给视图。 3. 视图呈现一个可以编辑名称的表单。 4. 表单回传到同一个控制器方法,调用模型更新用户。
    • 感谢您的帮助,我得到了答案!非常感谢斯蒂芬克
    • @vipul-verma 您应该将该答案标记为正确答案!
    【解决方案2】:

    从您的代码 sn-ps 很难看出问题,请尝试提供更多关于您的应用结构和这些代码示例放置位置的信息。

    假设在最后一个代码清单('somewhere in index')中,您从表单中获取 $id,但您将表单输入框的 ID 定义为 'id' array('name'=>'fname', 'id'=>'id') 而不是整数值,所以也许这就是问题所在。

    $data 数组在第三个代码清单中被传递到哪里?

    【讨论】:

    • 我听不懂?你能给我一个小例子,我从用户的输入框中取值然后提交它,然后它进入 mysql 表(测试),然后我有一个视图,我在数据旁边显示带有编辑锚的数据...当我单击该编辑锚点时,它应该返回到从同一个 mysql 表(测试)获取的输入框中具有相同值的表单以再次编辑和更新并将其发布回表!记得我把 $id 作为关键来捕获每一个数据行!
    【解决方案3】:

    根据您的问题,我认为您想显示一个表单来编辑数据库中的人员记录。

    控制器代码

    // Normally data object is retrieved from the database
    // This is just to simplify the code
    $person = array('id' => 1, 'name' => 'stephenc');
    
    // Pass to the view
    $this->load->view('my_view_name', array('person' => $person));
    

    查看代码

    <?php echo form_label('Your name: ', 'name'); ?>
    <?php echo form_input(array('name' => 'name', 'value' => $person['name'])); ?>
    

    不要忘记回显从 form_label 和 form_input 返回的内容。这可能是你出错的地方。

    【讨论】:

    • 简单告诉我如何从 mysql 表中获取记录到 form_input 框以进行编辑并在更新后将其发送回表例如 |编号 |姓名 |之前:1. Vipul //由用户动态插入。之后: 1. Vikas // 步骤。 a.)第一个用户点击编辑锚。 b.) 用户被重定向到可以编辑条目的页面。 c.) 编辑后用户点击提交并更新条目注意:如果用户想更新第三个条目作为示例,它应该被重定向到表中的第三个条目进行更新。借助一些 form_input 字段。就是这样
    • 我添加了另一个答案,其中包含控制器、模型和视图,以展示如何更新此类用户条目。
    • 你能指出我错在哪里。这是模型。 function main_m(){ $data['nm'] = array('name'=>'fname', 'id'=>'fname'); $data['id']['value'] = 0;返回$数据; } function insert_entry(){ $data = array('name'=>$this->input->post('fname')); $this->db->insert('test',$data); } function get_all(){ $query = $this->db->get('test');返回$查询->结果(); } function get_single($id){ $q = $this->db->getwhere('test',array('id'=>$id));返回 $q->row_array(); }
    最近更新 更多