Tutorial PHP: aplikasi CURD dengan PHP + MySql (Part 1)

Kali ini kita akan belajar membuat aplikasi website sederhana dengan PHP + MySql.

Bagi yang belum tahu, PHP adalah server-side scripting language yang di desain untuk pengembangan website tapi juga bisa digunakan untuk keperluan programming lainnya. Server-side scripting berarti bahwa bahasa programming ini berjalan dan dieksekusi di sisi server. Yang kedua adalah MySql, Mysql adalah salah satu open source Relational Database Management System (RDBMS) yang menggunakan SQL (Structure Query Language) sebagai main language untuk create, manage dan mengakses database.

Oke cukup dengan perkenalannya,selanjutnya kita akan membuat sebuah aplikasi kecil dimana requirementnya adalah user mampu:

  1. Melihat List User
  2. Create User
  3. Delete User

Apa yang kita perlukan?

Ada beberapa yang kalian perlu siapkan sebelum memulai ngoding ya:

  • Text editor (Notepad++, dreamwaver, sublime ) tergantung enaknya pakai apa
  • XAMPP (windows) MAMP (mac) untuk local server
  • MySql Client (optional)

Setelah kalian punya alat-alat seperti diatas maka kita siap untuk ke step selanjutnya. Tapi sebelum itu kita akan buat database dahulu di local server kalian. Pada tutorial ini contohnya kita akan buat database tutorial1, dan sebuah tabel users dengan field yang dimiliki adalah id, first_name. last_name. description.

# sql for create table users

DROP TABLE IF EXISTS `users`;

CREATE TABLE `users` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `first_name` varchar(100) DEFAULT NULL,
  `last_name` varchar(100) DEFAULT NULL,
  `email` varchar(200) DEFAULT NULL,
  `description` text,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Struktur Aplikasi

Dibawah ini adalah struktur dari aplikasi yang akan kita buat:

/ config.php
  database.php
  create.php
  index.php 
  user.php 
  delete.php
  1. config.php : berisi tentang informasi config dari database yang akan kita pakai.
  2. database.php : sebuah class untuk membantu kita terhubung dengan MySql untuk membuat connection atau run query.
  3. index.php : menampilkan semua user yg kita buat
  4. create.php : menampilkan form create user
  5. user.php : menampilkan informasi detail sebuah user
  6. delete.php : untuk menghapus user yang kita inginkan 
Config.php

File config.php berisi tentang konfigurasi database seperti nama host, user, password dan database yang akan digunakan. Dibawah ini contoh config yang dipakai, bila kalian punya config yang berbeda silakan disesuaikan.

<?
$config = array(
	'host' => 'localhost',
	'user' => 'root',
	'password' => 'root',
	'database' => 'tutorial1'
);
Database.php
Database.php

File database.php berfungsi sebagai simle class pembantu untuk memudahkan kalian membuat koneksi ke database ataupun untuk melakukan eksekusi query yang diinginkan.

<?

class Database {
	
	private $connection;

	function __construct($host,$user,$password,$database) {
     	$this->connection = new mysqli($host, $user, $password, $database);
     	if (mysqli_connect_error()) {
		    die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error());
		}
   	}

   	public function execute($qry){
   		$result = $this->connection->query($qry);
   		return $result;
   	}

   	public function insert($qry){
   		$result = $this->connection->query($qry);
   		if($result)
   		{
   			return true;
   		}
   		else
   		{
   			return $this->connection->error();
   		}
   	}
   	public function close(){
   		$this->connection->close();
   	}

}

Class diatas teridiri dari sebuah contructor, fungsi execute(), fungsi insert() dan terakhir fungsi close(). Class tersebut memakai mysqli extension untuk membuat koneksi ke database, kalian bisa juga pakai mysql atau PDO class.

Index.php

File ini merupakan halaman utama dari aplikasi yang akan kita buat. Nantinya pada halaman ini kita akan menampilkan list user yang ada di dalam database kita. 

<?php
  include_once 'config.php';
  include_once 'database.php';
  $db = new Database($config['host'],$config['user'],$config['password'],$config['database']);

  $users = $db->execute('select * from users');
?>

Oke, sedikit penjelasan dari potongan code diatas adalah kita perlu menginclude config dan class database yang sudah kita buat di baris paling atas kemudian kita membuat instant baru dari class database dengan config yang sudah kita buat sebelummnya. Kemudian kita akan memanggil query untuk men-select semua user yang ada di dalam database kita.

