Selasa, 13 Desember 2011

Rosihan Ari`s Blog Sebaik-baik manusia adalah yang bisa memberikan manfaat bagi orang lain… ABOUT ME | NO REKENING | NO RESI PENGIRIMAN BARANG GAMPSMS - Software SMS Gateway Multi Fungsi Script PHP untuk Arsip Artikel Berdasarkan Bulan dan Tahun

Artikel ini merupakan request dari salah satu member rosihanari.net yang bernama Fajar Israwan. Mas Fajar ini menanyakan bagaimana ide cara membuat script PHP untuk menampilkan arsip artikel berdasarkan bulan dan tahun. Sebagai contoh gambarannya, seperti halnya yang muncul di WordPress. Pada blog saya ini juga ada, yaitu pada bagian Archives yang terletak di sidebar sebelah kanan.
Apabila kita menggunakan WordPress atau Blogger, tentu untuk membuat arsip dalam bentuk bulan dan tahun tentunya tidak menjadi masalah karena hanya menggunakan widget, selesai… Namun bagaimana bila kita ingin membuatnya di CMS buatan kita sendiri?
Konsep kerja dari list arsip berdasarkan bulan dan tahun adalah, bila salah satu bulan dan tahun ini diklik, maka akan menampilkan list artikel yang diposting pada bulan dan tahun tersebut. Paham ya maksudnya.. Description: :-)Nah… sekarang kita akan coba mencari ide untuk membuatnya.
OK… di sini kita asumsikan Anda sudah bisa membuat interface atau form untuk input artikelnya. Sekarang kita hanya fokuskan ke arsip artikelnya saja.
Misalkan diberikan tabel untuk menyimpan data artikel adalah sbb:
01.CREATE TABLE article (
02.id int(11) auto_increment,
03.title varchar(100),
04.content text,
05.author varchar(100),
06.category int(11),
07.postdate date,
08.PRIMARY KEY  (id)
09.)
dengan keterangan: id adalah field untuk menyimpan data id artikel (kita gunakan autoincrement), title menyatakan judul artikel, content adalah isi artikel, author adalah penulis artikel, category digunakan menyimpan id kategori artikel, dan postdate menyimpan tanggal berapa artikel diposting.
Sebagai contoh, misalkan dalam tabel article tersebut telah tersimpan data artikel sbb:
1.INSERT INTO `article` VALUES ('1', 'Title A', 'Ini adalah konten dari title A', 'Mr. X', '1', '2009-01-13');
2.INSERT INTO `article` VALUES ('2', 'Title B', 'Ini adalah konten dari title B', 'Mr. Y', '1', '2009-01-15');
3.INSERT INTO `article` VALUES ('3', 'Title C', 'Ini adalah konten dari title C', 'Mr. X', '2', '2009-02-04');
4.INSERT INTO `article` VALUES ('4', 'Title D', 'Ini adalah konten dari title D', 'Mr. Y', '2', '2009-02-10');
Selanjutnya bagaimana ide untuk membuat script arsip berdasarkan bulan dan tahun? Idenya adalah yang pertama kita membuat list bulan dan tahunnya terlebih dahulu. Dari data artikel di atas, terlihat bahwa dari keempat artikel tersebut terdapat 2 buah list bulan dan tahun, yaitu pada bulan Januari 2009 dan Pebruari 2009. Nah… harapan kita, nantinya dalam script akan muncul list sbb:
January 2009
February 2009
Kalau kita klik ‘January 2009′ maka akan muncul list artikel yang diposting pada bulan dan tahun tersebut, dalam hal ini artikel ber ID 1 dan 2. Demikian pula kalau yang diklik adalah ‘February 2009′.
OK… untuk membuat list bulan dan tahun di atas, sebenarnya kita hanya main di SQL Query saja dengan memanfaatkan function date_format(). Data apa yang diolah menggunakan function tersebut? Ya.. data yang diolah adalah pada field POSTDATE. Berikut ini adalah query SQL untuk menampilkan bulan dan tahun.
1.SELECT DISTINCT date_format(postdate, '%M %Y') FROM article
Bila query di atas Anda jalankan di MySQL, maka akan muncul list seperti di atas. Di sini ‘%M %Y’ merupakan format untuk tanggal yang akan ditampilkan, dengan %M menyatakan nama bulan dalam bentuk kata January s.d December dan %Y menyatakan format tahun dalam 4 digit.
Sekarang kita implementasikan query di atas ke dalam script PHP. Berikut ini scriptnya:
arsip.php
01.<?php
02. 
03.mysql_connect("dbhost", "dbuser", "dbpass");
04.mysql_select_db("dbname");
05. 
06.$query = "SELECT DISTINCT date_format(postdate, '%M %Y') as bulantahun FROM article";
07.$hasil = mysql_query($query);
08.echo "<ul>";
09.while ($data = mysql_fetch_array($hasil))
10.{
11.echo "<li>".$data['bulantahun']."</li>";
12.}
13.echo "</ul>";
14. 
15.?>
OK… apabila script arsip.php di atas dijalankan, maka akan muncul list bulan dan tahun namun belum ada linknya. Padahal menurut skenario kita, list bulan dan tahun ini dapat diklik. Apabila diklik maka akan muncul daftar artikel yang diposting pada bulan dan tahun tersebut. Oleh karena itu kita harus membuat linknya pada script arsip.php di atas. Nah… misalkan link tersebut kita arahkan ke viewarsip.php. Sehingga script arsip.php harus diubah menjadi sbb:
arsip.php
01.<?php
02. 
03.mysql_connect("dbhost", "dbuser", "dbpass");
04.mysql_select_db("dbname");
05. 
06.$query = "SELECT DISTINCT date_format(postdate, '%M %Y') as bulantahun FROM article";
07.$hasil = mysql_query($query);
08.echo "<ul>";
09.while ($data = mysql_fetch_array($hasil))
10.{
11.echo "<li><a href='viewarsip.php"'>".$data['bulantahun']."</a></li>";
12.}
13.echo "</ul>";
14. 
15.?>
Apakah script di atas sudah selesai? Belum ternyata. Sekarang yang menjadi pertanyaan adalah, bagaimana mengkaitkan antara list bulan dan tahun dengan linknya. Kaitan ini digunakan untuk menentukan artikel apa yang akan muncul dalam viewarsip.php bila diklik salah satu bulan dan tahun. Sehingga dalam link hendaknya diberikan suatu parameter yang menyatakan bulan dan tahunnya. Sekarang kita coba tambahkan parameter dalam linknya.
arsip.php
01.<?php
02. 
03.mysql_connect("dbhost", "dbuser", "dbpass");
04.mysql_select_db("dbname");
05. 
06.$query = "SELECT DISTINCT date_format(postdate, '%M %Y') as bulantahun FROM article";
07.$hasil = mysql_query($query);
08.echo "<ul>";
09.while ($data = mysql_fetch_array($hasil))
10.{
11.echo "<li><a href='viewarsip.php?blnth=".$data['bulantahun']."'>".$data['bulantahun']."</a></li>";
12.}
13.echo "</ul>";
14. 
15.?>
OK.. bila script arsip.php yang telah diperbaiki di atas dijalankan di browser maka sudah muncul link yang terkait dengan masing-masing list bulan dan tahun. Proses berikutnya kita buat script viewarsip.php. Script ini akan menampilkan daftar artikel yang diposting pada bulan dan tahun yang diklik pada arsip.php.
Bagaimana ide membuat viewarsip.php ini? Ya… kita gunakan saja query SQL untuk menampilkan data artikel yang bulan dan tahun postingnya bersesuaian. Nah… parameter yang diberikan pada link nantinya kita gunakan pada querynya untuk memfilter artikel yang sesuai bulan dan tahunnya.
viewarsip.php
01.<?php
02. 
03.$blnth = $_GET['blnth']; // membaca bulan dan tahun dari parameter link
04. 
05.mysql_connect("dbhost", "dbuser", "dbpass");
06.mysql_select_db("dbname");
07. 
08.// query SQL untuk menampilkan artikel berdasarkan bulan dan tahun
09.// yang diambil dari parameter link
10. 
11.$query = "SELECT * FROM article WHERE date_format(postdate, '%M %Y') = '$blnth'";
12.$hasil = mysql_query($query);
13.while ($data = mysql_fetch_array($hasil))
14.{
15.echo "<h1>".$data['title']."</h1>";
16.echo "<p>Penulis : ".$data['author']."</p>";
17.echo "<p>Diposting pada tanggal : ".$data['postdate']."</p>";
18.echo "<p>".$data['content']."</p>";
19.}
20.?>
Nah… sudah jadi deh.
Pada script viewarsip.php di atas, seluruh isi artikel termasuk kontennya akan ditampilkan semua. Mungkin alangkah lebih baik jika artikel ditampilkan tidak seluruhnya, namun hanya sebagian saja, misalnya title, author, postdatenya dan mungkin sedikit intro dari artikelnya. Trus di bawahnya terdapat link misalkan ‘READ MORE‘, atau ‘BACA SELENGKAPNYA‘. Nah… apabila link tersebut diklik akan muncul full articlenya. Untuk yang ini, silakan Anda coba sendiri ya…. Masa’ semuanya harus saya Description: :-)Sebagai petunjuk saja untuk membuat seperti ini, nantinya Anda gunakan ID artikel sebagai parameter link pada READ MORE nya. Mengapa menggunakan ID artikel? Ya… karena ID artikel ini pembeda yang unik dari setiap artikel. ID artikel tersebut yang nantinya diproses di query nya untuk menampilkan detail artikel yang akan dibaca. Konsepnya hampir sama dengan yang saya berikan di atas.
OK… met mencoba ya…

Artikel Di atas di ambil dari : http://blog.rosihanari.net

Tidak ada komentar:

Posting Komentar