Membuat Blog Sederhana Dengan PHP – Mengambil Artikel Dari Database

Share Post:

Share on facebook
Share on linkedin
Share on twitter
Share on pinterest
Share on email

Pada tutorial sebelumnya, kita sudah mempersiapkan sebuah database dan beberapa tabel untuk menyimpan artikel dan komentar.

Kali ini saya akan mendemokan bagaimana mengambil data dari sebuah tabel dan menampilkannya ke halaman web.

Sebelum mengambil data dari database, perlu dibuat sebuah koneksi dulu antara PHP dan Database dalam kasus ini menggunakan MySQL. Dibawah ini adalah step-step yang harus dilalui hingga mendapatkan sebuah data dari database:

  1. Buat koneksi PHP dengan database
  2. Pilih salah satu atau lebih database yang akan digunakan. Dalam kasus ini nama databasenya adalah blog.
  3. Menyiapkan query SQL
  4. Mengeksekusi SQL
  5. Mengambil hasil eksekusinya
  6. Menampilkan ke halaman web

Sudah siap mengotori tanganmu dengan coding PHP dan SQL? Lanjut!

Membuat koneksi PHP dengan sebuah database
Ada 2 cara untuk meng-koneksikan antara PHP dan database.

  • MySQLi: “i” artinya improvement
  • PDO: PHP Data Object

Lalu bagusnya menggunakan yang mana? Jawaban singkatnya adalah terserah. Semuanya mempunyai kelebihannya masing-masing.

PDO dapat bekerja dengan berbagai jenis database tidak hanya MySQL saja.
MySQLi dari namanya saja sudah dapat ditebak. Ya, cuman dapat bekerja dengan MySQL.

Semua tergantung project yang akan kamu kembangkan. Jika hanya menggunakan database vendor MySQL, MySQLi cukup, tetapi jika berganti-ganti vendor database PDO lebih mudah, hanya perlu merubah setting koneksi saja.

Menggunakan MySQLi:

  $servername = 'localhost';
  $username = 'root';
  $password = '';
  $dbname = 'blog';

  // 1. Create connection
  // 2. Memilih database
  $conn = new mysqli($servername, $username, $password, $dbname);

  // Check connection
  if ($conn->connect_error) {
      die('Connection failed: ' . $conn->connect_error);
  }

  // 3. Menyiapkan SQL query
  $sql = 'SELECT * FROM `articles`';

  // 4. Mengeksekusi SQL
  $result = $conn->query($sql);

  // 5. Mengambil hasil eksekusinya
  $rows = [];
  $temp = null;
  while($temp = $result->fetch_assoc())
    $rows[] = $temp;

  // 6. Menampilkan ke halaman web
  var_dump($rows);

Untuk PDO silakan belajar sendiri. Pada tutorial ini saya akan menggunakan MySQLi, karena lebih simpel.

Sebenarnya ada banyak library yang dapat memudahkan kita dalam melakukan komunikasi dengan database. Dua library yang pernah saya pakai yaitu:

  1. Medoo.in
  2. MeekroDB

Saya lebih menyarankan Medoo.in daripada MeekroDB, karena support dengan PHP versi terbaru.

