Membuat komentar ala FB(ga mirip2 banget)

Forum diskusi mengenai client-side scripting Javascript dan framework-framework yang mendukungnya

Moderator: irzan2010

Membuat komentar ala FB(ga mirip2 banget)

Postby ozby » 19 Jul 2011, 23:33

artikel saya selanjutnya masih berkaitan dengan ajax. namun kali ini saya akan menerapkan penggunaan JSON. apakah itu JSON. Lumayan asing bagi kita. Bahasa ini sudah ada lama.(ga lama2 bgt) Tapi baru2 ini muncul dan melejit ketika jquery memakainya dalam fungsi ajax. Apa itu json?? Secara sederhana json sama penggunaannya seperti XML. NAmun bahasa JSON lebih mudah dan lebih irit ngetiknya =)) hahaha.
jika di xml data berbentuk sperti ini:
Code: Select all
<data>
    <nama>Alfred Crozby</nama>
    <umur>18 tahun</umur>
</data>

Nah, sedangkan jika di JSON data manjadi seperti ini:
Code: Select all
{
     "nama": "Alfred Crozby",
     "umur": "18 tahun"
}

nah, lebih mudah kan? tergantung om skrang suka yg mana. Untuk lebih lengkap tentang JSON kalian bisa lihat di sini http://id.wikipedia.org/wiki/JSON
Sekarang Kita mulai cara post komentar seperti di facebook tanpa menunggu ajax selesai mengirim ke database di server. Hanya tutorial yg saya buat ini pakai tombol submit. karena saya masih belum ngerti cara submit text area dengan tombol Enter
Kode untuk index.php nya seperti ini:
Code: Select all
<?php
// KONEKSI ke DB
$koneksi = mysql_connect('localhost','root','');
mysql_select_db('komentar',$koneksi) or die("Koneksi ke DB pedot");
?>
<html>
<head>
<style>
/* pesan error disembunyikan terlebih dahulu*/
#error   {display:none; color:red;}
ul#list_komentar   {width:500px; list-style:none; margin:0; padding:0; border:1px solid #999;}
ul#list_komentar li   {border-bottom:1px solid #999; background:#eee;}
</style>
<!-- Panggil Library jQuery dan jQuery tools Library terlebih dahulu-->
<script src="http://cdn.jquerytools.org/1.2.5/full/jquery.tools.min.js"></script>
<script type="text/javascript"> 
$(function(){
   //MEMBUAT BUTTON DENGAN CLICK FUNCTION
  $("#submit").click(function(){
    $.ajax({
   //URL PROSES DATA DARI FORM
      url:"proses.php", 
   //DARA DIAMBIL DARI FORM KOMENTAR
      data:$("#form_komentar").serialize(),
   //TYPE PENGIRIMAN YG DIGUNAKAN ADALAH POST 
      type:"POST",
   //TYPE DATA MENGGUNAKAN JSON
      dataType:"json", 
   //JIKA SUKSES DATA LANGSUNG DI TAMBAHKAN TANPA MENUNGGU PROSES AJAX
      success:function(data){ 
    if(data.result){ 
   //DATA LANGSUNG DITAMBAHKAN DI ELEMEN LI DENGAN ID JSON
      $("#list_komentar").prepend('<li id="json">'+'<b>'+data.nama+'</b>'+' : '+data.comment+'</li>'); 
    }else{ 
      $('#error').fadeIn(); 
    } 
      }, 
      error:function(){ 
    $('#error').fadeIn();   
      } 
    });
  }); 
}); 
</script>
<title>Post Komentar agak mirip Facebook</title>
</head>

<body>
<?php
//PANGGIL DATA DARI DB
$q = mysql_query("SELECT * FROM komentar ORDER BY komentar_id");
$total = mysql_num_rows($q);
?>
<span id="error">Maaf, terjadi kesalahan.</span>
Jumlah komentar : <?php echo $total; ?>
<ul id="list_komentar">
   <?php while($print_q = mysql_fetch_array($q)){ //ini untuk menampilkan komentar sebelumnya yg diambil lgsung dari DB ?>
   <li><?php echo "<b>$print_q[komentar_nama]</b>".' '.$print_q['komentar_isi']; ?></li>
    <?php } ?>
    <!-- data yg dipost dengan ajax dan di kembalikan dengan json akan tampil di elemen LI dengan id json -->
    <li id="json"></li>
