Pada artikel kali ini saya akan menunkukan kepada Anda cara membuat sistem pertemanan seperti pada website jejaring sosial. Contohnya yah seperti pada website jagocoding ini. Namun sistem yang akan saya tunjukan adalah dasarnya saja. Anda dapat mengembangkannya lagi sesuai keinginan. Kelebihannya Anda bi...

Membuat Sistem Pertemanan Sederhana

Pada artikel kali ini saya akan menunkukan kepada Anda cara membuat sistem pertemanan seperti pada website jejaring sosial. Contohnya yah seperti pada website jagocoding ini. Namun sistem yang akan saya tunjukan adalah dasarnya saja. Anda dapat mengembangkannya lagi sesuai keinginan. Kelebihannya Anda bisa menambah sistem ini ke dalam jenis website apapun, seperti toko online, portal berita, bahkan website sekolah. Selama website tersebut ada tabel data-data anggota website, tentu sistem ini bis di terapkan.

Konsepnya adalah kita menggunakan variabel array untuk menyimpan data teman-teman si user yang bersangkutan. Data array yang disimpan biasanya berupa nomor unik dari ID teman-temannya. Lalu data array tersebut akan disimpan pada field array teman pada tabel user. Juga peranan utama adalah fungsi explode dan implode dari php untuk mengolah data pada field array_teman. Jadi Anda diharapkan sudah mengerti tentang array, explode, dan implode. Juga dasar-dasar PHP tentunya.

Oleh karena itu kita buat dulu databasenya. Berikut adalah struktur dari databasenya.

database

 

Silahkan ekspor saja file databasenya dari folder proyek yang saya sertakan. Kita buat satu tabel saja di database teman. Yaitu tabel user, kalau nanti Anda ingin  menerapkan sistem pertemanan ini jadi tinggal cari tabel yang sejenis dengan tabel user ini. Intinya yang terpenting adalah field array_temannya. Mau seperti apapun struktur tabel user di sistem Anda nantinya, pokoknya harus ada field array_teman untuk menerapkan sistem pertemenan. Karena field array_teman ini berfungsi untuk menyimpan kunci id unik dari masing-masing user yang menjadi teman kita.

Selanjutnya kita buat file koneksinya dulu. Buat dengan nama filenya koneksi.php. Berikut adalah listingnya

<?php
// koneksi ke mysql
$dbHost = "localhost";
$dbUser = "root";
$dbPass = "";
$dbName = "teman";
mysql_connect($dbHost, $dbUser, $dbPass);
mysql_select_db($dbName);
?>

selanjutnya kita buat file index.php berikut adalah listingnya

 

<?php include "koneksi.php"; ?>
<html>
<head>
<title>Sistem Pertemanan</title>
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
<?php 
//query untuk menampilkan data user 1 (Zlatan Ibrahimovic)
$query = mysql_query("SELECT * FROM user WHERE uid='1'");
$row=mysql_fetch_array($query);
?> 
<ul id="member">
<div class="user-title"> Daftar Teman <?php echo $row['nama'] ; //tampilkan nama user 1 ?></div>
<?php
//Ambil daftar user yang telah menjadi teman user 1 (Zlatan Ibrahimovic)
$query_teman = mysql_query("SELECT * FROM user WHERE uid='1'");
while($row=mysql_fetch_array($query_teman)){
$array_teman = $row["array_teman"];
//jika array teman user 1 tidak kosong
if ($array_teman  != "") { 
// Pecah array teman
$arrayTeman = explode(",", $array_teman);
//Pecahan array teman satu persatu akan diberi query sql 
foreach ($arrayTeman as $key => $value){ 
		$sql_teman = mysql_query("SELECT *  FROM user WHERE uid='$value' LIMIT 1") or die(mysql_error());
		while($row=mysql_fetch_array($sql_teman)){	
			$foto= "gambar/$row[foto]";
			//Tampilkan List array teman
?>	
			<li id="list<?php echo $row['uid']; ?>"> <img src="<?php echo $foto; ?> " />
			<a href="#" class="user-title"><?php echo $row['nama'];?> </a>
			<span class="add">
			   <form name="hapusteman" method="post" action="hapus_teman.php">
			   <input type="submit" class="greenButton" value="Hapus Teman" name="hapus_teman" />
			   <input type="hidden" name="id_teman" value="<?php echo $row['uid']; ?>">
			   </form>	
      </span>
      </li>
      <?php
			}	
		}
	}		
  else { //Jika array teman user 1 kosong
	?>
		<div class="user-title"> Belum memiliki Teman</div>
	<?php
	}
}
?>
<div class="user-title"><a href="list_teman.php">Lihat Semua User</a> </div>
</ul>
</body>
</html>

