2013-10-29 127 views
0

我在我的Web应用程序上执行简单的权限系统时遇到问题。我的数据库有一个名为“usuario”的表,其中包含有关系统用户的信息。其中一列被称为“特权”,对于管理员而言值为'0',对于常规用户则为1。管理员有权在系统上添加和编辑用户。我试图采取这种行为查询我的数据库与登录用户的鳕鱼,并获得其许可。如果用户不在管理员组(privilegio = 1)上,则添加/编辑/删除按钮将被取消设置。从数据库获取权限数据

public function usuario() { 
if($this->session->userdata('logged')){ 
    $crud = new grocery_CRUD(); 
    $crud->set_subject("Usuário"); 
    $crud->set_theme('datatables'); 
    $crud->set_table("usuario"); 
    (...) 
    $crud->field_type('privilegio','dropdown',array('0'=>'Administrador','1'=>'Usuario')); 
    (...) 
    $this->db->select('privilegio'); 
    $this->db->get('usuario'); 
    $result = $this->db->where('cod_func',$this->session->userdata('cod_func')); 
    if(!$result){ 
    $crud->unset_add(); 
    $crud->unset_edit(); 
    $crud->unset_delete(); 
    } 
(...) 

的问题(问题)是此代码只列出登录,不是已经在系统中注册,并保存在“usuario”表中的其他用户。我想知道这个列表是由我的查询完成的(我不喜欢这样的行为),我希望你能解开我的怀疑。对不起,我的英语不好。

谢谢!您有任何关于活动记录功能麻烦

回答

0

...

当您使用功能

$this->db->get('usuario'); 

这相当于查询:

SELECT * FROM usuario 

所以试着改变你的代码如下:

$this->db->select('privilegio'); 
$this->db->from('usuario'); 
$this->db->where('cod_func',$this->session->userdata('cod_func')); 
$this->db->limit(1); //You're only expecting one result 
$result = $this->db->get(); // Save the result to the variable result 

//编辑的评论,像

$result = $result->first_row('array'); //Here I'm fetching only the first row into an array 
$privilegio = $result['privilegio']; //Im saving the result from the query in the variable $privilegio 

这相当于:

SELECT priviliegio FROM usuario WHERE cod_func = 'some_value' LIMIT 1; 

然后,你可以做任何你想用$结果变量,请查阅文档,看看你可以做...

Generating Query Results

+0

感谢您的关注。 我改变了代码就像你说的,但不能使用变量“$ result”就像我想。 我想获得查询的结果,并测试它的0或1,但我得到一个错误,说我不能将“CI_DB转换为int”。 再次感谢人。 – Leonardo

+0

@Leonardo $结果是因为错误表示一个CI_DB对象,您需要获取该结果才能访问它,我编辑了答案以向您展示一种方法,但我强烈建议阅读该链接以获取更好的了解 – user2844810

+0

再次感谢您。像魅力一样工作。我真的需要再次阅读指南。谢谢! – Leonardo