簡體   English   中英

使用Codeigniter插入/更新

[英]Insert/Update using Codeigniter

我已經在Codeigniter更新上閱讀了類似的問題和答案,但無法解決我的問題。

我有一個用戶表和一個user_role表。 user表包含userid,name,address等信息,user_role表包含userid和role_id,其中role_id是條目的ID,如Entry,Edit,View等。

現在,管理員可以更改用戶的角色並更新用戶信息。 角色顯示為復選框。 要更新用戶的角色,我已在user_role表中刪除了該用戶的所有行並插入了新角色。 我試過這個:

    if(!empty($_POST['role'])) {

            $this->db->where('user_id', $id);
            $this->db->delete('user_role');

    foreach ($_POST['role'] as $val) {

            $arr['user_id'] = $id;
            $arr['role_id'] = $val;                 
            $this->db->insert('user_role', $arr);
            }
    }
    else {
            $this->db->where('user_id', $id);
            $this->db->delete('user_role');
    }

如果取消選中所有復選框,則會刪除所有行。 它工作正常。 但這似乎不是一個正確的方法。 請指導。

 if($_POST['role']){
     foreach ($_POST['role'] as $val) {

        $arr['user_id'] = $id;
        $arr['role_id'] = $val;                 

      // You need to run Update query. do not need to delete the records every time.
        $where = array('user_id'=>$arr['user_id']);
        $this->modelname->updateRecord($tablename,$arr,$where);

         //It will update the records on post

    }
}

第一。 $ id定義在哪里?

第二。 Codeigniter有一個庫,不需要使用$ _POST或$ _GET。

第三。 一個用戶有多個角色是必要的?? 我建議你使用如下選擇:

<select name="role">
     <option value="user">User</option>
     <option value="employee">Employee</option>
     <option value="admin">Admin</option>
</select>

也許你需要在選項的值中使用角色的id ......就像

 <option value="1">User</option>
 <option value="2">Employee</option>
 <option value="3">Admin</option>

第四。 如果你想要更新...為什么不使用codeigneter ORM的更新方法。 通過這種方式,我創建了一個名為general_model.php的文件放在models文件夾上(你使用的是這個文件夾和MVC模式嗎?),我在ORM和控制器之間有一個類似於Facade的東西。 其中一個功能是更新:

public function update($tablename, $data, $where)
{                   
    foreach($where as $key=>$value)
        $this->db->where($key, $value); 
    $this->db->update($tablename, $data);

    if ($this->db->affected_rows() >= 0)    return TRUE;
    else                                    return FALSE;
}

對於您的情況(僅使用用戶的一個角色),從控制器使用的示例可以是:

$this->general_model->update("users_role", array("role_id"=>$this->input->post("")) , array("user_id"=>$id));

我希望它對你有所幫助。

PS:如果你想我可以通過你general_model.php

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM