我想要创建的内容基本上与Facebook类似。如果用户发布了他/她的用户名,则链接将如下:www.mysite.com/user/{username},如果没有链接,则可以是:www.mysite.com/user/{userid}。使用下面的代码,我试图从数据库中检索所有字段的未定义索引。它仅适用于user_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');
}
}
从数据库中检索userinfo的模型:
<?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 :(得分:0)
请确保您的用户名&#39;是DB中的匹配列名,可以添加echo语句,例如echo&#39; A&#39 ;;回声&#39; B&#39 ;;确定未定义索引的确切位置错误是什么?
答案 1 :(得分:0)
您可以在SQL层中处理此问题。该提议是通过用户名或用户ID查找用户记录。因此,在SQL(CodeIgniter Active Record)中,您可以将其标记为:
$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。