Pada kode diatas, kita menampilkan data pertemanan dari user ber id 1. Terlihat pada baris kode ke-10. Kita buat statis saja dulu sebagai contoh. Kalau nanti mau dikembangkan, perintah sql tinggal diubah saja berdasarkan user yang login. Sementara kita anggap saja user yang login adalah user ber-id 1.

Selanjutnya file index diatas berguna untuk menampilkan daftar user yang sudah menjadi teman kita. Hal itu bisa dilihat pada perintah sql baris ke-26. Sebelum di tampilkan, data dari field array_teman di explode terlebih dahulu berdsarkan tanda koma (,). Baru setelah itu di tampilkan secara berulang dengan perintah foreach.

Setiap list teman akan disertakan tombol hapus yang akan mengarahkan ke file hapus_teman.php yang gunanya untuk menghapus user yang terdaftar pada pertemeanan kita. Di akhir juga ada link lihat semua user untuk mengarahkan ke file list_teman.php yang berguna untuk menampilkan seluruh daftar user yang ada di database.

Berikut adalah tampilan dari file index.php

index

 

Oke, selanjutnya kita akan membahas file list_teman.php, berikut adalah source kodenya

<?php include "koneksi.php"; ?>
<html>
<head>
<title>Sistem Pertemanan</title>
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
<ul id="member">
<div class="user-title">Daftar Seluruh Teman</div>
<?php 
// Ambil daftar user yang bukan user 1 (Zlatan Ibrahimovic)
$query_user = mysql_query("SELECT * FROM user where uid!='1'");
while($row=mysql_fetch_array($query_user)) {
			$uid=$row['uid'];
			$foto= "gambar/$row[foto]";
			//Tampilkan List seluruh user kecuali user 1
?>	
			<li id="list<?php echo $row['uid']; ?>"> <img src="<?php echo $foto; ?> " />
			<a href="#" class="user-title"><?php echo $row['nama'];?> </a>
			<?php 
			$sql_cek_teman = mysql_query("SELECT * FROM user WHERE uid='1' LIMIT 1"); 
			while($row=mysql_fetch_array($sql_cek_teman)) { 
          $arrayTeman = $row["array_teman"];
      }
			// Cek Seluruh User Apakah sudah menjadi teman dari user 1 (Zlatan Ibrahimovic)
			$array_teman = explode(",", $arrayTeman); //pecah array user 1
			if (in_array($uid, $array_teman)) { //jika user sudah ada dalam array zuser 1 (zlatan ibrahimovic)
			?>
      <span class="add">
			<div class="user-title">Sudah menjadi teman Anda</div>
			</span>
			</li>
			<?php 
			}
			else{//jika user belum ada dalam array user 1 (zlatan ibrahimovic)
			?>
			<!--Form untuk penyimpanan array teman user 1 (zlatan ibrahimovic)
			proses simpan array dieksekusi oleh file "simpan_teman.php"-->
			<span class="add">
			<form name="tambahteman" method="post" action="simpan_teman.php">
			<input type="submit" class="greenButton" value="Tambah Teman" name="tambah_teman" />
			<input type="hidden" name="id_teman" value="<?php echo $uid; ?>">
			</form>
			</span>
			</li>
			<?php
			}
}		
?>
</ul>
</body>
</html>

Tampilan dari kode diatas akan seperti ini

list

 

File diatas Konsepnya tidak jauh berbeda dengan file index.php. Namun bedanya file ini akan menampilkan seluruh warga yang terdaftar pada database. (warga, udah kayak rapat RT aja). Untuk user yang sudah menjadi teman kita akan diberikan keterangan berupa teks "sudah menjadi teman anda". Hal itu bisa di lakukan karena perintah logika if pada baris 27 yang menggunakan fungsi in_array. Sudah tahu kan apa itu fungsi in_array. :-)

Selanjutnya untuk user yang belum menjadi teman akan dilakukan lagi perintah else pada baris 35-47 yang akan menampilkan tombol tambah teman. Apabila kita klik tombol itu, maka program akan mengarahkan ke file simpan_teman.php yang berfungsi menjalankan query penambahan teman ke database.

Nah, inilah source kode dari simpan_teman.php 

