Jumat, 20 Juli 2012

Membuat link read more pada daftar artikel dengan PHP mysql

Pada artikel membuatposting artikel seperti blogspot dengan php mysql sebelumnya, kita belajar untuk membuat posting ala blogspot dengan menggunakan php dan mysql. Pada artikel tersebut ada satu kelemahan, yaitu ketika kita membuka halaman index, maka akan ditampilkan seluruh isi artikel yang sudah kita posting. Kalau artikel yang kita tulis sedikit sih tidak masalah, tetapi bagaimana kalau banyak dan isinya pun panjang. Ini berpengaruh pada performa server dan juga loading time dari halaman tersebut. Oleh karena solusi yang didapat adalah membuat halaman index tersebut seminimalis mungkin, yaitu dengan hanya menampilkan sedikit kata atau kalimat saja dihalaman index tersebut dan memberikan sebuah link untuk menampilkan seluruh isi artikel yang ingin dilihat oleh user.
Kalau pada blogspot atau CMS yang lain hal ini sangatlah mudah dicapai, kita cukup membuat posting tersebut dan theme blogspot kita lah yang akan menanganinya nanti. Tetapi bagaimana kalau kita ingin membuat seperti itu dengan menggunakan PHP dan mysql?
Prinsipnya adalah memberikan suatu tanda pada bagian mana artikel kita akan dipotong. misalkan hanya pada paragraf pertama, hanya setelah beberapa kata atau kalimat, ataupun kita bisa memberikan sebuah penanda dibagian mana artikel kita nanti dipotong.
Pada tutorial kita sekarang kita akan membuatnya dengan menggunakan fungsi yang tersedia pada PHP itu sendiri, yaitu fungsi
susbtr dan fungsi explode.

Contoh penggunaan fungsi substr :
<?php
        //kalimat yang akan dipotong
        $kalimat       = "Pada hari minggu aku, ikut ayah ke kota";
       
        $output        = substr( $kalimat , 0 , 16 );
        echo $output;
?>
dari kode tersebut didapatkan suatu output Pada hari minggu
Aturan yang digunakan adalah
substr( note_1 , note_2 , note_3 ) dimana :
  1. note_1 adalah kata / kalimat / paragraf yang akan kita potong
  2. note_2 adalah posisi awal dimulainya kata / kalimat / paragraf yang akan kita potong
  3. note_3 adalah posisi akhir dari kata / kalimat / paragraf yang akan kita potong
Contoh penggunaan fungsi explode :
<?php
        //kalimat yang akan dipotong
        $kalimat       = "Pada hari minggu, aku ikut ayah ke kota";
       
        $output        = explode( "," , $kalimat);
        echo $output[0];
?>
Dari kode tersebut, maka didapatkan output Pada hari minggu
Aturan yang digunakan adalah
explode( note_1 , note_2 ) dimana :
  1. note_1 adalah sebagai penanda pada posisi dimana kata / kalimat / paragraf tersebut dipotong nanti
  2. note_2 adalah sebagai kata / kalimat / paragraf tersebut dipotong nanti