Oke, cukup perkenalan dengan database.

  1. Buat sebuah folder baru bernama class. Folder ini akan berisi semua class PHP.
  2. Buat file bernama config.class.php. File ini akan menyimpan semua konfigurasi website yang akan dibuat.
    class Config {
      // Database configuration
      public static $database = array(
        'username' => 'root',
        'password' => '',
        'host' => 'localhost',
        'name' => 'blog' // Database name
      );
    
      // Database connection using MySQLi
      public static $DB;
    }
    
  3. Membuat koneksi dengan database
    Masih dengan config.class.php. Tambahkan baris dibawah ini:

    // Make a connection and store to Config::$DB
    Config::$DB = new mysqli(Config::$database['host'], Config::$database['username'], Config::$database['password'], Config::$database['name']);
    
  4. Membuat Model class. Class ini berguna untuk melakukan berbagai query nantinya. Memudahkan kita dalam mengambil data maupun mengupdate sebuah data. Buat model.class.php pada folder class. Lalu ketikkan script dibawah ini:
    class Model {
      private $db;
    
      public function __construct() {
        // Menggunakan koneksi yang sudah dibuat sebelumnya
        $this->db = Config::$DB;
      }
    
      /* Berguna untuk mengeksekusi `select` SQL query dan mengambil semua baris yang dikembalikan
      @param string $sql SQL script
      @return array kumpulan baris dari sebuah tabel.
      */
      public function select($sql) {
        // Eksekusi sql script
        $result = $this->db->query($sql);
    
        $rows = array();
        $temp = null;
        // Mengambil semua baris
        while($temp = $result->fetch_assoc())
          $rows[] = $temp;
    
        return $rows;
      }
    }
  5. Sekarang class Model sudah siap dipakai. Buka file index.php. Kita akan test sebuah query untuk mengambil semua artikel yang ada. Tambahkan script dibawah ini dibaris paling atas file index.php:
    <?php
    require 'class/model.class.php';
    require 'class/config.class.php';
    
    $model = new Model();
    $rows = $model->select('SELECT * FROM `articles`');
    
    // Debug only
    var_dump($rows); die;
    ?>
    <!DOCTYPE HTML>
    ...

    Jika muncul hasil dibawah ini maka sampai disini sudah benar.

    array(5) {
      [0]=>
      array(3) {
        ["id"]=>
        string(1) "1"
        ["title"]=>
        string(7) "title 1"
        ["description"]=>
        string(13) "description 1"
      }
      [1]=>
      array(3) {
        ["id"]=>
        string(1) "2"
        ["title"]=>
        string(7) "title 2"
        ["description"]=>
        string(13) "description 2"
      }
      [2]=>
      array(3) {
        ["id"]=>
        string(1) "3"
        ["title"]=>
        string(7) "title 3"
        ["description"]=>
        string(13) "description 3"
      }
      [3]=>
      array(3) {
        ["id"]=>
        string(1) "4"
        ["title"]=>
        string(7) "title 4"
        ["description"]=>
        string(13) "description 4"
      }
      [4]=>
      array(3) {
        ["id"]=>
        string(1) "5"
        ["title"]=>
        string(7) "title 5"
        ["description"]=>
        string(13) "description 5"
      }
    }
    
  6. Sekarang menampilkan data $rows ke template yang sudah dipersiapkan sebelumnya. Sebelum itu hapus script bagian ini:
    // Debug only
    var_dump($rows); die;
    

    Cari <section id=”one” menjadi seperti dibawah ini:

    <!-- One -->
    <section id="one" class="wrapper style2 spotlights">
      <?php foraech($rows as $x): ?>
      <section>
        <a href="#" class="image"><img src="images/pic01.jpg" alt="" data-position="center center" /></a>
        <div class="content">
          <div class="inner">
            <h2><?php echo $x['title']; ?></h2>
            <p><?php echo $x['description']; ?></p>
            <ul class="actions">
              <li><a href="#" class="button">Learn more</a></li>
            </ul>
          </div>
        </div>
      </section>
      <?php endforeach; ?>
      <section>
      ...
      </section>
      <section>
      ...
      </section>
    </section>

    Refresh halaman web index.php kamu. Jika semua dilakukan dengan benar, maka pada halaman tab artikel akan muncul 5 konten baru yang sudah ada didatabase ditambah dengan 2 konten artikel sampel.

    Sampai disini kamu dapat menghapus 2 konten artikel yang paling bawah, sehingga hanya dari database saja yang muncul.

Untuk mendapatkan seluruh script bisa langsung ke sini

6 Responses

  1. ivan says:

    gan website ini pakai cms dari worpress?

    1. Surya says:

      Iya, pakai wordpress saja kok.

  2. andriansyah says:

    Artikel yang sangat membantudan yang saya cari

Leave a Reply

Your email address will not be published.

CAPTCHA Image

*