Generic placeholder image

Cara menampilkan row sebelum dan sesudah mysql

Ditanyakan pada tanggal 21 February 2019 oleh Dzaki Fadhlurrohman

Gini mas, saya punya artikel, otomatis itu sudah di select sesuai id yg terpilih, nah casenya dibawah artikel itu, mau saya kasih prev dan next artikel, dengan acuan / parameter slug (contohnya: kenapa-belajar-php), jadi bukan id.

Nah saya udah searching2 cari google cuma masih kurang paham logicnya, barang kali ada yg bisa memberi pencerahan.

Real case saya gini mas, saya ambil uri segement ke tiga, kemudian saya cocokan dengan foreach ke table database bernama artikel, jika cocok maka ambil data pada row sebelum dan setelah row yg terpilih tadi (yg spesific)

https://imgur.com/a/5J53Cbi

Itu untuk sedikit gambarannya

Dan dibawah ini preview artikel yg ingin saya tampilkan

https://imgur.com/a/Wel87JR

Terimakasih

1 JAWABAN

Generic placeholder image
Ahmad Oriza menjawab pada tanggal 21 February 2019

Cara mengambil prev dan next tinggal menerapkan query sederhana berdasarkan ID yang sedang dibuka / aktif. Saya coba contohkan pakai kode saya sendiri, entar pasti kebayang dan bisa diterapkan ke kode punya mas.

Pada Controller Method

<?php

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

class Blog extends CI_Controller {

    // Disini saya pakai id_blog sebagai contoh.
    public function detail($slug = null)
    {
        // Kode sebelum
        ...

        // Cari ID Blog berdasarkan Slug, Bisa pakai cara sendiri, gak harus bikin model kaya gini.
        $id_blog = $this->Post_model->getIDBySlug($slug);

        // Saya pakai Post model buat contoh, tinggal ganti dengan punya mas.
        $prev = $this->Post_model->getPrev($id_blog); // Jadikan id blog yang lagi dibuka sebagai param ..
        $next = $this->Post_model->getNext($id_blog);

        print_r($prev); // Lihat hasil prev
        print_r($next); // Lihat hasil next

        // Dari sini pastinya sudah paham mau diapain kan :) 
        // Tinggal pasing hasil ke view aja.

        ...
        // Kode sesudah
    }
}

Mari kita bongkar isi model getPrev dan getNext

<?php

// Cuma contoh model, ganti dengan punya mas
// Saya disini pakai tabel tb_posts, ganti pakai punya sendiri.

class Post_model extends CI_Model{

    // Method buat ambil ID berdasarkan Slug
    public function getIDBySlug($slug)
    {
        $this->db->select('id_blog');
        $this->db->from('tb_posts');
        $this->db->where('slug', $slug);

        $result = $this->db->get()->row();

        if (!empty($result))
            return $result->id_blog;

        return null;
    }

    // Method buat get prev, sisipkan entar di model punya mas.
    public function getPrev($id)
    {
        $sql = "SELECT * FROM tb_posts WHERE id = (SELECT max(id) FROM tb_posts WHERE id < $id)";
        $result = $this->db->query($sql)->result();

        return $result;
    }

    // Method buat get next
    public function getNext($id)
    {
        $sql = "SELECT * FROM tb_posts WHERE id = (SELECT min(id) FROM tb_posts WHERE id > $id)";
        $result = $this->db->query($sql)->result();

        return $result;
    }
}

Silahkan dicoba ..

Comment ..

Alhamdulillah, makasih ya bang Oriza, solved :)

Dikomentari pada tanggal 22 February 2019 oleh Dzaki Fadhlurrohman