Setelah kita ketahui fungsi-fungsi tersebut, bagaimana mengimplementasikannya?
Kalau rekan sudah membaca tutorial saya sebelumnya tentang
membuatposting artikel seperti blogspot dengan php mysql, pada tutorial kali inipun tidak jauh berbeda. kita hanya akan merubah code dari index.php saja yang nanti digunakan untuk menampilkan daftar artikel yang isinya sudah dipotong dan terdapat sebuah link dengan tulisan readmore, dan satu lagi halaman php yang nanti akan menampilkan halaman artikel dengan isinya lengkap atau tanpa dipotong.
berikut ini kodenya :
<html><head></head><body>
<p><a href="form_artikel.php">Buat artikel baru</a></p><br>
<?php
        //buat dulu koneksi kedatabase
        $dbhost                = 'localhost';
        $dbuser                = 'root';
        $dbpassword    = 'password';
        $dbname                = 'nama_database';
        $koneksi               = mysql_connect($dbhost,$dbuser,$dbpassword);
        mysql_select_db($dbname,$koneksi);   
       
        //buat query terlebih dahulu 
        $query = mysql_query("SELECT * FROM artikel");   
       
        //cek apakah kita sudah memposting artikel atau belum       
        if (mysql_num_rows($query) == 0) {

               //tampilkan pesan kalau artikel belum ada
               echo 'maaf, belum ada artikel';      
        } else {                             

               //buat pengulangan untuk menampilkan data artikel dengan menggunakan while dan definisikan kedalam variabel data            
               while ($data = mysql_fetch_array($query)) {

                       //kita akan menampilkan judul artikel                       
                       echo '<p><strong>'.$data['judul_artikel'].'</strong></p>';                                     
       
                       //tampilkan tanggal pembuatan artikel                       
                       //gunakan fungsi strtotime untuk merubah bentuk date kedalam bentuk string                        
                       echo '<p><em>'.date('j, F Y',strtotime($data['tgl_artikel'])).'</em></p>';                                           
                      
                       //gunakan fungsi substr, hapus 3 baris kode dibawah ini jika tidak digunakan
                       //hanya menampilkan 200 huruf / angka dari isi artikel yang sudah kita buat
                       $isi_artikel   = substr($data['isi_artikel'],0,200);
                       echo '<p>'.$isi_artikel.'</p>';

                       //gunakan fungsi explode, hapus 3 baris kode dibawah ini jika tidak digunakan
                       //hanya menampilkan kalimat dari awal sampai dengan tanda "<!--putus--> saja
                       $isi_artikel   = explode("<!--putus-->",$data['isi_artikel']);
                       echo '<p>'.$isi_artikel[0].'</p>';
           
            //menampilkan link untuk menampilkan isi artikel seluruhnya
            echo '<a href="view.php?id='.$data['id_artikel'].'>Read more</a>';
               }      
        }              
        //tutup koneksi database      
        mysql_close(); 
?> 
</body></html> 
pada kode diatas kalau rekan menggunakan fungsi explode, maka setiap membuat artikel rekan diharuskan menuliskan "<!--putus-->" ditiap kalimat / paragraf / kata yang ingin rekan potong nantinya.
Perhatikan juga pada link "Read more", disitu ada penanda kalau link tersebut menuju
view.php?id='.$data['id_artikel'] dimana link tersebut akan membuat variabel yang nanti dikirimkan dan ditangkap oleh halaman view.php yang nantinya digunakan sebagai variabel dalam query mysql didalamnya. Untuk lebih jelasnya, lihat kode berikut ini :
<html><head></head><body>
<p><a href="index.php">kembali ke daftar artikel</a></p>
<?php
        //menangkap variabel id dari halaman index kemudian definisikan sebagai variabel id yang kemudian digunakan pada query mysql
        $id = $_GET['id'];

        //koneksi ke database
        $dbhost                = 'localhost';
        $dbuser                = 'root';
        $dbpassword    = 'password';
        $dbname                = 'nama_database';
        $koneksi               = mysql_connect($dbhost,$dbuser,$dbpassword);
        mysql_select_db($dbname,$koneksi);

        //membuat query mysql
        $query = mysql_query("SELECT * FROM artikel WHERE `id_artikel` = '$id' ");

        //mendefinisikan hasil query kedalam variabel data
        $data = mysql_fetch_array($query);

        //kita akan menampilkan judul artikel                       
        echo '<p><strong>'.$data['judul_artikel'].'</strong></p>';                 

        //tampilkan tanggal pembuatan artikel                       
        //gunakan fungsi strtotime untuk merubah bentuk date kedalam bentuk string           
        echo '<p><em>'.date('j, F Y',strtotime($data['tgl_artikel'])).'</em></p>';

        //menampilkan isi artikel seutuhnya
        echo '<p>'.$data['isi_artikel'].'</p>';

        //tutup koneksi database      
        mysql_close();     
?>
simpan dengan nama view.php dan lihat hasilnya.
Cukup mengerti kan? kalau ada hal yang dirasa kurang mengerti atau kesalahan pada code yang saya jelaskan diatas, silahkan komentar saja dibawah n_n
Untuk tutorial selanjutnya kita akan membuat sebuah penomoran halaman yang nantinya cuma menampilkan beberapa judul dari artikel yang kita buat nanti. Jadi kunjungi terus website saya ini untuk update selanjutnya.
◄ Newer Post Older Post ►