</ul>

<form id="form_komentar" onsubmit="return false;">
   <input id="name" name="nama" type="text" autocomplete="off" /><br />
   <textarea name="comment" id="comment" cols="22" rows="2" autocomplete="off"></textarea><br />
   <input type="button" id="submit" value="Komentar" />
</form>
</body>
</html>

Nah, itu untuk kode index.php nya
sekarang kita buat untuk halaman prosesnya.
Code: Select all
<?php
// KONEKSI ke DB
$koneksi = mysql_connect('localhost','root','');
mysql_select_db('komentar',$koneksi) or die("Koneksi ke DB pedot");
//DATA yg diambil dari form
$nama_komentar = $_POST['nama'];
$isi_komentar = str_replace(array("\r\n","\n","\r"), array(' ',' ',' '), htmlspecialchars($_POST['comment']));
//MASUKAN KE DB
$hasil = mysql_query("insert into komentar (komentar_nama,komentar_isi)values('$nama_komentar','$isi_komentar')"); 
    if($hasil){ 
   //JIKA BERHASIL DATA AKAN DIKIRIM KEMBALI DALAM BENTUK JSON
      echo '{"result":true,'; //INI MERUPAKAN PESAN YG MENUNJUKAN BAHWA DATA BERHASIL DIMASUKKAN DAN INI DIKIRIM KE success function
      echo '"nama":"'.($nama_komentar).'",'; //NAMA KOMENTAR DI AMBIL DARI FORM 
      echo '"comment":"'.($isi_komentar).'"';  //KOMENTAR JUGA DEMIKIAN
      echo '}'; 
    }else{ 
      echo '{"result":false}';  //JIKA TERJADI ERROR, RESULT DIKIRIM FALSE SEHINGGA AJAX AKAN MEMBUAT PESAN ERROR
    } 
?>

Ohya, sebelumnya kalian buat dulu DB dengan nama seperti diatas. Hehe maap ga ngasi tau dari awal :hammer


