【问题标题】:get user data from its session Codeigniter从其会话 Codeigniter 中获取用户数据
【发布时间】:2016-07-03 04:44:56
【问题描述】:

表格

彭古纳

MAHASISWA

我有 2 个表,PenggunaMahasiswa,表 pengguna 是包含可以登录网站的用户数据的表,而表 mahasiswa 包含用户数据,例如姓名、电子邮件、电话等等

然后我希望已登录的用户显示其在表mahasiswa 中已存在的凭据信息。假设我使用 username "123"id_pengguna "3" 登录,这意味着 我的名字是 "Mirza"my nim 是 "123" 等等。

问题是如何设置登录用户的会话并从表mahasiswa 中获取用户信息?我所能做的就是显示来自mahasiswa 的第一个表,而不是从登录会话的用户那里获取数据,下面是controllermodelview

型号

<?php
   defined('BASEPATH') OR exit('No direct script access allowed');

   class MProfile extends CI_Model{
       function __construct(){
           parent::__construct();
           $this->load->database();
       }
       function read($cond, $ordField, $ordType){
          if($cond!=null){
             $this->db->where($cond);
          }
          if($ordField!=null){
             $this->db->order_by($ordField, $ordType);
          }
       $query = $this->db->get('mahasiswa');
       return $query;
       }
   }

控制器

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Profil extends MY_Controller {
    public function __construct(){
        parent::__construct();
        $this->load->helper('url');
        $this->load->library('session');
        $this->load->model('MProfile');

    }

    public function index(){
        $data['menu4'] = true;
        /*$this->sessionOut();*/
        $this->session->userdata('idpengguna');
        $data['query'] = $this->MProfile->read(null, 'nim', 'ASC');

        $this->load->view('layouts/header');
        $this->load->view('profil_page', $data);
        $this->load->view('layouts/footer');
    }

}

查看

<?php 
    if(isset($this->session->userdata['logged_in'])){
        $nim = $this->session->userdata['loggedin']['nim'];
    }
?>
<ul class="category-t">
    <?php foreach ($query->result() as $result){}?> 
    <li><?php echo $result->nim;?></li>
    <li><?php echo $result->nama_mahasiswa;?></li>
    <li><?php echo $result->email;?></li>
    <li><?php echo $result->telepon;?></li>
</ul>

【问题讨论】:

  • 简单地使用表连接。

标签: php mysql codeigniter


【解决方案1】:

很简单,您可以从mahasiswa 表中选择数据创建一个新查询。

将此添加到您的控制器

$data["row"] = $this->Mprofile->getmahasiswa();

在你的模型中

function getmahasiswa(){
   $idpengguna = $this->session->userdata('idpengguna');

   $this->db->where('id_pengguna', $idpengguna);
   $q = $this->db->get('mahasiswa');
   return $q->row();
}

在你看来

<ul class="category-t">
   <li><?php echo $nim;?></li>
   <li><?php echo $nama_mahasiswa;?></li>
   <li><?php echo $email;?></li>
   <li><?php echo $telepon;?></li>
</ul>

将此添加到视图顶部

<?php
   if ($row){
       $nim= $row->nim;
       $nama_mahasiswa = $row->nama_mahasiswa;
       $email = $row->email;
       $telepon= $row->telepon;
   } else {
       $nim =
       $nama_mahasiswa =
       $email = 
       $telepon = "";
   }
?>

【讨论】:

  • 据说试图获取非对象的属性,所以在我看来&lt;?php echo $row-&gt;nim;?&gt; 我这样做了&lt;?php echo $row['nim'];?&gt; 但它根本没有结果,我做错了吗?
  • @MirzaChilman 抱歉,$this-&gt;db-&gt;where('idpengguna', $idpengguna); 处的下划线应该是 $this-&gt;db-&gt;where('id_pengguna', $idpengguna);
  • 我还是有同样的问题
  • 是的,我做到了,但仍然是同样的问题,当我用另一种方式(如使用$row['nim'];)调用它时,根本没有结果,如何将其更改为对象?
  • 我需要&lt;?php foreach(bla bla bla){}&gt;吗?
【解决方案2】:

您可以在模型中运行此查询,并从两个表中获取数据,然后可以使用它。将 id 发送到 id_pengguna 的模型。此 id 将是用于比较的用户 id
Model

function getdata($id){
    $query = "select peng.*, masha.* 
    from pengguna peng join mashasiswa masha 
    on id_pengguna where masha.id_pengguna = $id";
    $query = $this->db->query($query);
    return $query->result_array();
}

控制器

$data['result'] = $this->model_name->getdata($id);

希望这会有所帮助。

【讨论】:

  • 你能提供更完整的答案吗?
  • 首先,您将从实际登录的表中获取id。然后将该ID 传递给模型。
  • id_pengguna 这是您需要获取的 id。然后通过控制器。你明白了。
猜你喜欢
  • 2014-04-04
  • 1970-01-01
  • 2017-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多