2013-01-18 38 views
-3

在我的管理員頁面我有用戶列表..我希望如果我點擊用戶名將它重定向到它的配置文件.. this是我的管理頁面視圖:我的控制器的管理員可以在點擊用戶的用戶名後顯示用戶配置文件

<table class="table table-striped table-bordered table-condensed"> 
<tr> 
<th>username</th> 
<th>firstname</th> 
    <th>lastname</th> 
<th>email</th> 
<th>usertype</th> 
<th>Action</th> 
</tr> 
<?php foreach ($info as $infos): ?> 
<tr> 
<td> 
    <?php 
    $user=$infos['username']; 
    print_r ($user); 
    $this->session->set_userdata($user); 
    ?> 
    </td> 
    <td><?php echo $infos['firstname']?></td> 
    <td><?php echo $infos['lastname']?></td> 
    <td><?php echo $infos['email']?></td> 
<td><a href="<?php echo base_url()?>users/showuser">Show</a> | <a href="<?php echo  base_url()?>users/deleteuser">Delete</a></td> 
</tr> 
<?php endforeach ?> 

部分是這樣的:

public function showuser() 
{ 
    $this->load->helper(array('form','url')); 
    $this->load->library('form_validation'); 
    $this->check_isValidated(); 

    $data['info'] = $this->users_model->user_info(); 
    $this->load->view('users/showuser',$data);   
} 

,並在我的模型:

public function user_info() 
{ 
    $this->load->database(); 
    $this->db->select('username,firstname,lastname,email'); 
    $user = $this->session->userdata('user'); 
    $this->db->where('username',$user); 
    $query = $this->db->get('users'); 
    if($query->num_rows > 0) 
    { 
     $row = $query->row(); 
     $data = array(
      'firstname' =>$row->firstname, 
      'lastname' =>$row->lastname, 
      'username' =>$row->username, 
      'email' =>$row->email, 
     ); 
     return $data; 
    }else{ 
     return false; 
    } 

我的問題是,當我在某個用戶點擊它不會顯示其相應的配置文件,而不是它會告訴你第一個用戶的配置文件列在你的數據庫中。
如何比較ID在我的模型

+0

我沒有看到與您的問題相關的任何代碼。你必須自己編寫代碼。如果你的代碼不工作,你可以將它粘貼在這裏,這樣我們可以提供幫助。但問我如何做一些事情不會讓你回到你的工作中作爲答案。 –

回答

1

你真的需要花費一些時間,因爲你要進一步碰上一噸的問題,從您的代碼的外觀閱讀一些教程如果你繼續這樣下去就行了。首先,你是通過用戶名而不是一個唯一的ID加載用戶,這意味着我猜你的用戶表甚至沒有一個唯一的ID,這反過來意味着它沒有索引,因此最終會遭遇性能問題。

無論如何,拋開問題。第一個問題是觀點。你沒有傳遞任何你想要的用戶參數,所以你只需要每次加載一個沒有任何參數的函數。您的網址應如下所示,讓您每次都能傳遞正確的參數。

然後在模型中你有問題二,你傳遞的登錄用戶的用戶名的數據庫,所以你永遠不會得到任何人的個人資料。請看下圖:

控制器:

//this sets the user to the parameter we added to the url above and passes it to the model function. 
$data['info'] = $this->users_model->user_info($this->uri->segment(3)); 

型號:

public function user_info($user) 
{ 
// you're now getting the user from the controller like you should be. 
$this->load->database(); 
$this->db->select('username,firstname,lastname,email'); 
$this->db->where('username',$user); 

我並沒有包括所有的代碼,只需將相關部分。請記住,雖然這將解決您的直接問題,但它無法解決您所做的其他問題。沒有安全檢查意味着具有該URL的任何人都可以看到其他人的個人資料,似乎沒有ID等等。祝你好運,但真的需要一些時間並儘可能多地閱讀關於數據庫結構和理解CI如何工作的信息。

相關問題