\m/ \m/ Jika sudah silakan ditest :D Selamat mencoba dan semoga bermanfaat yah. [-O< [-O<
Jika ada pertanyaan silakan di post atau via YM : alfredcrozby \m/
Nb : Kode diatas belum ditest. Silakan ditest sendiri. Tolong dikoreksi jika ada kesalahan dan mari kita belajar dan berbagi bersama. Thx
Last edited by ozby on 20 Jul 2011, 22:46, edited 1 time in total.
Kalo matahari udah ga muncul baru aku selesai koding X(

Post ozby telah mendapat 2 kopi dari:
pujanggabageur, vberror13
User avatar
ozby
Prajurit Dua
Prajurit Dua
 
Posts: 34
Joined: 07 Apr 2011, 12:05
Location: Di Hatimu
Memberi kopi: 0 cangkir
Mendapat kopi: 6 cangkir

Re: Membuat komentar ala FB(ga mirip banget)

Postby vberror13 » 20 Jul 2011, 00:56

Minta ijin, oom . Saya ubah dikit-dikit.

proses.php
Code: Select all
    if($hasil){ 
     $arr=array("result"=>true,"nama"=>$nama_komentar,"comment"=>$isi_komentar);
     }else{ 
      $arr=array("result"=>false,"message"=>mysql_errno($koneksi) . ": " . mysql_error($koneksi));
    } 
    echo json_encode($arr);

kebetulan php diservernya udah versi 5+ , jadi saya ganti kodingnya dengan json_encode(array). Terus, kalo user memberikan komentar yang ada tanda petik satu, terjadi error. Supaya si user nggak bingung mengenai error tersebut, saya munculin error messagenya:

Code: Select all
.....
//JIKA SUKSES DATA LANGSUNG DI TAMBAHKAN TANPA MENUNGGU PROSES AJAX
      success:function(data){ 
    if(data.result){ 
   //DATA LANGSUNG DITAMBAHKAN DI ELEMEN LI DENGAN ID JSON
      $("#list_komentar").prepend('<li id="json">'+'<b>'+data.nama+'</b>'+' : '+data.comment+'</li>'); 
    }else{
          $('#error').html(data.message);//show the error
      $('#error').fadeIn(); 
    } 
      }, 
      error:function(){ 
    $('#error').fadeIn();   
      }
...........



http://vberror13.kodingen.com/vbbego/jq ... /index.php
:ymbilly: :ymbilly: :ymbilly: =:) :ymbilly:
Just Because You Are Unique, Doesn't Mean You Are Useful
User avatar
vberror13
Global Moderator
Global Moderator
 
Posts: 1846
Joined: 13 Mar 2010, 20:34
Location: Medan Indonesia
Memberi kopi: 296 cangkir
Mendapat kopi: 321 cangkir

Re: Membuat komentar ala FB(ga mirip banget)

Postby pujanggabageur » 20 Jul 2011, 07:57

Kalau ane biasanya nambahin addslashes buat menghindari hal-hal yang tidak diinginkan :D

Code: Select all
$nama_komentar = addslashes($_POST['nama']);
$isi_komentar = addslashes($_POST['comment']);
Wajib hukumnya mematuhi Peraturan Memposting!
Diajar babarengan
User avatar
pujanggabageur
Global Moderator
Global Moderator
 
Posts: 2814
Joined: 13 Mar 2010, 14:15
Location: di depan LCD ViewSonic
Memberi kopi: 159 cangkir
Mendapat kopi: 293 cangkir

Re: Membuat komentar ala FB(ga mirip banget)

Postby vberror13 » 20 Jul 2011, 08:22

pujanggabageur wrote:Kalau ane biasanya nambahin addslashes buat menghindari hal-hal yang tidak diinginkan :D

Kayaknya php.INI di server yang saya pake udah disetting supaya nggak kemasukan roh jahat itu. :D. Makanya saya biarin.
:ymbilly: :ymbilly: :ymbilly: =:) :ymbilly:
Just Because You Are Unique, Doesn't Mean You Are Useful
User avatar
vberror13
Global Moderator
Global Moderator
 
Posts: 1846
Joined: 13 Mar 2010, 20:34
Location: Medan Indonesia
Memberi kopi: 296 cangkir
Mendapat kopi: 321 cangkir

Re: Membuat komentar ala FB(ga mirip banget)

Postby ozby » 20 Jul 2011, 09:44

Minta ijin, oom . Saya ubah dikit-dikit.

proses.php

Code: Select all
if($hasil){
$arr=array("result"=>true,"nama"=>$nama_komentar,"comment"=>$isi_komentar);
}else{
$arr=array("result"=>false,"message"=>mysql_errno($koneksi) . ": " . mysql_error($koneksi));
}
echo json_encode($arr);


kebetulan php diservernya udah versi 5+ , jadi saya ganti kodingnya dengan json_encode(array). Terus, kalo user memberikan komentar yang ada tanda petik satu, terjadi error. Supaya si user nggak bingung mengenai error tersebut, saya munculin error messagenya:

Code: Select all
.....
//JIKA SUKSES DATA LANGSUNG DI TAMBAHKAN TANPA MENUNGGU PROSES AJAX
success:function(data){
if(data.result){
//DATA LANGSUNG DITAMBAHKAN DI ELEMEN LI DENGAN ID JSON
$("#list_komentar").prepend('<li id="json">'+'<b>'+data.nama+'</b>'+' : '+data.comment+'</li>');
}else{
$('#error').html(data.message);//show the error
$('#error').fadeIn();
}
},
error:function(){
$('#error').fadeIn();
}
...........




http://vberror13.kodingen.com/vbbego/jq ... /index.php

thx om. saya sangat terbantu. ternyata lebih baik kalo hasil json di proses.php di pakein array ya? :D bagus bgt om. thx bgt ya
oh ya om, di demo nya ada yg salah. pesanya ga kebaca. kyk ny lupa dipanggil tuh =)) hehehe
Kalau ane biasanya nambahin addslashes buat menghindari hal-hal yang tidak diinginkan :D

Code: Select all
$nama_komentar = addslashes($_POST['nama']);
$isi_komentar = addslashes($_POST['comment']);