<h1>List User</h1>

<?if($users->num_rows > 0) { ?>
    <ol>
    <?php
     while ($user = $users->fetch_object()){
    ?>
         <li>
               <?= $user->first_name.' '.$user->last_name ?>  
	 </li>
    <?	
     }
    ?>
    </ol>
<? } else {?>
     <small><i>User masing kosong.</i></small>
<? }?>

Selanjutnya bagaimana menampilkan data user kita? Diatas dapat dilihat bagaimana cara kita menampilkan data user yang kita dapat dari database. $users->num_rows berfungsi untuk mengecek berapa jumlah row dari result user yang kita punya, jika num_rows lebih dari 0 maka kita selanjutnya bisa melakukan looping untuk menampilkan data user satu persatu. $users->fetch_object() berfungsi untuk memfetch hasil query kita ke dalam sebuah object, sebenarnya kalian bisa memakai fetch_array() atau yang lainnya sesuai dengan keinginan kalian. Untuk info selanjutnya kalian bisa baca langsung disini mysqli_result.

Create.php

Nah kalau sudah berhasil menampilkan list user, kita selanjutnya mencoba untuk menambah sebuah user ke dalam database dan menampilkannya di list user. Kita akan membuat sebuah file yg bernama create.php yang berisi sebuah form untuk menambah user.

<!DOCTYPE html>
<html>
   <head>
   </head>
   <body>
	<form action="" method="post">
		<fieldset>
			<label for="email">First Name</label>
			<input type="text" name="first_name" required>

			<label for="password">Last Name</label>
			<input type="text" name="last_name" required>

			<label for="password">Email</label>
			<input type="email" name="email" required>

			<label for="description">Description</label>
			<textarea name="description" required></textarea>

			<button type="submit" name="create" class="pure-button pure-button-primary">Save</button>
		</fieldset>
		</form>
   </body>
</html>

Nah kalian akan mempunyai sebuah form sekarang dengan beberapa input dan textarea. pastikan setiap input sudah memiliki attribute name yang benar. Lalu bagaimana memproses data saat form tersebut kita submit? 

<?php
include_once 'config.php';
include_once 'database.php';
$db = new Database($config['host'],$config['user'],$config['password'],$config['database']);
?>

Karena form tersebut mengarah ke dirinya sendiri, maka kita bisa menambah form processing di file create.php yang kita buat. Pertana kita perlu menginclude file config.php dan database.php. Kemudian kalian buat instant dari class database dengan data config yang sudah kalian buat seperti pada file index.php sebelumnya.  

Selanjutnya adalah kita akan mengecek apakah ada request post yang yang diminta si user, jika iya maka kita bisa memproses data yang di input user melalui form yg kita buat tadi.

$msg = '';

if($_POST){

	//tampung data dari form
	$first_name = $_POST['first_name'];
	$last_name = $_POST['last_name'];
	$email = $_POST['email'];
	$description = $_POST['description'];

	//query untuk insert new user ke database
	$qry = "insert into users (first_name,last_name,email,description) values ('".$first_name."','".$last_name."','".$email."','".$description."')";
	$status = $db->insert($qry);

	if($status==true){
		$msg = "Berhasil menambah user baru.";	
	}else{
		$msg = "Gagal menambah user baru.";	
	}
	
}

Kita bisa tampung dulu data dari hasil submit form yang dilakukan user untuk mempermudah saja. Kemudian kalian membuat query insert untuk menyimpan data tersebut ke dalam database. Kalau belum jelas tentang insert query, bisa coba check sini. Jika kalian sudah membuat insert query tadi tinggal memanggilnya melalui bantuan class database, tepatnya fungsi insert(). Nah fungsi ini akan mereturn true jika query berhasil dilakukan. Kalian bisa membuah pesan jika proses insert berhasil atau tidak.

User.php

Kalau menampilan list user dan create user sudah berjalan, sekarang bagaiman jika kita hanya ingin menampilkan satu user saja? Yo, untuk itu kita akan membuat sebuah file bernama user.php yg berfungsi untuk menampilkan detail per user. Nah nanti kita akan mengakses detail user berdasarkan masing-masing id user tersebut. Jadi kira-kira kita akan mempunyai link seperti ini:

<a href="http://example.local/user.php?id=1">http://example.local/user.php?id=1</a>

dimana nilai dari id akan berubah-ubah tergantung user mana yg mau kita tampilkan.

