14 Oktober 2009

Membuat tree dengan javascript

Kali ini kita mencoba membuat tree yang terhubung dengan database mysql. Penulis memilih menggunakan javascript dari sitemap styler css globe, karena tree menu inilah yang paling sederhana dari banyak tree menu yang pernah penulis coba. Terus kenapa penulis tidak menggunakan PHP murni untuk tree menu? jawabnya karena kalo pure PHP tiap kali klik tree menu (collapse dan expand) memerlukan reload halaman. Tidak demikian halnya kalo memanfaatkan javascript library ini.
Baiklah mari kita mulai belajarnya. Sebelumnya kita memerlukan bahan-bahan ini:
Kemudian buat halaman untuk menampilkan tree menunya berupa unordered list biasa dengan HTML. Beri id="sitemap" pada tag
. Buat unordered list lagi di dalam unordered lis yang tadi sebagai sub menunya. Jangan lupa attach javascript dan cssnya. Lihat kode di bawah ini:
  1. "sitemapstyler.css" rel="stylesheet" type="text/css" media="screen" />  
  2. "text/javascript" src="sitemapstyler.js">  
  3.                   
  4. "sitemap">  
  5.   
  6. "#">buah  
  7.       
        
    •         
    • "#">mangga
    •   
    •         
    • "#">jeruk
    •   
    •         
    • "#">pear
    •   
    •         
    • "#">kedondong
    •   
    •         
    • "#">jambu
    •   
    •       
                         
  8.   
  9.   
  10.   
  11.     
Sesederhana itu. Apabila anda ingin membuat sub lagi dari sub menu anda bisa menambahkan lagi unordered list di dalam sub menu yang sudah anda buat. Lihat contoh berikut:

  1. "sitemapstyler.css" rel="stylesheet" type="text/css" media="screen" />  
  2. "text/javascript" src="sitemapstyler.js">  
  3.                   
  4. "sitemap">  
  5.   
  6. "#">buah  
  7.       
        
    •         
    • "#">mangga
    •   
    •         
    • "#">jeruk  
    •             
          
      •                 
      • "#">jeruk purut
      •   
      •                 
      • "#">jeruk bali
      •   
      •                 
      • "#">jeruk markisa
      •   
      •                 
      • "#">jeruk keprok
      •   
      •             
        
    •         
    •   
    •         
    • "#">pear
    •   
    •         
    • "#">kedondong
    •   
    •         
    • "#">jambu
    •   
    •       
                         
  8.   
  9.   
  10.   
  11.     
