Как просмотреть данные на основе пользователя в codeigniter - PullRequest
0 голосов
/ 07 мая 2019

Я хочу просмотреть данные из mysql в codeigniter на основе пользователя, который вошел в систему, но я получил ошибку «Произошла ошибка базы данных».Я думаю, что я написал неправильный код

t.USER = $this->session->userdata('user_id');

Вот код:

function get_rekomen() 
{
  $query = $this->db->query("SELECT
   c.*,
   t.produk_id,
   t.id_transdet,
   t.kategori_id,
   t.total_qty,
   t.USER 
FROM
   transaksi_detail AS t 
   LEFT JOIN
      (
         SELECT
            g.id_produk,
            p.slug_produk,
            p.foto,
            p.foto_type,
            p.harga_diskon,
            p.diskon,
            p.harga_normal,
            p.judul_produk,
            g.kat_id,
            k.judul_kategori 
         FROM
            (
               SELECT
                  MAX(m.id_produk) AS id_produk,
                  m.kat_id 
               FROM
                  produk AS m 
               GROUP BY
                  m.kat_id 
            )
            AS g 
            INNER JOIN
               produk AS p 
               ON p.id_produk = g.id_produk 
            LEFT JOIN
               kategori AS k 
               ON k.id_kategori = g.kat_id 
      )
      AS c 
      ON c.kat_id = t.kategori_id 
WHERE
   t.USER = $ this -> session -> userdata('user_id');
<<// i think here's the problem

ORDER BY
   total_qty DESC limit 1")->result(); 

return $query;
}

и вопрос в том, какой код правильный?

Ответы [ 2 ]

0 голосов
/ 08 мая 2019

Может быть, вы можете использовать это. Вам необходимо определить $ user_id, прежде чем добавлять их в оператор WHERE ...

$user_id = $this->session->userdata('user_id');
$sql = "SELECT c.*, t.produk_id, t.id_transdet, t.kategori_id, t.total_qty, t.USER 
    FROM transaksi_detail AS t 
    LEFT JOIN(SELECT g.id_produk, p.slug_produk, p.foto, p.foto_type, p.harga_diskon, p.diskon, p.harga_normal, p.judul_produk, g.kat_id, k.judul_kategori
        FROM(SELECT MAX(m.id_produk) AS id_produk, m.kat_id
            FROM produk AS m 
            GROUP BY m.kat_id)
        AS g 
        INNER JOIN produk AS p ON p.id_produk = g.id_produk 
        LEFT JOIN kategori AS k ON k.id_kategori = g.kat_id)
    AS c ON c.kat_id = t.kategori_id
    WHERE t.USER = '$user_id'
    ORDER BY total_qty DESC limit 1";

    $query = $this->db->query($sql);
    return $query->result();

Надеюсь, это поможет вам ...

0 голосов
/ 08 мая 2019

Вот одно из решений, но сначала убедитесь, что на вашем контроллере загружено $this->load->library('session');, или вы можете просто добавить autoload.php.

Также вы должны добавить в вашу модель параметр, который будет обрабатывать user_id в сеансе, поэтому, например, вот ваша модель выглядит так:

function get_rekomen($user_id) { ...your query here... }

Тогда при условии использования user_id будет

t.USER = $user_id;

Таким образом, на вашем контроллере вы можете назвать свою модель следующим образом:

$user_id = $this->session->userdata('user_id');

$this->ModelClass->get_rekomen($user_id);

Дополнительно: на этапе входа в систему, если пользователь успешно вошел в систему, вы должны установитьпользовательские данные о сеансе, такие как $this->session->set_userdata('user_data', $session_data);

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...