动态显示单个配置文件图像

时间:2019-01-16 05:12:18

标签: codeigniter foreign-keys image-uploading user-profile

我尝试了不同的方法,但到目前为止还没有。这里有类似的主题,但它们似乎无法解决我的特殊情况。我想从“图像”表中显示单个用户个人资料图像,并带有指向“用户”表的外键链接。我有一个可行的方案,但它使用“ foreach”语句显示多张图像。图像也保存在根目录下的本地“上载”文件夹中。以下是适用于视图中多个图像的代码:

<?php foreach($images_model as $images):?>
<img src="<?php echo base_url()."uploads/".$images->fileName;?>" alt="" class="img-thumbnail">

“ fileName”是“ images”表中的列。 images_model看起来像这样:

function get_images(){      
    $this->db->from('images');      
    $this->db->order_by('date_uploaded', 'asc');                            
    $query = $this->db->get();      
    return $query->result();    
}

来自控制器的图像上传部分如下:

if($this->upload->do_upload())      {
        $file_data = $this->upload->data();         
        $data['user_id'] =  $this->session->userdata('user_id');
        $data['fileName'] = $file_data['file_name'];
        $data['filePath'] = $file_data['full_path'];
        $data['fileType'] = $file_data['file_type'];
        $data['fileSize'] = $file_data['file_size'];            
        $data['date_uploaded'] = date('Y/m/d H:i:s');
    }   

Here is the necessary portion of the ‘images’ table:

是否有不费吹灰之力地显示“ images”表中的单个图像的方法,该方法会考虑到活动的“ user_id”,它是“ images”表中的外键?换句话说,将用户所需的图像显示为个人资料。

感谢您的帮助。感谢所有输入。

1 个答案:

答案 0 :(得分:0)

在模型函数get_images中,您将从表中获取所有记录,以便显示多个图像。

您在会话中有user_id,使用它来获取一条用户记录。

控制器

public function SingleUserImage(){
     $data['images'] = $this->images_model->get_images();
     return $this->load->view('filename', $data);  
}

像这样更改模型查询

模型

function get_images(){ 
    return $this->db->get_where('images', ['user_id' => $this->session->userdata('user_id')])->row();
}

您只有一条用户记录(只有一行),因此无需使用foreach循环

查看

根据您提供的表格数据,仅使用src标签的img属性中的变量来保存图像完整路径

<img src="<?php echo $images->fileName;?>" alt="" class="img-thumbnail">

更新:-

根据您对循环的要求,使用此

<?php foreach($images_model as $images):
    if($images->user_id == $this->session->userdata('user_id')):?>
       <img src="<?php echo base_url()."uploads/".$images->fileName;?>" alt="" class="img-thumbnail">

<?php endif; endforeach;?>