<?php
include "koneksi.php";
$uid_teman=$_POST['id_teman'];
//query user 1
$sql_cek_teman = mysql_query("SELECT * FROM user WHERE uid='1' LIMIT 1"); 
while($row=mysql_fetch_array($sql_cek_teman)) { $arrayTeman = $row["array_teman"];}
$array_teman = explode(",", $arrayTeman); //pecah array user
//jika array tidak kosong maka array yang disimpan adalah array lama ditambah $uid_teman (nilai $uid_teman dikirimkan dari form di list_teman.php)
//jika array kosong atau belum ada teman maka yang disimpan hanya $uid_teman (nilai $uid_teman dikirimkan dari form di list_teman.php)
if ($arrayTeman != "") { 
  $arrayTeman = "$arrayTeman,$uid_teman"; 
} 
else { 
  $arrayTeman = "$uid_teman"; 
}
//simpan perubahan array
$UpdateArrayTeman = mysql_query("UPDATE user SET array_teman='$arrayTeman' WHERE uid='1'");

?><script language="javascript">
			alert("Tambah Teman Berhasil");
			document.location="index.php";
			</script><?php 

?>

Mekanisme proses pada file diatas pertama akan di pecah dulu data pada field_array teman menggunakan fungsi explode pada baris ke-7. Selanjutnya akan diperiksa apakah field array_teman sudah terisi atau belum Kalau terisi akan dijalankan perintah baris ke 11 yaitu penggabungan data dari $array_teman dengan variabel teman yang di tambahkan. Lalu kalau belum punya teman, akan di jalankan perintah baris ke 14 untuk mengisi data baru. 

Selanjutnya kalau sudah dijalankan salah satu dari opsi diatas, akan dilanjutkan dengan perintah update sql pada baris ke-17 untuk memperbarui data pada field array_teman. Setelah itu dijalankan javascript alert yang memberi tahu bahwa proses berhasil dan ketika kita klik ok akan di redirect kembali ke file index.php

 

Secara otomatis user yang tadi kita tambahkan akan berhasil masuk ke daftar teman kita.

 

dfd

Begitupun isi dari tabel user, dimana array_teman pada user 1 akan bertambah pula.

db-23

Selanjutnya adalah source kode dari file hapus_teman.php

<?php
include  "koneksi.php";
$uid_teman=$_POST['id_teman'];
// Query user 1
$sql_cek_teman = mysql_query("SELECT * FROM user WHERE uid='1' LIMIT 1"); 
while($row=mysql_fetch_array($sql_cek_teman)) { 
  $arrayTeman = $row["array_teman"];
}
$array_teman = explode(",", $arrayTeman); //pecah array user

//bagian ini untuk menghapus array dengan fungsi unset pada key nilai yang di explode
foreach ($array_teman as $key => $value) {
  if ($value == $uid_teman) {
      unset($array_teman[$key]);
  } 
}

//Sekarang fungsi implode digunakan untuk menyatukan string kembali sebelum dimasukkan kedalam database
$array_teman_baru = implode(",", $array_teman);

//simpan perubahan array
$UpdateArrayTeman = mysql_query("UPDATE user SET array_teman='$array_teman_baru' WHERE uid='1'");
?>

<script language="javascript">
			alert("Pertemanan sudah dihapus");
			document.location="index.php";
</script>

 

Mekanisme dari file di atas tidak berbeda jauh dengan file simpan_teman.php. yang berbeda adalah perintah untuk mengunset id user yang dihapus pada baris ke 14. Selanjutnya akan dilakukan perintah implode, kebalikan dari perintah explode. Perintah implode berguna untuk penyatuan array yang tadi sempat di pisah oleh fungsi explode.

Nah begitulah sistem pertemanan sederhana berbasis php dan javascript. Anda bisa mengembangkan lebih lanjut dengan menambahkan fitur pendaftaran, notifikasi pertemanan, dan lain sebagainya. Intinya sistem dasar ini sangat fleksibel untuk di kembangkan lebih lanjut.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


About Author

Dadan

Saya adalah pria biasa saja yang tumbuh semakin besar di lingkungan yang serba biasa, Semoga kehadiran saya disini bisa membantu Anda. ^_^


Comment & Discussions

  • Imran Nababan
    Saya lebih suka mengunakan data serialize kedalam field array_teman didalam table database. Konsep nya sih sama aja

  • Pranata (Guest)
    Sangat akrab dengan kodingnya. Btw, nice share. Lanjutkan...

  • Please LOGIN before if you want to give the comment.