Jadi kita kembali dulu ke file index.php dan menambahkan link agar bisa kita melihat detail user nanti.

<li>
    <?= $user->first_name.' '.$user->last_name ?>
    <a href="user.php?id=<?= $user->id?>" detail</a>
</li>

Nah kalau udah kita lanjut ke file user.php

<?php
include_once 'config.php';
include_once 'database.php';
$db = new Database($config['host'],$config['user'],$config['password'],$config['database']);

$id = $_GET['id']; //tangkap id yang diminta
?>

Pertama sama seperti file-file sebelumnya yang kita buat, include dulu file config.php dan database.php di bagian paling atas file tersebut. nah kemudian kita tangkap id user mana yang dipilih dengan $_GET['id'].  Kemudian kita akan membuat query dengan men-select user berdasarkan id-nya seperti dibawah ini:

<?php
include_once 'config.php';
include_once 'database.php';
$db = new Database($config['host'],$config['user'],$config['password'],$config['database']);
$id = $_GET['id'];

$users = $db->execute('select * from users');
$rs = $db->execute('select * from users where id='.$id);
$detail_user = $rs->fetch_object();
?>

Selanjutnya adalah bagaimana kita menampilkan detail user tersebut? Contohnya bisa kalian lihat di bawah ini:

<?php
include_once 'config.php';
include_once 'database.php';
$db = new Database($config['host'],$config['user'],$config['password'],$config['database']);
$id = $_GET['id'];

$users = $db->execute('select * from users');
$rs = $db->execute('select * from users where id='.$id);
$detail_user = $rs->fetch_object();
?>
<html>
<head>
</head>
<body>
	<h1>Detail User</h1>
	<p>First Name : <?= $detail_user->first_name?></p>
	<p>Last Name : <?= $detail_user->last_name?></p>
	<p>Email : <?= $detail_user->email ?></p>
	<p>Description : <?= $detail_user->description?></p>
</body>
</html>
Delete.php

Nah list user sudah, create user sudah, menampilka detail user, yang terakhir adalah bagaimana menghapus user yang kita inginkan? Kita akan buat file delete.php yang akan digunakan untuk menghapus user yang diingikan. jadi nanti kita akan punya sebuah link contohnya: 

<a href="<a href=" http:="" example.local="" delete.php?id="1"">http://example.local/delete.php?id=1</a>">http://example.local/delete.php?id=1">http://examp...

dimana id tersebut manandakan user mana yang akan di delete.

Tapi sebelum itu kembali sebentar ke file index.php yang sudah dibuat tadi dan tambahkan link untuk menghapus user yang kita inginkan. jadi seperti dibawah ini.

<li>
    <?= $user->first_name.' '.$user->last_name ?>
    <a href="user.php?id=<?= $user->id?>" detail</a>
    <a href="delete.php?id=<?= $user->id?>" >hapus</a>
</li><br>

jadi saat link hapus di click, maka user akan di arahkan ke file delete.php untuk menghapus user tersebut. Nah detail file delete.php kira-kira seperti ini:

<?php
include_once 'config.php';
include_once 'database.php';
$db = new Database($config['host'],$config['user'],$config['password'],$config['database']);

$id = $_GET['id'];

$rs = $db->execute('delete from users where id='.$id);

if($rs){
	header('Location: index.php?delete=true');
}else{
	header('Location: index.php?delete=false');
}

?>

Isinnya mirip dengan user.php, dimana kita tangkap id user yang mau di hapus cuman kali ini kita butuh query delete untuk menghapus user berdasarkan id-nya di database. Kita bisa menambahkan redirect ke file.index.php  selesai menghapus user yang diinginkan.

Yo! Kita sekarang sudah punya aplikasi simple untuk membuat user dan menampilkannya melalui halaman website. Nah untuk live preview dari tutorial kali ini kalian bisa cek langsung dsini. Untuk file-file dalam tutorial ini kalian bisa dapatkan di akun gthub dsini.

Oke jika ada pertanyaan silakan tinggalkan comment. Masukan dan kritik terima semua kok. Happy ngide!!

Please follow and like us:

Hi, Saya Agus Yusida

Hello, perkenalkan saya Agus Yusida, seorang freelancer programmer, pernah membuat startup dan suka mencoba hal-hal baru. Jika ada pertanyaan bisa DM saya di IG @yusidajohn untuk fast respond. Jangan lupa like facebook ngide.net ya!

Related Article