Sekarang bagaimana caranya menghubungkannya dengan database? Cukup mudah.
Pertama mari kita buat dulu databasenya. Saya akan kasih dump databasenyanya saja. Saya anggap teman-teman di sini sudah pinter bikin database lewat phpmyadmin. kalau belum bisa melihat artikel-artikel saya yang terdahulu.

  1.     
  2. CREATE TABLE `tree` (  
  3.   `id` int(12) NOT NULL auto_increment,  
  4.   `item` text NOT NULL,  
  5.   `kelompok` text NOT NULL,  
  6.   PRIMARY KEY  (`id`)  
  7. ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=13 ;  
  8.   
  9. --   
  10. -- Tutorial dari gecko.web.id  
  11. --   
  12.   
  13. INSERT INTO `tree` VALUES (1, 'sawi''sayur');  
  14. INSERT INTO `tree` VALUES (2, 'buncis''sayur');  
  15. INSERT INTO `tree` VALUES (3, 'mangga''buah');  
  16. INSERT INTO `tree` VALUES (4, 'wortel''sayur');  
  17. INSERT INTO `tree` VALUES (5, 'kucing''hewan');  
  18. INSERT INTO `tree` VALUES (6, 'kacang panjang''sayur');  
  19. INSERT INTO `tree` VALUES (7, 'kadal''hewan');  
  20. INSERT INTO `tree` VALUES (8, 'rambutan''buah');  
  21. INSERT INTO `tree` VALUES (9, 'kubis''sayur');  
  22. INSERT INTO `tree` VALUES (10, 'monyet''hewan');  
  23. INSERT INTO `tree` VALUES (11, 'kucing''hewan');  
  24. INSERT INTO `tree` VALUES (12, 'manggis''buah');  
  25. INSERT INTO `tree` VALUES (12, 'gajah''hewan');  
Untuk mempermudah pemahaman saya akan menampilkan kode awal sebelum jadi. Ini adalah kode untuk menampilkan cabang utama yakni dari kolom kelompok.

  1. "sitemapstyler.css" rel="stylesheet" type="text/css" media="screen" />  
  2. "text/javascript" src="sitemapstyler.js">  
  3.   
  4.   
  5. $db_host = "localhost";  
  6. $db_user = "root";  
  7. $db_pass = "sipit";  
  8. $db_name = "test";  
  9.   
  10.   
  11. /******************************************** 
  12.    copyright 2008 http://www.gecko.web.id 
  13. *********************************************/  
  14.   
  15. $link = mysql_pconnect ($db_host$db_user$db_passor die ("Ga bisa connect");  
  16. mysql_select_db ($db_nameor die ("Ga bisa select database");  
  17.   
  18. $sql = mysql_query("SELECT * FROM tree group by kelompok "or die(mysql_error());  
  19.   
  20. echo '';  
  21.   
  22.     while ($res=mysql_fetch_array($sql)) {  
  23.       $item = $res['item'];  
  24.       $kelompok = $res['kelompok'];  
  25.         
  26.       echo '
  27. '.$kelompok.'
  28. ';  
  29.         
  30.       }   
  31.         
  32. echo '';  
  33.   
  34.   
  35. ?>  
Pada kode di atas menggunakan perintah sql group. Gunanya adalah untuk mengelompokkan apabila terjadi nama yang sama. pada kasus di atas ada 13 item yang masuk pada 3 kelompok. Untuk mengambil nama kelompok inilah digunakan group by kelompok.
Setelah list cabang utama ditampilkan, kini tinggal menampilkan rantingnya yakni dari kolom item. Di sini penulis menggunakan query di dalam query. dengan mengambil value kelompok dari query sebelumnya. Kode lengkapnya bisa dilihat di bawah ini.

  1. "sitemapstyler.css" rel="stylesheet" type="text/css" media="screen" />  
  2. "text/javascript" src="sitemapstyler.js">  
  3.   
  4.   
  5. $db_host = "localhost";  
  6. $db_user = "root";  
  7. $db_pass = "sipit";  
  8. $db_name = "test";  
  9.   
  10.   
  11. /******************************************** 
  12.    copyright 2008 http://www.gecko.web.id 
  13. *********************************************/  
  14.   
  15. $link = mysql_pconnect ($db_host$db_user$db_passor die ("Ga bisa connect");  
  16. mysql_select_db ($db_nameor die ("Ga bisa select database");  
  17.   
  18. $sql = mysql_query("SELECT * FROM tree group by kelompok "or die(mysql_error());  
  19.   
  20. echo '';  
  21.   
  22.     while ($res=mysql_fetch_array($sql)) {  
  23.       $kelompok = $res['kelompok'];  
  24.         
  25.         echo '
  26. '.$kelompok.'';  
  27.           $sql2 = mysql_query("SELECT * FROM tree where kelompok = '$kelompok' "or die(mysql_error());  
  28.           echo '
      ';  
    •             while ($res2 = mysql_fetch_array($sql2)) {  
    •                     $item = $res2['item'];  
    •               echo '
    • '.$item.'
    • ';  
    •             }  
    •           echo '
    '
    ;  
  29.       echo '
  30. ';  
  31.         
  32.       }   
  33.         
  34. echo '';  
  35.   
  36.   
  37. ?>  
Sederhana dan sangat mudah tentunya. Selamat mencoba. Apabila ada saran atau pertanyaan silahkan kasih komentar. Mari kita diskusikan di sini.

Tidak ada komentar:

Posting Komentar

About Me

Foto saya
Dalam hati terucap doa Ingin segera bertemu Begitu ada kesempatan Tak ku lewatkan begitu saja Langkahku semakin cepat Sungguh ku ingin segera bertemu Dengan kekasihku yang adalah kamu Tak ku hiraukan meski malam begitu pekat Sekian lama berpisah Membuatku begitu rindu padamu Setiap malam berharap sendiri Ingin segera bertemu Kalau saja waktu itu sayapku tak patah Pasti ku kan terbang menuju kehangatan pelukanmu