2014-10-07 120 views
0

我想创建的基本上是类似Facebook的东西。如果用户发布了他/她的用户名,则链接将如下所示:www.mysite.com/user/{username},如果不是,则链接将如下所示:www.mysite.com/user/{userid}。使用下面的代码,我得到了我试图从数据库中检索的所有字段的未定义索引。它只与user_id一起使用,但不与用户名一起使用。任何帮助将非常感激。CodeIgniter通过用户名获得用户信息,如果用户名存在,如果没有得到用户ID

链接到简档(查看):

<a href="<?=base_url()?>user/<?=isset($event['username']) ? $event['username'] : $event['creatoruserid']?>"> 
    <img src="<?=base_url()?>public/images/uploads/profiles/<?=$event['profilepic']?>" class="event-profile-pic"> 
</a> 

路由到配置文件:

$route['user/(:any)'] = "user/profile/$1"; 

用户控制器与用户的方法:

<?php 

class User Extends CI_Controller 
{ 

    public function __construct() 
    { 

     parent::__construct(); 
     $this->load->model('event_model'); 
     $this->load->model('user_model'); 
    } 

    public function profile($user_id) 
    { 
     // All the data we need in profile page 

     $data['user'] = $this->user_model->getUserInfo($user_id); 
     $data['events'] = $this->event_model->getEventsById($user_id); 
     $data['total_events_created'] = $this->user_model->TotalEventsCreated($user_id); 
     $data['total_comments'] = $this->user_model->TotalComments($user_id); 
     $data['total_attending_events'] = $this->user_model->TotalAttendingEvents($user_id); 

     $this->load->view('/app/header'); 
     $this->load->view('/app/profile', $data); 
     $this->load->view('/app/footer'); 

    } 
} 

型号从数据库中检索用户信息:

<?php 

class User_model extends CI_Model 
{ 

    public function getUserInfo($user_id) 
    { 

     $this->db->select('*')->from('users')->where(['user_id' => $user_id]); 

     $query = $this->db->get(); 

     return $query->first_row('array'); 
    } 
} 

回答

0

你可以在你的SQL层中处理这个。建议是通过用户名或用户ID来查找用户记录。因此,在SQL(笨活动记录),你可以这句话为:

$this->db->select('*') 
     ->from('users') 
     ->where(['user_id' => $user_id]) 
     ->or_where(['user_name'] => $user_id]) 
     ->limit(1); 

在这种情况下,我们假设$user_id可以是一个字符串(USER_NAME)或一个整数(USER_ID)。我们还假设您没有数字的user_names,偶然可能会匹配user_id。要防止返回多行,可以将limit添加到查询中。

一旦你有一个用户记录,那么你将需要在其他查询中传递找到的用户记录的user_id,而不是传递给该函数的user_id。

+0

or_where做的伎俩,欢呼兄弟! :) – Cooper 2014-10-07 15:52:41

0

请确保您的“用户名”是在DB匹配列名,并可以添加回声语句,如回声“A”;回声'B';确定究竟哪里是未定义的索引错误是?

相关问题