hehe, wktu tu saya pake di web ga cuma adslashes tpi pake strip_tags,htmlspecialchars juga : \m/ \m/
hehehe. kalian ada yg tau cara post komentar dengan tombol enter??
kalo saya dapetnya seperti ini, tapi belum nangkep smpe ke otak :-$ :-$
Code: Select all
<script type="text/javascript"><!--
function entertag(evt){
evt=(evt)?evt:event;
charCode=(evt.which)?evt.which:evt.keyCode;
if(charCode==13)document.form.submit();
}
window.onload=attach;
function attach(){
document.forms.message.onkeypress = entertag;
}
//--></script>

ni dapet di inet. coba dikoreksi ya om :(
Kalo matahari udah ga muncul baru aku selesai koding X(
User avatar
ozby
Prajurit Dua
Prajurit Dua
 
Posts: 34
Joined: 07 Apr 2011, 12:05
Location: Di Hatimu
Memberi kopi: 0 cangkir
Mendapat kopi: 6 cangkir

Re: Membuat komentar ala FB(ga mirip2 banget)

Postby pujanggabageur » 23 Jul 2011, 01:59

Akhirnya selesai juga. Nih oom Facebook baru yang keren :D

http://pujanggabageur.kodingen.com/blackbarry
Wajib hukumnya mematuhi Peraturan Memposting!
Diajar babarengan
User avatar
pujanggabageur
Global Moderator
Global Moderator
 
Posts: 2814
Joined: 13 Mar 2010, 14:15
Location: di depan LCD ViewSonic
Memberi kopi: 159 cangkir
Mendapat kopi: 293 cangkir

Re: Membuat komentar ala FB(ga mirip2 banget)

Postby vberror13 » 23 Jul 2011, 03:25

=D> mantaaap.....
:ymbilly: :ymbilly: :ymbilly: =:) :ymbilly:
Just Because You Are Unique, Doesn't Mean You Are Useful
User avatar
vberror13
Global Moderator
Global Moderator
 
Posts: 1846
Joined: 13 Mar 2010, 20:34
Location: Medan Indonesia
Memberi kopi: 296 cangkir
Mendapat kopi: 321 cangkir

Re: Membuat komentar ala FB(ga mirip2 banget)

Postby pujanggabageur » 23 Jul 2011, 08:32

@vberror13, kodingen memang mantap om :D Kira-kira bakal berlaku selamanya gak ya om?
Wajib hukumnya mematuhi Peraturan Memposting!
Diajar babarengan
User avatar
pujanggabageur
Global Moderator
Global Moderator
 
Posts: 2814
Joined: 13 Mar 2010, 14:15
Location: di depan LCD ViewSonic
Memberi kopi: 159 cangkir
Mendapat kopi: 293 cangkir

Re: Membuat komentar ala FB(ga mirip2 banget)

Postby ozby » 23 Jul 2011, 22:02

wah mantap om pujangga ;)) hebat bgt. bagi2 ilmunya dong om, buatin tutorialnya :D
Kalo matahari udah ga muncul baru aku selesai koding X(
User avatar
ozby
Prajurit Dua
Prajurit Dua
 
Posts: 34
Joined: 07 Apr 2011, 12:05
Location: Di Hatimu
Memberi kopi: 0 cangkir
Mendapat kopi: 6 cangkir

Re: Membuat komentar ala FB(ga mirip2 banget)

Postby AgoesTri » 15 Aug 2011, 21:02

Mantap2 keren :D
:-bd :-bd :-bd :-bd
Silahkan berkunjung ke Blog Saya...

Peraturan forum :
1. Utamakan keakraban antar member.
2. Jaga postingan dari hal2 SARA, pornografi, pertengkaran dll yang terkesan arogan dan kasar.
3. Utamakan postingan. Kualitas lebih baik daripada kuantitas.
4. Dilarang ngJunk berlebihan.
5. Dilarang memasang Signature yang bersifat komersil, tanpa seijin Admin.

:)
User avatar
AgoesTri
Administrator
Administrator
 
Posts: 763
Joined: 17 Mar 2010, 10:38
Location: Jogja
Memberi kopi: 8 cangkir
Mendapat kopi: 40 cangkir


Return to Javascript and Framework

Who is online

Users browsing this forum: No registered users and 1 guest