2015-08-08 89 views
1

您好我是codeigniter框架的初学者,我无法理解如何从方法返回的数组中检索信息。如何从数组中检索信息

在我的索引页上我有登录表单,当用户插入用户名和密码并单击提交按钮时,他调用控制器的方法登录,其任务是从表单收集用户名和密码并将数据传递给模型方法“login $ username,$ password)“,然后模型方法返回true或false,取决于我们在数据库中是否有有效的用户,然后控制器的方法或者进一步传递用户或者在开始时返回他。我的问题是,我想知道用户访问级别,我在模型制作这种方法

public function users_level($username){ 

$query = $this->db->get_where('users',array('username' => $username)); 

$users_level = $query->result(); // I tried with these too $users_level[] = $query->result();  

return $users_level; 

}

与我想回到用户的访问级别,并使用该信息,以确定该特定用户有什么看法。

这是从控制器登录方法:

public function login(){ 
    $username = $this->input->post('username'); 
    $password = $this->input->post('password'); 

    $this->load->model('model_user'); 
    $logged_in = $this->model_user->login($username,$password); 
    if ($logged_in == true){  
     $result['level'] = $this->model_user->users_level($username); 
     $this->welcome($result);      
    }else if ($logged_in == false){ 
     $this->index(); 
    } 
} 

这是我的欢迎页面。

<?php 
echo "<br/><br/> WELCOME <br/><br/>"; 

//echo "Users level is : " . $user_level['level'];  //this is problem 

?> 
<?php 
     print_r($user_level); 

?> 

,现在我不知道如何提取从阵列信息。 当我做

print_r($user_level); 

看到的输出是什么,我得到这个的结果是:

欢迎

Array ([level] => Array ([0] => stdClass Object ([id] => 13 [username] => john_username [password] => 123 [name] => john [surname] => johnson [phone] => 123456 [email] => [email protected] [level] => 2 [user_type] => professor [activated] => 1 [is_admin] => 0 [is_professor] => 1 [desk] => [academic_year] => 0 [average_grade] => 0))) 

,如果我尝试做这样的事情:

echo "Users level is : " . $user_level['level']; 

或者:

发生
echo "Users level is : " . $user_level->level; 

错误:

A PHP Error was encountered 
Severity: Notice 
Message: Trying to get property of non-object 
Filename: views/view_welcome_page.php 

我明白,这是不是一个对象,但我不知道如何检索列信息 - 从我的表级? 由于事先

+0

你列'level'是2级深 - '$ user_level ['level'] [0] ['level']' – Sean

+0

我的错误,我很抱歉。这解决了我的问题。非常感谢 – useruser

回答

0
edit your code in function as 
$users_level = $query->result_array(); 

then u will get info like 

$userlevels = Array ("level" => Array ("0" => array ("id" => '13'))); 
echo "Users level is : " . $userlevels['level'][0]['id']; 
+0

你可以得到像其他信息一样的模式。 –

+0

没有,当我复制并粘贴您的生产线,这是发生 一个PHP错误的错误时遇到 严重性:注意 消息:未定义抵消:0 文件名:观点/ view_welcome_page.php – useruser

+0

喜哪里る印刷这个数组,在视图文件或控制器? –

0

如果你想数组(单列),然后编辑模式是这样的:多行

$users_level = $query->row_array(); 
return $users_level; 

$query->result_array(); 
+0

好吧,我尝试,但仍然当我尝试做: 回声“用户级别是:”。 $ user_level->水平; 发生同样的错误:消息:试图获取非对象的属性 – useruser

+0

- >表示对象。用row_array()或result_array()来检索数组。所以你应该使用$ user_level ['level'] – user1587985