Membuat situs social network menggunakan PHP dan MySQL
Pada artikel kali ini saya membuat sebuah web jejaring sosial atau social network menggunakan PHP dan MySQL. fasilitas yang diberikan pada situs ini adalah :
Daftar member baru
Update akun member
Pertemanan
Update status
Upload photo
Komentar Gallery Photo
Halaman Profil
Database
Coding Proses
<?php
if($_GET[‘mode’]==’status’){
$status=$_POST[‘status’];
$tanggal=$_POST[‘tanggal’];
$query=mysql_query(“insert into tbl_status values(”,’$id_user’,’$status’,’$tanggal’)”);
if($query){
header(“Location:?page=profil&stat=Berhasil Input Status”);
}else{
echo mysql_error();
}
}
if($_GET[‘mode’]==’pesan’){
$pesan=$_POST[‘pesan’];
$tanggal=$_POST[‘tanggal’];
$id_user=$_POST[‘id_user’];
$id_teman=$_POST[‘id_teman’];
$query=mysql_query(“insert into tbl_pesan values(”,’$id_user’,’$id_teman’,’$pesan’,’$tanggal’)”);
if($query){
header(“Location:?page=profil&id_user=$id_user&stat=Berhasil Input Pesan”);
}else{
echo mysql_error();
}
}
if($_GET[‘mode’]==’komentar’){
$pesan=$_POST[‘pesan’];
$tanggal=$_POST[‘tanggal’];
$id_user=$_POST[‘id_user’];
$id_teman=$_POST[‘id_teman’];
$query=mysql_query(“insert into tbl_komentar values(”,’$id_user’,’$id_teman’,’$pesan’,’$tanggal’)”);
if($query){
header(“Location:?page=form_photo&id_user=$id_user&stat=Berhasil Input Komentar”);
}else{
echo mysql_error();
}
}
if($_GET[‘mode’]==’pertemanan’){
$id_user=$_POST[‘id_user’];
$id_teman=$_POST[‘id_teman’];
$query_cek=mysql_query(“select * from tbl_pertemanan where id_user=’$id_user’ and id_teman=’$id_teman'”);
$cek=mysql_num_rows($query_cek);
if($cek==0){
$query=mysql_query(“insert into tbl_pertemanan values(”,’$id_user’,’$id_teman’,’no’)”);
if($query){
header(“Location:?page=profil&id_user=$id_teman&stat=Menunggu konfirmasi pertemanan”);
}else{
echo mysql_error();
}
}else{
header(“Location:?page=profil&id_user=$id_teman&stat=Harap bersabar, Sedang menunggu konfirmasi pertemanan”);
}
}
if($_GET[‘mode’]==’konfirmasi’){
$id_user=$_POST[‘id_user’];
$id_teman=$_POST[‘id_teman’];
$query_cek=mysql_query(“select * from tbl_pertemanan where id_user=’$id_user’ and id_teman=’$id_teman'”);
$cek=mysql_num_rows($query_cek);
if($cek){
$query=mysql_query(“update tbl_pertemanan set konfirmasi=’yes’ where id_user=’$id_user’ and id_teman=’$id_teman'”);
if($query){
header(“Location:?page=teman&stat=Sudah dikonfirmasi”);
}else{
echo mysql_error();
}
}else{
echo mysql_error();
//header(“Location:?page=teman&stat=Error”);
}
}
?>
Tutorial
Membuat Database Galeri Foto
Buatlah sebuah database dengan nama "galeri", dan buat sebuah tabel "foto" dengan struktur seperti:
Nama Field
Tipe Data
Keterangan
id
int(11)
Primary Key, auto increment
nama_file
varchar(255)
deskripsi
varchar(255)
atau gunakan sql query di bawah
CREATE TABLE `foto` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`nama_file` VARCHAR(255) NOT NULL,
`deskripsi` VARCHAR(255) ,
PRIMARY KEY (`id`)
)
ENGINE = MyISAM;
Membuat Form dan Struktur Folder
Pertama buatlah sebuah folder dengan nama "galeri" di document root web server. Biasanya folder "htdocs" atau "public_html". Di dalam folder galeri buat folder "upload" dan tiga file kosong seperti gambar.
Buka file form.html dan buatlah html form dengan kode berikut.
<html>
<head>
<title>New Picture</title>
</head>
<body>
<form name="form1" action="save-gallery.php" method="post" enctype="multipart/form-data">
File: <input type="file" name="file" id="file"/><br/>
Deskripsi: <textarea name="deskripsi" id="deskripsi"></textarea><br/>
<input type="submit" name="save" value="Upload"/>
</form>
</body>
</html>
kemudian simpan file tersebut.
Mengupload dan Menyimpan Gambar ke Database
Langkah selanjutnya adalah mengupload gambar ke folder "upload" dan menyimpan deskripsi dan nama file ke tabel "foto". Buka file save-gallery.php dan gunakan kode php di bawah untuk menyimpan gambar.
<?php
//koneksi ke database
$conn = mysql_connect('localhost', 'userdb', 'password');
mysql_select_db('galeri');
//upload file
if(!empty($_FILES) && $_FILES['file']['size'] > 0 && $_FILES['file']['error'] == 0){
$fileName = $_FILES['file']['name'];
$move = move_uploaded_file($_FILES['file']['tmp_name'], 'upload/'.$fileName);
if($move){
//simpan deskripsi dan nama file ke database
$sql = "insert into foto (nama_file, deskripsi) values
('$fileName', '".$_POST['deskripsi']."')";
mysql_query($sql);
header("Location: gallery.php");
exit;
}
}
Pertama tama di baris ke 3-4 membuka koneksi ke database. Di baris ke-6 dilakukan pengecekan apakah file sudah terupload dan ukurannya lebih besar dari nol dan tidak terjadi error. Baris ke-8 memindahkan file yang telah terupload, dari temporary folder ke folder "upload" yang telah dibuat sebelumnya. Baris selanjutnya mengecek jika proses pemindahan file berhasil. Jika berhasil deskripsi dan nama file disimpan ke tabel 'foto'.
Menampilkan Gambar
Selanjunya, menampilkan gambar yang telah disimpan. Buka file gallery.php dan isi dengan kode php di bawah.
<html>
<head>
<title>Gallery</title>
</head>
<body>
<?php
//koneksi ke database
$conn = mysql_connect('localhost', 'userdb', 'password');
mysql_select_db('galeri');
//membaca data dari database
$result = mysql_query("select * from foto");
//menampilkan foto
?>
<table>
<tr>
<?php
$i = 1;
while($row = mysql_fetch_array($result)){
?>
<td>
<a href="upload/<?php echo $row['nama_file'];?>">
<img src="upload/<?php echo $row['nama_file'];?>" alt="" width="200" border="0"/>
</a>
<br/><?php echo $row['deskripsi'];?>
</td>
<?php
if($i % 3 == 0){
echo '</tr><tr>';
}
$i++;
}
?>
</tr>
</table>
</body>
</html>
Yang perlu di perhatikan adalah di baris ke-22. Untuk menampilkan gambar digunakan tag <img/>. Nama nama gambar yang ditampilkan diambil dari database - echo $row['nama_file']. Karena gambar diupload ke folder "upload" maka attribute src diisi dengan nilai seperti ini "upload/<?php echo $row['nama_file'];?>".
Membuat Zoom
Sebuah galeri foto perlu sebuah fasilitas zoom. Untuk itu diperlukan jQuery dan Fancybox. Silahkan download Fancybox di websitenya (versi 1.3.4 saat tutorial ini dibuat). Setelah selesai, ekstrak file zip yang didownload dari website fancybox. Kemudian copy file jquery-1.4.3.min.js dan folder fancybox dari hasil ekstrakan dan paste di folder 'galeri' yang telah dibuat sebelumnya.
Selanjutnya buka kembali file gallery.php dan ubah menjadi seperti berikut.
<html>
<head>
<title>Gallery</title>
<!--menambahkan jquery-->
<script type="text/javascript" src="jquery-1.4.3.min.js"></script>
<!--menambahkan fancybox-->
<script type="text/javascript" src="fancybox/jquery.fancybox-1.3.4.pack.js"></script>
<!--menambahkan css fancybox-->
<link href="fancybox/jquery.fancybox-1.3.4.css" type="text/css" rel="stylesheet"/>
<script type="text/javascript">
$(document).ready(function(){
$(".fancy").fancybox();
});
</script>
</head>
<body>
<?php
//koneksi ke database
$conn = mysql_connect('localhost', 'userdb', 'password');
mysql_select_db('galeri');
//membaca data dari database
$result = mysql_query("select * from foto");
//menampilkan foto
?>
<table>
<tr>
<?php
$i = 1;
while($row = mysql_fetch_array($result)){
?>
<td>
<a href="upload/<?php echo $row['nama_file'];?>" class="fancy">
<img src="upload/<?php echo $row['nama_file'];?>" alt="" width="200" border="0"/>
</a>
<br/><?php echo $row['deskripsi'];?>
</td>
<?php
if($i % 3 == 0){
echo '</tr><tr>';
}
$i++;
}
?>
</tr>
</table>
</body>
</html>
Delete / Hapus Gambar
Tidak tertutup kemungkinan ada kesalahan pada saat mengupload file. Untuk itu diperlukan fungsi untuk menghapus file. Pertama ubah skrip untuk menampilkan gambar (file gallery.php), tambahkan kode di bawah setelah baris ke-24.
<br/>
<a href="delete-gallery.php?id=<?php echo $row['id'];?>" onclick="return confirm('Anda yakin?');">Delete</a>
Kemudian buat satu file lagi dengan nama delete-gallery.php dan isi dengan skrip untuk delete gambar di bawah.
<?php
//file delete-gallery.php
//koneksi ke database
$conn = mysql_connect('localhost', 'userdb', 'password');
mysql_select_db('galeri');
if(isset($_GET['id'])){
$id = (int) $_GET['id'];
$sql = "select * from foto where id='$id'";
$result = mysql_query($sql);
if(mysql_num_rows($result) > 0 ){
$data = mysql_fetch_array($result);
//delete file
@unlink('upload/'.$data['nama_file']);
//delete data di database
mysql_query("delete from foto where id='$id'");
}
}
header("Location: gallery.php");
Edit Gambar
Selain manghapus data juga diperlukan kemampuan untuk mengedit gambar. Pertama ubah skrip untuk menampilkan gambar (file gallery.php), ubah pada baris yang sama seperti cara membuat hapus gambar (tambahkan kode di bawah setelah baris ke-24.) seperti:
<br/>
<a href="edit-gallery.php?id=<?php echo $row['id'];?>">Edit</a>
Kemudian buat sebuah file dengan nama edit-gallery.php dan isi dengan skrip php di bawah untuk melakukan edit gambar.
<?php
//file edit-gallery.php
//koneksi ke database
$conn = mysql_connect('localhost', 'userdb', 'password');
mysql_select_db('galeri');
if($_POST){ //jika tombol update ditekan dan data terkirim ke server
//bentuk sql query untuk update
$update = "update foto set deskripsi='".$_POST['deskripsi']."' ";
if($_FILES['file']['size'] > 0 && $_FILES['file']['error'] == 0){ //update gambar hanya jika user memilih file baru
$move = move_uploaded_file($_FILES['file']['tmp_name'], "upload/".$_FILES['file']['name']);
if($move){
$update .= ", nama_file='".$_FILES['file']['name']."'";
}
}
$update .= " where id='".$_POST['id']."'";
mysql_query($update); //update data ke database
header("Location: gallery.php");
exit;
}
?>
<html>
<head>
<title>Edit Picture</title>
</head>
<body>
<form name="form1" action="" method="post" enctype="multipart/form-data">
<?php
$sql = "select * from foto where id='".intval($_GET['id'])."'";
$data = mysql_fetch_array(mysql_query($sql));
?>
<!-- menampilkan gambar sebelumnya -->
<img src="upload/<?php echo $data['nama_file'];?>" alt="" width="200"/><br/>
File: <input type="file" name="file" id="file"/><br/>
<!-- menampilkan deskripsi -->
Deskripsi: <textarea name="deskripsi" id="deskripsi"><?php echo $data['deskripsi'];?></textarea><br/>
<input type="submit" name="save" value="Update"/>
<input type="hidden" name="id" value="<?php echo $data['id'];?>"/>
</form>
</body>
</html>
Transaksi Online
1.Buat database dengan nama contoh_transaksi
2.Buat tabel 'member'CREATE
TABLE
`member` (`idMember` varchar(10),`nama` varchar(30),`alamat` varchar(50),PRIMARYKEY(`idMember`));
3.Input data member INSERT INTO `member` VALUES ('100001', 'MR. A', 'SOLO');
INSERT INTO `member` VALUES ('100002', 'MR. B', 'SOLO');
INSERT INTO `member` VALUES ('100003', 'MR. C', 'SEMARANG');
INSERT INTO `member` VALUES ('100004', 'MR. D', 'YOGYAKARTA');
4.Buat tabel 'transaksi'CREATE
TABLE `transaksi` (`idTransaksi` varchar(12),`idMember` varchar(10),`jumlah` int(11),PRIMARY KEY (`idTransaksi`) );
5.Buat file "bayar.html'<html>
<head>
<title>Transaksi Pembayaran</title>
</head>
<body>
<h1>Transaksi Pembayaran</h1>
<p><a href="bayar.htm">Form Bayar</a></p>
<hr>
<form method="post" action="proses.php"> ID Member </td><td><input type="text"
name="id"> <inputtype="submit" name="submit" value="Submit">
</form>
</body>
</html>
6.Buat file 'koneksi.php'
<?php
// nama host
$dbhost = 'localhost';
// nama user
$dbuser = 'root';
// password user
$dbpass = '';
// nama database
$dbname = 'contoh_transaksi';
mysql_connect($dbhost, $dbuser, $dbpass);
mysql_select_db($dbname);
?>
7.
Buat file 'proses.php'
<?php
// koneksi ke database
Include 'koneksi.php';
?>
<html>
<head>
<title>Transaksi Pembayaran</title>
</head>
<body>
<h1>Transaksi Pembayaran</h1>
<p><a href="bayar.htm">Form Bayar</a></p>
<hr>
<?php
// baca ID member dari form bayar.html
$id = $_POST['id'];
// lakukan query pencarian data member berdasarkan ID
$query
= "SELECT * FROM member WHERE idMember = '$id'";
$hasil = mysql_query($query);
if(mysql_num_rows($hasil)>0)
{
// jika ditemukan datanya maka tampilkan
$data= mysql_fetch_array($hasil);
?>
<form method="post"action="proses2.php">
<table>
<tr><td>ID</td><td>:</td><td><?php echo $id; ?></td></tr>
<tr><td>Nama</td><td>:</td><td><?php echo $data['nama']; ?></td></tr>
<tr><td>Alamat</td><td>:</td><td><?php echo $data['alamat'];?></td></tr>
<tr><td>Jumlah Bayar</td><td>:</td><td>Rp. <inputtype="text"name="jumlah"></td></tr>
</table>
<input type="hidden"
name="id" value="<?php echo $id?>">
<input type="submit" name="submit" value="Submit">
</form>
<?php
}
// jika tidak maka tampilkan peringatan
else
echo
"Nomor ID tidak ditemukan";
?>
</body>
</html>
8.Buat file 'proses2.
php'<?php
// koneksi ke database
include'koneksi.php';
// baca current date
$today= date("Ymd")
Website | PHP | Membuat Fungsi Laporan Download dari PHP ke Excel dan PDF
Membuat Laporan dengan PHP
Pada umumnya klien meminta ada laporan yang dapat didownload dalam berbagai format antara lain spreadsheet (.xls) dan portable data format (.pdf). Untuk membuat laporan sederhana dalam bentuk tabel, mulailah dengan memulai dari hal yang sederhana yaitu membuat tampilannya di html.
Download Laporan sebagai File XLS
Dari tampilan html berikan header yang menyatakan file tersebut adalah file excel dan tambah juga header untuk download, bukan buka di browser.
<?php
ob_start();
$s='';
if($_GET['xls'])
{
header('Content-type: application/vnd.ms-excel');
}
else
{
$s.="<a href='?xls=down'>klik untuk buka dalam bentuk excel</a>";
}
$s.="<table>";
for($i=0;$i<5;$i++)
{
$s.="\n<tr>";
for($j=0;$j<3;$j++)
{
$p=$i*120+$j+5;
$s.="\n\t<td>".$p."</td>";
}
$s.="\n</tr>";
}
$s.="</table>";
print $s;
ob_end_flush();
?>
header('Content-type: application/vnd.ms-excel');
perintah inilah yang memerintahkan halaman yang kamu buka menjadi excel atau didownload sebagai excel.
Namun ada satu kekurangan dari script ini. Yaitu kamu akan mendapatkan bahwa ekstensi file yang didownload adalah .php. Untuk mengatasi hal ini tambahkan code berikut.
header('Content-Disposition: attachment; filename="'.$filename.'"');
Download Laporan dengan Filter
Untuk fitur membuat laporan, tidak selalu klik langsung file laporan bisa download. Tetapi seringkali ada tambahan-tambahan seperti:
laporan yang ingin ditarik, apakah laporan pembelian, penjualan dll
rentang laporan akan ditarik, dalam hal ini tanggalnya
Oleh karena itu mulailah dengan membuat form. Berikut contoh komponen form untuk membuat laporan.
Tipe Laporan (radio button atau dropdown)
Tanggal {tanggal} hingga {tanggal} (biasanya menggunakan datepicker yang ada di jquery)
Cetak (checkbox)
Buat Laporan (button)
Gunakan code berikut untuk memeriksa variabel yang akan digunakan sebagai filter pencarian dalam fungsi laporan.
<?php
if($_POST)
{
echo '<pre>';print_r($_POST);die('</pre>');
}
?>
Format Tanggal
Format tanggal tidak boleh sembarangan ditampilkan di excel. Perlu digaris bawahi bahwa format excel yang digunakan klien mungkin tidak sama dengan format tanggal yang digunakan developer! Untuk format tanggal, saya menyarankan menggunakan format YYYY-MM-DD seperti contoh: 2012-05-12, karena dengan menggunakan format tersebut, excel tidak akan mengubah menjadi format yang berbeda.
Jika menggunakan format DD-MM-YYYY, ada kemungkinan excel akan menampilkannya dalam format MM-DD-YYYY. Misalnya, untuk tanggal 12 Mei 2013, 12-05-2013, mungkin dibaca sebagai 5 Desember 2013.
Download Laporan sebagai File PDF
Untuk menggenerate laporan sebagai file .pdf yang bisa didownload, HTML2FPDF bisa digunakan. Kita hanya harus sedikit waspada dengan isi tulisannya. Kekurangan dari HTML2FPDF adalah tidak bisa mengkonversi file .gif. Apabila anda memakai .gif untuk memanfaatkan alpha di gambarnya, ganti saja dengan .png. HTML2FPDF bisa didownload disini
Konsep dasar HTML2FPDF adalah anda menuliskan isi file dengan format html ke file pdf. Isi file yang akan dituliskan ke file pdf, dapat diperoleh dengan dua cara yaitu: 1. membaca output file yang digenerate, misalnya dengan ob_get_contents() 2. meng-generate isi file, misalnya dengan cara seperti membuat file .xls di atas
<?php
require_once('html2fpdf.php'); // agar dapat menggunakan fungsi-fungsi html2pdf
ob_start(); // memulai buffer
error_reporting(1); // turn off warning for deprecated functions
$pdf= new HTML2FPDF(); // membuat objek HTML2PDF
$pdf->DisplayPreferences('Fullscreen'); // set preferensi tampilan pdf
?>
Setelah script di atas, tulis data yang akan ditampilkan di pdf dengan format html. Kemudian kita tulis ke file pdf.
<?php
$html=ob_get_contents(); // mengambil data dengan format html, dan disimpan di variabel
ob_end_clean(); // mengakhiri buffer dan tidak menampilkan data dalam format html
$pdf->addPage(); // menambah halaman di file pdf
$pdf->WriteHTML($html); // menuliskan data dengan format html ke file pdf
$pdf->Output('tes001.pdf','D'); // mengeluarkan file pdf dengan nama tes001.pdf dalam bentuk file yang bisa di download
?>