0% menganggap dokumen ini bermanfaat (0 suara)
401 tayangan

Tutorial PHP Dan MySQL

Teks ini memberikan tutorial dasar membuat aplikasi CRUD (Create, Read, Update, Delete) menggunakan PHP dan MySQL untuk pendaftaran siswa baru, meliputi penjelasan konfigurasi database, membuat koneksi database, dan membangun form pendaftaran siswa."

Diunggah oleh

Mustafa
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
401 tayangan

Tutorial PHP Dan MySQL

Teks ini memberikan tutorial dasar membuat aplikasi CRUD (Create, Read, Update, Delete) menggunakan PHP dan MySQL untuk pendaftaran siswa baru, meliputi penjelasan konfigurasi database, membuat koneksi database, dan membangun form pendaftaran siswa."

Diunggah oleh

Mustafa
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 73

petanikode.

com

Tutorial PHP dan MySQL: Membuat


Aplikasi CRUD [Studi Kasus Pendaftaran
Siswa Baru]
Ahmad Muhardian
17-22 minutes

PHP sering dijodohkan dengan MySQL untuk membangun aplikasi web. MySQL berperan
sebagai tempat menyimpan data (basis data) sedangkan PHP adalah program yang mengelola
data tersebut.

Sebenarnya PHP tidak hanya bisa dijodohkan dengan MySQL saja. PHP juga bisa dijodohkan
dengan SQLite, PostgreSQL, MongoDB, Ms. Access, dsb.

Pada kesempatan ini, kita akan belajar menggunakan PHP dan MySQL untuk membuat aplikasi
sederhana.

Bagaimana PHP dan MySQL dihubungkan?


PHP dan MySQL dapat saling berhubungan melalui perantara API (Application Programming
Interface).

petanikode.com

Tutorial PHP & MySQL: Membuat Login


dan Register (dengan Bootstrap 4)
Ahmad Muhardian
19-24 minutes

Login dan register adalah fitur yang banyak dibutuhkan dalam pengembangan aplikasi web.

Biasanya saat membuat halaman admin. Kita pasti akan membuat login dan register.

Lalu bagaimana cara membuatnya?

Tulisan ini akan menjawabnya…


Sebelum itu, saya ingin menyampaikan apa saja yang akan dibahas di sini.

 Tutorial ini menggunakan PHP Native dan PDO sebagai koneksi ke database;
 Tutorial ini menggunakan Framework Bootstrap 4 untuk tampilan;
 Tutorial ini hanya akan fokus membahas fitur login dan register saja, untuk class-class
bootstrap saya tidak akan jelaskan. Saya anggap, pembaca sudah paham dengan
Bootstrap.

Baiklah, mari kita mulai…

Persiapan Alat dan Bahan


Berikut ini alat-alat yang dibutuhkan:

1. Teks Editor: VS Code (pakai yang lain juga boleh);


2. Web Browser: Google Chrome, Opera, Firefox, dll;
3. Server: PHP (versi 5.6 ke atas), Apache2/Nginx, dan MySQL.

Sementara untuk bahan-bahannya silahkan sediakan:

1. Bootstrap 4;
2. Beberapa gambar.

Silahkan download di sini semua bahannya: bahan-bahan.zip


Alat dan bahan sudah siap.

Mari kita mulai memasak coding… 😄

Membuat Project Baru


Buatlah sebuah direktori baru bernama php-login-register di htdocs buat yang
menggunakan XAMPP. Sedangkan yang menggunakan server apache2 dan nginx, silahkan buat
di /var/www/html.

Ikuti perintah berikut:

sudo chmod 777 /var/www/html -R # berikan hak akses dulu


mkdir /var/www/html/php-login-register # buat direktori baru
cd /var/www/html/php-login-register # pindah ke direktori baru

Buat tiga direktori di dalamnya:


mkdir css js img # buat tiga direktori sekaligus

Setelah itu buat file yang dibutuhkan:

# membuat file kosong


touch index.php login.php register.php logout.php timeline.php auth.php
config.php

Buka dengan VS Code:

# buka direktori ini dengan VS Code, pastikan kamu sudah menginstall VS Code
code .

Sehingga kita memiliki struktur direktori seperti ini:

Setelah itu, silahkan ekstrak dan copy semua bahan yang di-download tadi ke sana.
Beres…

Semua bahan-bahan sudah siap.

Menyiapkan Database
Sebelum kita mulai menulis kode, siapkan dulu database-nya.

Silahkan buka phpmyadmin http://localhost/phpmyadmin/ dan buat database baru bernama


pesbuk.

Baca juga: Cara Masuk ke phpMyAdmin Tanpa Login cPanel


.

Setelah itu, buatlah sebuah tabel baru dengan nama users dan buat kolomnya seperti ini:
Kode SQL-nya:

CREATE TABLE `users` (


`id` int(11) NOT NULL,
`username` varchar(255) NOT NULL,
`email` varchar(255) NOT NULL,
`password` varchar(255) NOT NULL,
`name` varchar(255) NOT NULL,
`photo` varchar(255) NOT NULL DEFAULT 'default.svg'
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Indexes for table `users`
--
ALTER TABLE `users`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `username` (`username`);
--
-- AUTO_INCREMENT for table `users`
--
ALTER TABLE `users`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=0;

Selesai, selanjutnya kita mulai coding…

Membuat Koneksi ke Database


Hal pertama yang harus kita lakukan adalah membuat kode untuk koneksi ke database.

Silahkan buka file config.php, lalu isi kodenya seperti ini:

<?php

$db_host = "localhost";
$db_user = "root";
$db_pass = "kopi";
$db_name = "pesbuk";

try {
//create PDO connection
$db = new PDO("mysql:host=$db_host;dbname=$db_name", $db_user, $db_pass);
} catch(PDOException $e) {
//show error
die("Terjadi masalah: " . $e->getMessage());
}

Sesuaikan user dan password-nya dengan konfigurasi di komputermu. Karena di komputer


saya, password mysql-nya menggunakan kopi.

Jika tidak menggunakan password, maka dikosongkan saja.

Apa maksud kode config.php di atas?

Pertama kita membuat variabel untuk menyimpan konfigurasi database:

$db_host = "localhost";
$db_user = "root";
$db_pass = "kopi";
$db_name = "pesbuk";

Setelah itu, kita membuat sebuah objek baru bernama $db, objek ini kita perlukan untuk
melakukan query ke database.

$db = new PDO("mysql:host=$db_host;dbname=$db_name", $db_user, $db_pass);

Saat kita membuat objek PDO, kita gunakan blok Try/Catch untuk menangai error.
Coba kita tes.

Silahkan buka terminal di VS Code (Tekan Ctrl+`), lalu jalankan server PHP di sana dengan
perintah:

Argumen -S menggunakan huruf besar/kapital.

Sekarang buka: http://localhost:8000/config.php

Jika tampilannya kosong, maka koneksi berhasil dan tidak ada error.
Tapi kalau ada error, biasanya akan tampil seperti ini.

Membuat Halaman Utama


Halaman utama adalah halaman yang akan dibuka pertama kali oleh pengunjung web.

Halaman ini bertugas sebagai landing page, isinya cuma html saja.
Silahkan buka file index.php lalu isi kodenya seperti ini:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Pesbuk</title>

<!-- menyisipkan bootstrap -->


<link rel="stylesheet" href="css/bootstrap.min.css" />
</head>
<body class="bg-light">
<header>
<div class="jumbotron jumbotron-fluid">
<div class="container">
<div class="row">
<div class="col-md-8">
<h1>Selamat datang di Pesbuk</h1>
<p>Bergabunglah bersama jutaan orang lainnya...</p>
</div>
<div class="col-md-4">
<a href="login.php" class="btn btn-
secondary">Masuk</a>
<a href="register.php" class="btn btn-
success">Daftar</a>
</div>
</div>
</div>
</div>
</header>

<section>
<div class="container">
<div class="row">
<div class="col-md-12">
<img class="img img-responsive" src="img/connect.png" />
</div>
</div>
</div>
</section>

</body>
</html>

Setelah itu, coba buka http://localhost:8000/.


Keren ‘kan?

O ya gambarnya kita pinjam dari Facebook 😄.

Tidak apa-apa, ini kan hanya untuk belajar saja. Nanti kalau sudah buat web sungguhan, tidak
boleh menggunakan gambar orang lain tanpa izin.

Membuat Fitur Register di PHP


Berikutnya kita akan membuat fitur registrasi.

Alur kerjanya:
1. Input data dari form;
2. Filter data yang diinputkan;
3. Simpan ke database;
4. Kalau berhasil, alihkan ke halaman login.

Mari kita buat.

Silahkan buka file register.php, lalu isi dengan kode berikut:

<?php

require_once("config.php");

if(isset($_POST['register'])){

// filter data yang diinputkan


$name = filter_input(INPUT_POST, 'name', FILTER_SANITIZE_STRING);
$username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING);
// enkripsi password
$password = password_hash($_POST["password"], PASSWORD_DEFAULT);
$email = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL);

// menyiapkan query
$sql = "INSERT INTO users (name, username, email, password)
VALUES (:name, :username, :email, :password)";
$stmt = $db->prepare($sql);

// bind parameter ke query


$params = array(
":name" => $name,
":username" => $username,
":password" => $password,
":email" => $email
);

// eksekusi query untuk menyimpan ke database


$saved = $stmt->execute($params);

// jika query simpan berhasil, maka user sudah terdaftar


// maka alihkan ke halaman login
if($saved) header("Location: login.php");
}

?>

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Register Pesbuk</title>

<link rel="stylesheet" href="css/bootstrap.min.css" />


</head>
<body class="bg-light">

<div class="container mt-5">


<div class="row">
<div class="col-md-6">

<p>&larr; <a href="index.php">Home</a>

<h4>Bergabunglah bersama ribuan orang lainnya...</h4>


<p>Sudah punya akun? <a href="login.php">Login di sini</a></p>

<form action="" method="POST">

<div class="form-group">
<label for="name">Nama Lengkap</label>
<input class="form-control" type="text" name="name"
placeholder="Nama kamu" />
</div>

<div class="form-group">
<label for="username">Username</label>
<input class="form-control" type="text" name="username"
placeholder="Username" />
</div>

<div class="form-group">
<label for="email">Email</label>
<input class="form-control" type="email" name="email"
placeholder="Alamat Email" />
</div>

<div class="form-group">
<label for="password">Password</label>
<input class="form-control" type="password" name="password"
placeholder="Password" />
</div>

<input type="submit" class="btn btn-success btn-block"


name="register" value="Daftar" />

</form>

</div>

<div class="col-md-6">
<img class="img img-responsive" src="img/connect.png" />
</div>

</div>
</div>

</body>
</html>

Penjelasan:
Pertama kita membutuhkan objek $db untuk melakukan query, maka kita impor config.php
dengan fungsi require_once().

require_once("config.php");

Setelah itu, baru kita buat kode untuk menyimpan data ke database.

Sebelumnya, kita cek dulu. Apakah tombol Register sudah ditekan atau belum:

if(isset($_POST['register'])){

// ...
}
?>

Selanjutnya melakukan filter dan enkripsi password terhadap data yang diinputkan:

// filter data yang diinputkan


$name = filter_input(INPUT_POST, 'name', FILTER_SANITIZE_STRING);
$username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING);
// enkripsi password
$password = password_hash($_POST["password"], PASSWORD_DEFAULT);
$email = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL);

Kenapa harus di-filter dan dienkripsi?

Jangan percaya pada apa yang diinputkan user, bisa saja mereka menginputkan username dan
name seperti ini:
Ini salah satu bentuk serangan XSS.

Karena itu, kita harus memfilternya agar skrip yang diinputkan user diubah menjadi karakter
yang aman.
Lalu kenapa password harus dienkripsi?

Tujuannya untuk keamanan. Nanti kalau database dicuri, si pencuri tidak akan tahu password
dari akun-akun yang sudah terdaftar.

// enkripsi password
$password = password_hash($_POST["password"], PASSWORD_DEFAULT);

Tunggu dulu…

Kenapa password tidak di-filter?

Karena agar user dapat menggunakan simbol untuk membuat password.

Kalau kita filter nanti user tidak bisa membuat password dengan simbol-simbol seperti: &, <, >, %,
dll.

Setelah data di-filter, selanjutnya kita buat query dengan objek $db.

$sql = "INSERT INTO users (name, username, email, password)


VALUES (:name, :username, :email, :password)";
$stmt = $db->prepare($sql);

:name, :username, :email, :password adalah placeholder. Tujuannya agar terhindar dari
serangan SQL Injection.

Setelah itu, kita bind parameter atau mengisi placeholder dengan nilai yang kita dapatkan dari
hasil filter.
// bind parameter ke query
$params = array(
":name" => $name,
":username" => $username,
":password" => $password,
":email" => $email
);

Selanjutnya, kita eksekusi query-nya:

// eksekusi query untuk menyimpan ke database


$saved = $stmt->execute($params);

Eksekusi query akan menghasilkan nilai true jika berhasil.

Sehingga kita bisa membuat sebuah kondisi:

// jika query simpan berhasil, maka user sudah terdaftar


// maka alihkan ke halaman login
if($saved) header("Location: login.php");

Lalu yang terakhir adalah kode untuk form registernya:

<form action="" method="POST">


...
</form>

Atribut action="" artinya data akan dikirim ke file itu sendiri, yaitu: register.php.

Mudah bukan?

Selanjutnya kita akan membuat fitur login.

Membuat Fitur Login di PHP


Silahkan buka file login.php lalu isi—ketik! jangan copas—dengan kode berikut:

<?php

require_once("config.php");

if(isset($_POST['login'])){

$username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING);


$password = filter_input(INPUT_POST, 'password', FILTER_SANITIZE_STRING);

$sql = "SELECT * FROM users WHERE username=:username OR email=:email";


$stmt = $db->prepare($sql);

// bind parameter ke query


$params = array(
":username" => $username,
":email" => $username
);

$stmt->execute($params);

$user = $stmt->fetch(PDO::FETCH_ASSOC);

// jika user terdaftar


if($user){
// verifikasi password
if(password_verify($password, $user["password"])){
// buat Session
session_start();
$_SESSION["user"] = $user;
// login sukses, alihkan ke halaman timeline
header("Location: timeline.php");
}
}
}
?>

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Login Pesbuk</title>

<link rel="stylesheet" href="css/bootstrap.min.css" />


</head>
<body class="bg-light">

<div class="container mt-5">


<div class="row">
<div class="col-md-6">

<p>&larr; <a href="index.php">Home</a>

<h4>Masuk ke Pesbuk</h4>
<p>Belum punya akun? <a href="register.php">Daftar di sini</a></p>

<form action="" method="POST">

<div class="form-group">
<label for="username">Username</label>
<input class="form-control" type="text" name="username"
placeholder="Username atau email" />
</div>

<div class="form-group">
<label for="password">Password</label>
<input class="form-control" type="password" name="password"
placeholder="Password" />
</div>

<input type="submit" class="btn btn-success btn-block"


name="login" value="Masuk" />

</form>

</div>

<div class="col-md-6">
<!-- isi dengan sesuatu di sini -->
</div>

</div>
</div>

</body>
</html>

Penjelasan:

Algoritmanya hampir sama seperti register.

Pertama kita mengimpor file config.php:

require_once("config.php");

Setelah itu, kita cek apakah tombol login sudah ditekan atau belum:

if(isset($_POST['login'])){
// ...
}

Lalu melakukan filter:

$username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING);


$password = filter_input(INPUT_POST, 'password', FILTER_SANITIZE_STRING);

Selanjutnya melakukan query:

$sql = "SELECT * FROM users WHERE username=:username OR email=:email";


$stmt = $db->prepare($sql);

Pada query, kita menggunakan logika OR agar user bisa login dengan email dan username .

Selanjutnya bind parameter dan ekekusi querynya.

// bind parameter ke query


$params = array(
":username" => $username,
":email" => $username
);
$stmt->execute($params);

Setelah query dieksekusi, kita ambil hasilnya dengan fungsi fetch().

$user = $stmt->fetch(PDO::FETCH_ASSOC);

Artinya, kita akan mengambil hasil query sebagai array assosiatif.

Fungsi fetch() akan menghasilkan null kalau tidak ada data, maka kita bisa membuat kondisi
seperti ini:

// jika user terdaftar


if($user){
//...
}

Selanjutnya, kita lakukan verifikasi password yang diinputkan oleh user dengan password yang
ada di database.

if(password_verify($password, $user["password"])){
//...
}

Fungsi password_verify() akan menghasilkan nilai true kalau password yang diinputkan
sama dengan yang di database.

Langkah terakhir adalah membuat session dan mengalihkannya ke halaman timeline.php.

// buat Session
session_start();
$_SESSION["user"] = $user;
// login sukses, alihkan ke halaman timeline
header("Location: timeline.php");

Variabel $_SESSION adalah variabel super global yang bisa dibaca dari semua file PHP, karena
diingat oleh server.

Untuk dapat menggunakan variabel $_SESSION kita harus memanggil fungsi session_start()
terlebih dahulu.

$_SESSION["user"] = $user; artinya kita menyimpan data user ke dalam session.

Ini yang akan kita manfaatkan untuk mengecek apakah user sudah login atau belum.

Membuat Halaman Timeline


Sebelum membuat kode untuk halaman timeline.php, kita buat dulu auth.php.
File auth.php berfungsi untuk mengecek session, apakah user sudah login atau belum.

Silahkan buka file auth.php kemudian isi seperti ini:

<?php

session_start();
if(!isset($_SESSION["user"])) header("Location: login.php");

Penjelasan:

Seperti penjelasan sebelumnya, saat kita ingin menggunakan variabel $_SESSION, maka kita
harus memanggil fungsi session_start() terlebih dahulu.

Setelah itu kita cek dengan:

if(!isset($_SESSION["user"])) header("Location: login.php");

Artinya, jika variabel $_SESSION["user"] tidak memiliki nilai, maka user belum login… paksa
dia untuk login 😄.

Tanda seru (!) di depan isset() artinya tidak. Berarti tidak ter-set (variabel belum dibuat).

Nah barulah sekarang kita buat halaman timeline.php.

Silahkan buka file timeline.php, lalu isi dengan kode berikut:

<?php require_once("auth.php"); ?>

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Pesbuk Timeline</title>

<link rel="stylesheet" href="css/bootstrap.min.css" />


</head>
<body class="bg-light">

<div class="container mt-5">


<div class="row">
<div class="col-md-4">

<div class="card">
<div class="card-body text-center">

<img class="img img-responsive rounded-circle mb-3"


width="160" src="img/<?php echo $_SESSION['user']['photo'] ?>" />
<h3><?php echo $_SESSION["user"]["name"] ?></h3>
<p><?php echo $_SESSION["user"]["email"] ?></p>

<p><a href="logout.php">Logout</a></p>
</div>
</div>

</div>

<div class="col-md-8">

<form action="" method="post" />


<div class="form-group">
<textarea class="form-control" placeholder="Apa yang kamu
pikirkan?"></textarea>
</div>
</form>

<?php for($i=0; $i < 6; $i++){ ?>


<div class="card mb-3">
<div class="card-body">
Lorem ipsum dolor sit amet consectetur adipisicing elit. Nobis
veritatis nemo ad recusandae labore nihil iure qui eum consequatur, officiis
facere quis sunt tempora impedit ullam reprehenderit facilis ex amet!
</div>
</div>
<?php } ?>

</div>

</div>
</div>

</body>
</html>

Halaman timeline.php hanya boleh dibuka oleh user yang sudah login saja. Maka kita harus
mengeceknya.

Bagaimana caranya?

Cukup dengan mengimpor file auth.php:

<?php require_once("auth.php"); ?>

Apa bila user-nya belum login, maka dia akan dialihkan ke halaman login. Sesuai kondisi logika
yang kita buat pada file auth.php.

Karena kita sudah mengimpor file auth.php, kita bisa menggunakan variabel $_SESSION di sini.
Mari kita coba ambil nilai yang disimpan di sana:

<img class="img img-responsive rounded-circle mb-3" width="160" src="img/<?php


echo $_SESSION['user']['photo'] ?>" />
<h3><?php echo $_SESSION["user"]["name"] ?></h3>
<p><?php echo $_SESSION["user"]["email"] ?></p>

Lalu membuat sebuah status dummy “lorem ipsum” sebanyak 6:

<?php for($i=0; $i < 6; $i++){ ?>


<div class="card mb-3">
<div class="card-body">
Lorem ipsum dolor sit amet consectetur adipisicing elit. Nobis veritatis
nemo recusandae labore nihil iure qui eum consequatur, officiis facere quis
sunt tempoimpedit ullam reprehenderit facilis ex amet!
</div>
</div>
<?php } ?>

Maka hasilnya:
Kereenn… 😍

Terakhir, tinggal buat logout.php saja nih.

Membuat Logout di PHP


Silahkan buka file logout.php, kemudian isi dengan kode berikut:

<?php

session_start();
session_unset("user");
header("Location: index.php");

Tungas dari file logout.php adalah menghancurkan atau menghapus session yang sudah dibuat.

Pertama-tama, kita harus memanggil fungsi session_start(), karena kita akan menggunakan
session di sini.

Setelah itu, kita hancurkan atau hapus variabel $_SESSION['user'] dengan fungsi
session_unset("user").

Penghancuran session selesai.

Selanjutnya kita alihkan ke halaman utama.

header("Location: index.php");

[🎁 Download Source Code Tutorial ini

Apa Selanjutnya?
Kita sudah berhasil membuat fitur login register. Selanjutnya tinggal dikembangkan saja.

Silahkan coba buat fitur:

 Edit Profile;
 Update Status;
 Cari Teman;
 Follow dan Unfollow;
 Realtime Chat;
 dan lain-lain.

Selamat coding…

Bacaan berikutnya:

 Cara Masuk ke phpMyAdmin Melalui cPanel dan Tanpa Login cPanel

petanikode.com
Memahami Skrip PHP untuk Upload File
Ahmad Muhardian
3-4 minutes

Bagaimana cara membuat fitur uplaoad file di PHP?

Pertanyaan ini cukup sering ditanyakan.

Karena itu, mari kita bahas bersama…

Upload file merupakan kegiatan pengiriman file dari client (pengunjung web) ke server.
Biar lebih gampang, mari kita bahas dengan coding

Silahkan buat dua file:

1. index.html untuk membuat form upload


2. upload.php untuk menerima dan memproses file yang di-upload

Isi file index.html seperti ini:

<!DOCTYPE html>
<html>
<head>
<title>Upload File</title>
</head>

<body>
<form action="upload.php" method="post" enctype="multipart/form-data">
Pilih file: <input type="file" name="berkas" />
<input type="submit" name="upload" value="upload" />
</form>
</body>
</html>

Fokus pada elemen <form>. Perhatikan di sana ada beberapa hal yang harus dipahami:
 atribut action="upload.php" artinya kita akan mengirim filenya ke upload.php;
 atribut enctype atribut ini wajib disertakan untuk form upload;
 atribut name akan menjadi nama indeks di dalam PHP.

Sekarang kita coba dulu isi file upload.php seperti ini:

<?php
echo "<pre>";
print_r($_FILES);
echo "</pre>";
?>

…dan coba lakukan upload.

Maka hasilnya kan seperti ini:

Apa artinya ini?

Artinya: file yang kita upload akan ditampung dalam variabel $_FILES. Variabel ini merupakan
sebuah array yang menampung data tentang file-nya.

Di sana ada beberapa indeks:

 name adalah nama file yang di-upload;


 type adalah jenis file yang di-upload;
 tmp_name adalah nama file yang berada di dalam direktori temporer server;
 error menyatakan apakah ada error atau tidak;
 size adalah ukuran file-nya.
Pertanyaan: Di mana lokasi file yang baru saja kita upload?

Lokasinya akan disimpan di direktori temporari atau direktori sementara di server.

Tugas kita berikutnya adalah memindahkan file ini ke dalam aplikasi kita.

Bagaimana caranya?

Ini akan kita bahas di langkah berikutnya.

Memindahkan File yang sudah di-upload


Setiap file yang kita upload ke server, filenya akan disimpan di dalam direktori temporer.

Untuk memindahkan file ini ke dalam direktori aplikasi kita, maka kita membutuhkan sebuah
fungsi bernama: move_uploaded_file().

Silahkan ubah kode upload.php menjadi seperti ini:

<?php

// ambil data file


$namaFile = $_FILES['berkas']['name'];
$namaSementara = $_FILES['berkas']['tmp_name'];

// tentukan lokasi file akan dipindahkan


$dirUpload = "terupload/";

// pindahkan file
$terupload = move_uploaded_file($namaSementara, $dirUpload.$namaFile);

if ($terupload) {
echo "Upload berhasil!<br/>";
echo "Link: <a href='".$dirUpload.$namaFile."'>".$namaFile."</a>";
} else {
echo "Upload Gagal!";
}

?>

Variabel $terupload akan bernilai true apabila file berhasil dipindahkan dan akan bernilai
false apabila gagal.

Sebelum mencoba, silahkan buat dulu direktori bernama terupload di dalam direktori project-
nya.
Sekarang mari kita coba upload file.

Jika berhasil, maka akan tampil seperti ini:


Untuk memastikan, coba periksa direktori terupload:

Berhasil 🎉…

Apa Selanjutnya?
Ruang lingkup pembahasan kita cuma sampai memahami konsep upload file di PHP saja. Untuk
langkah berikutnya, silahkan lakukan pengembangan sendiri.
Seperti:

 Menyeimpan data gambar di Database.


 Melakukan filter terhadap data yang di-upload.
 Melakukan pengolahan citra atau image processing dengan PHP
 dll.

Selamat belajar.

petanikode.com

Kode CRUD dalam Satu File PHP


Ahmad Muhardian
8-10 minutes

Pernah mebayangkan, tidak?

Membuat CRUD (Create, Read, Update, Delete) dalam satu file PHP.

Biasanya, membuat aplikasi CRUD dilakukan dengan membuat file terpisah. Masing-masing file
mewakili CRUD.

Misalkan file create.php untuk menambahkan data, read.php untuk menampikan data,
update.php untuk mengubah data, dan delete.php untuk menghapus data.

Bagaimana kalau, semuanya digabungkan ke dalam satu file PHP?

Pada kesempatan ini, saya ingin membagikan sebuah kode CRUD yang ditulis dalam satu file
PHP. Kode ini, saya buat dengan koneksi database menggunakan API mysqli.

Dalam kode, terdapat empat fungsi yang mewakili CRUD:

 Pertama fungsi tambah() untuk menambahkan data.


 Kedua fungsi tampil_data() untuk membaca data dan menampilkanya dalam bentuk
tabel.
 Ketiga fungsi ubah() untuk mengubah data.
 Terakhir ada fungsi hapus() untuk menghapus data.

Fungsi-fungsi tersebut dipanggil pada fungsi (program) utama.

Program utama bertindak sebagai router yang mengatur pemanggilan fungsi.


Misalkan, pada halaman Home, fungsi yang dipanggil adalah tambah_data() dan
tampil_data(). Hal ini bisa dilakukan dengan stuktur pemilihan Switch/Case.

Kode lengkapnya bisa dicek di github

<!DOCTYPE html>
<html>
<head>
<title>CRUD Petani Kode</title>
<link rel="icon" href="http://www.petanikode.com/favicon.ico" />
</head>
<body>

<?php
// --- koneksi ke database
$koneksi = mysqli_connect("localhost","root","kopi","pertanian") or
die(mysqli_error());
// --- Fngsi tambah data (Create)
function tambah($koneksi){

if (isset($_POST['btn_simpan'])){
$id = time();
$nm_tanaman = $_POST['nm_tanaman'];
$hasil = $_POST['hasil'];
$lama = $_POST['lama'];
$tgl_panen = $_POST['tgl_panen'];

if(!empty($nm_tanaman) && !empty($hasil) && !empty($lama) && !


empty($tgl_panen)){
$sql = "INSERT INTO tabel_panen (id,nama_tanaman, hasil_panen,
lama_tanam, tanggal_panen) VALUES(".$id.",'".$nm_tanaman."','".$hasil."','".
$lama."','".$tgl_panen."')";
$simpan = mysqli_query($koneksi, $sql);
if($simpan && isset($_GET['aksi'])){
if($_GET['aksi'] == 'create'){
header('location: index.php');
}
}
} else {
$pesan = "Tidak dapat menyimpan, data belum lengkap!";
}
}
?>
<form action="" method="POST">
<fieldset>
<legend><h2>Tambah data</h2></legend>
<label>Nama tanaman <input type="text" name="nm_tanaman"
/></label> <br>
<label>Hasil panen <input type="number" name="hasil" />
kg</label><br>
<label>Lama tanam <input type="number" name="lama" />
bulan</label> <br>
<label>Tanggal panen <input type="date" name="tgl_panen"
/></label> <br>
<br>
<label>
<input type="submit" name="btn_simpan" value="Simpan"/>
<input type="reset" name="reset" value="Besihkan"/>
</label>
<br>
<p><?php echo isset($pesan) ? $pesan : "" ?></p>
</fieldset>
</form>
<?php
}
// --- Tutup Fngsi tambah data
// --- Fungsi Baca Data (Read)
function tampil_data($koneksi){
$sql = "SELECT * FROM tabel_panen";
$query = mysqli_query($koneksi, $sql);

echo "<fieldset>";
echo "<legend><h2>Data Panen</h2></legend>";

echo "<table border='1' cellpadding='10'>";


echo "<tr>
<th>ID</th>
<th>Nama Tanaman</th>
<th>Hasil Panen</th>
<th>Lama Tanam</th>
<th>Tanggal Panen</th>
<th>Tindakan</th>
</tr>";

while($data = mysqli_fetch_array($query)){
?>
<tr>
<td><?php echo $data['id']; ?></td>
<td><?php echo $data['nama_tanaman']; ?></td>
<td><?php echo $data['hasil_panen']; ?> Kg</td>
<td><?php echo $data['lama_tanam']; ?> bulan</td>
<td><?php echo $data['tanggal_panen']; ?></td>
<td>
<a href="index.php?aksi=update&id=<?php echo
$data['id']; ?>&nama=<?php echo $data['nama_tanaman']; ?>&hasil=<?php echo
$data['hasil_panen']; ?>&lama=<?php echo $data['lama_tanam']; ?>&tanggal=<?php
echo $data['tanggal_panen']; ?>">Ubah</a> |
<a href="index.php?aksi=delete&id=<?php echo
$data['id']; ?>">Hapus</a>
</td>
</tr>
<?php
}
echo "</table>";
echo "</fieldset>";
}
// --- Tutup Fungsi Baca Data (Read)
// --- Fungsi Ubah Data (Update)
function ubah($koneksi){
// ubah data
if(isset($_POST['btn_ubah'])){
$id = $_POST['id'];
$nm_tanaman = $_POST['nm_tanaman'];
$hasil = $_POST['hasil'];
$lama = $_POST['lama'];
$tgl_panen = $_POST['tgl_panen'];

if(!empty($nm_tanaman) && !empty($hasil) && !empty($lama) && !


empty($tgl_panen)){
$perubahan = "nama_tanaman='".$nm_tanaman."',hasil_panen=".
$hasil.",lama_tanam=".$lama.",tanggal_panen='".$tgl_panen."'";
$sql_update = "UPDATE tabel_panen SET ".$perubahan." WHERE
id=$id";
$update = mysqli_query($koneksi, $sql_update);
if($update && isset($_GET['aksi'])){
if($_GET['aksi'] == 'update'){
header('location: index.php');
}
}
} else {
$pesan = "Data tidak lengkap!";
}
}

// tampilkan form ubah


if(isset($_GET['id'])){
?>
<a href="index.php"> &laquo; Home</a> |
<a href="index.php?aksi=create"> (+) Tambah Data</a>
<hr>

<form action="" method="POST">


<fieldset>
<legend><h2>Ubah data</h2></legend>
<input type="hidden" name="id" value="<?php echo $_GET['id'] ?
>"/>
<label>Nama tanaman <input type="text" name="nm_tanaman"
value="<?php echo $_GET['nama'] ?>"/></label> <br>
<label>Hasil panen <input type="number" name="hasil" value="<?
php echo $_GET['hasil'] ?>"/> kg</label><br>
<label>Lama tanam <input type="number" name="lama" value="<?
php echo $_GET['lama'] ?>"/> bulan</label> <br>
<label>Tanggal panen <input type="date" name="tgl_panen"
value="<?php echo $_GET['tanggal'] ?>"/></label> <br>
<br>
<label>
<input type="submit" name="btn_ubah" value="Simpan
Perubahan"/> atau <a href="index.php?aksi=delete&id=<?php echo $_GET['id'] ?
>"> (x) Hapus data ini</a>!
</label>
<br>
<p><?php echo isset($pesan) ? $pesan : "" ?></p>

</fieldset>
</form>
<?php
}

}
// --- Tutup Fungsi Update
// --- Fungsi Delete
function hapus($koneksi){
if(isset($_GET['id']) && isset($_GET['aksi'])){
$id = $_GET['id'];
$sql_hapus = "DELETE FROM tabel_panen WHERE id=" . $id;
$hapus = mysqli_query($koneksi, $sql_hapus);

if($hapus){
if($_GET['aksi'] == 'delete'){
header('location: index.php');
}
}
}

}
// --- Tutup Fungsi Hapus
// ===================================================================
// --- Program Utama
if (isset($_GET['aksi'])){
switch($_GET['aksi']){
case "create":
echo '<a href="index.php"> &laquo; Home</a>';
tambah($koneksi);
break;
case "read":
tampil_data($koneksi);
break;
case "update":
ubah($koneksi);
tampil_data($koneksi);
break;
case "delete":
hapus($koneksi);
break;
default:
echo "<h3>Aksi <i>".$_GET['aksi']."</i> tidaka ada!</h3>";
tambah($koneksi);
tampil_data($koneksi);
}
} else {
tambah($koneksi);
tampil_data($koneksi);
}
?>
</body>
</html>

Sementara untuk database yang digunakan bernama pertanian.


Database ini memiliki sebuah tabel bernama tabel_panen yang akan digunakan untuk
menyimpan data panen pertanian.

Berikut ini stuktur tabel_penen.

File SQL-nya tersedia di github: pertanian.sql

Tampilan atau hasil output kode masih dalam bentuk polos. Saya tidak menggunakan CSS
maupun Javascript. Hanya terdapat PHP dan HTML saja.

Berikut ini cuplikan tampilannya.

Halaman Home atau halaman utama (index.php):


Halaman (form) tambah data:
Halaman tampil data:
Halaman (form) ubah data:

Demo:
Tampilannya memang masih plain (polos).

Silahkan tambahkan CSS untuk menghiasnya 😃.

petanikode.com
6 Fungsi Enkripsi di PHP untuk
Mengamankan Data
Ahmad Muhardian
8-10 minutes

Data adalah harta karun yang paling berharga dalam sebuah sistem. Apabila itu dicuri…

…bencana besar bisa terjadi 😄.

Enkripsi adalah teknik untuk mengamankan data-data tersebut agar isinya tidak diketahui orang
lain.

Enkripsi biasanya dilakukan terhadap data-data sensitif seperti password.

Enkripsi akan menjamin data-data tetap aman meskipun berada di tangan orang lain, karena
mereka tidak tahu isi aslinya.

Pada kesempatan ini, saya akan membahas beberapa fungsi enkripsi yang sudah disediakan oleh
PHP, diantaranya: password_hash(), crypt(), md5(), hash(), sha1(), dan base64_encode().

Masing-masing fungsi memiliki algoritmanya tersendiri, ada yang kuat ada juga yang lemah.
Mari kita bahas satu-per-satu…

1. Fungsi password_hash()
Fungsi ini akan menghasilkan sebuah kode hash baru dengan metode one-way hashing. one-way
hasing artinya, hasil enkripsinya tidak bisa dikembalikan seperti semula (decrypt/decode).

Contoh:

<?php echo password_hash("PetaniKode", PASSWORD_DEFAULT); ?>

Hasilnya:

$2y$10$7PZGQcOAK6ZJXCAO3UFRC.hpv8hjKsQhy5Y7xBOhLNoFNTuxF3lr2

Fungsi ini sangat disarankan untuk mengenkripsi password, karena sulit didekripsi atau di-crack.

Sebelum mengenal fungsi ini, saya biasanya menggunakan fungsi md5(). Namun, fungsi md5()
sangat mudah di-crack.

Karena itu, sebaiknya menggunakan fungsi password_hash() untuk melindungi password.

Contoh penggunaan:

Sebelum menyimpan password ke database, sebaiknya dienkripsi terlebih dahulu:

<?php

$username = $_POST['username'];
// enkripsi dulu...
$password = password_hash($_POST['username'], PASSWORD_DEFAULT);

// query simpan
mysqli_query("INSERT INTO user (username, password) VALUE
('$username','$password')");

?>

Fungsi passowrd_hash() ini tidak bisa bekerja sendirian, dia memiliki teman bernama
password_verify().

Fungsi password_verify(), biasanya digunakaan saat membuat login untuk membandingkan


password yang dikirim user dengan password yang tersimpan pada database.

Contoh:

<?php
// ambil data dari form login
$username = $_POST['username']; //<-- ini belum aman dari sql injection :D

// ambil data dari database


$query = mysqli_query("SELECT * FROM user WHERE username='$username'");
$user = mysqli_fetch_assoc($query);

// bandingkan password yang dikirim dari form login dengan password


// yang ada di database
if( password_verify($_POST['password'], $user['password']) ) {
// login berhasil
} else {
// login gagal
}
?>

Tips: bila ingin menyimpan hasil dari fungsi password_hash() di database, pastikan bertipe
VARCHAR dengan panjang 255 karakter.

Contoh lengkapnya bisa dilihat di: Tutorial PHP dan MySQL: Membuat Login Register

2. Fungsi crypt()
Fungsi ini menghasilkan kode hash dengan menggunakan algoritma DES, Blowfish, dan MD5.

Contoh:

<?php echo crypt("petanikode", "garam"); ?>

Hasilnya:

Bila diperhatikan, susuan karakter yang dihasilkan mirip seperti karakter yang digunakan pada
alamat URL video youtube.

Mungkin saja youtube juga menggunakan algoritma yang sama dengan fungsi ini.

Pada contoh diatas, kita membarikan dua paramter kepada fungsinya.

Parameter pertama adalah teks yang akan dienkripsi.

Sementara, parameter kedua adalah salt (garam).

Garam

adalah sebuah data acak yang dimasukkan ke dalam fungsi enkripsi.

Fungsi ini juga dapat digunakan untuk mengamankan password, karena sulit di-decode.

3. Fungsi md5()
Fungsi ini akan menghasilkan kode hash sepanjang 32 karakter.

<?php echo md5("petanikode"); ?>

Hasilnya:

37ebda33c177743169404948552319df

Bila ditambahkan garam, hasilnya akan berubah.

Contoh:

<?php echo md5("petanikode", "g4r4m"); ?>

Hasilnya:

Fungsi ini juga dapat digunakan untuk mengamankan password.

Akan tetapi, kalau kita perhatikan kecepatan komputer zaman sekarang… Sangat mungkin untuk
melakukan decrypt.

4. Fungsi hash()
Fungsi ini akan menciptkan sebuah kode hash dengan algoritma tertentu.

Contoh:

<?php echo hash("md5", "petanikode"); ?>

Hasilnya:

37ebda33c177743169404948552319df
Pada contoh di atas, parameter "md5" adalah nama algortima yang akan digunakan untuk
mengenkripsi. Parameter "petanikode" adalah teks yang akan dienkripsi.

Bila ingin mengetahui nama-nama algoritma yang bisa digunakan, silahkan coba eksekusi kode
ini:

<?php
$data = "hello";

foreach (hash_algos() as $v) {


$r = hash($v, $data, false);
printf("%-12s %3d %s\n", $v, strlen($r), $r);
}
?>

Hasilnya:

md2 32 a9046c73e00331af68917d3804f70655
md4 32 866437cb7a794bce2b727acc0362ee27
md5 32 5d41402abc4b2a76b9719d911017c592
sha1 40 aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d
sha256 64 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e730
sha384 96 59e1748777448c69de6b800d7a33bbfb9ff1b463e44354c3553
sha512 128 9b71d224bd62f3785d96d46ad3ea3d73319bfbc2890caadae2d
ripemd128 32 789d569f08ed7055e94b4289a4195012
ripemd160 40 108f07b8382412612c048d07d13f814118445acd
ripemd256 64 cc1d2594aece0a064b7aed75a57283d9490fd5705ed3d66bf9a
ripemd320 80 eb0cf45114c56a8421fbcb33430fa22e0cd607560a88bbe14ce
whirlpool 128 0a25f55d7308eca6b9567a7ed3bd1b46327f0f1ffdc804dd8bb
tiger128,3 32 a78862336f7ffd2c8a3874f89b1b74f2
tiger160,3 40 a78862336f7ffd2c8a3874f89b1b74f2f27bdbca
tiger192,3 48 a78862336f7ffd2c8a3874f89b1b74f2f27bdbca39660254
tiger128,4 32 1c2a939f230ee5e828f5d0eae5947135
tiger160,4 40 1c2a939f230ee5e828f5d0eae5947135741cd0ae
tiger192,4 48 1c2a939f230ee5e828f5d0eae5947135741cd0aefeeb2adc
snefru 64 7c5f22b1a92d9470efea37ec6ed00b2357a4ce3c41aa6e28e3b
gost 64 a7eb5d08ddf2363f1ea0317a803fcef81d33863c8b2f9f6d7d1
adler32 8 062c0215
crc32 8 3d653119
crc32b 8 3610a686
haval128,3 32 85c3e4fac0ba4d85519978fdc3d1d9be
haval160,3 40 0e53b29ad41cea507a343cdd8b62106864f6b3fe
haval192,3 48 bfaf81218bbb8ee51b600f5088c4b8601558ff56e2de1c4f
haval224,3 56 92d0e3354be5d525616f217660e0f860b5d472a9cb99d6766be
haval256,3 64 26718e4fb05595cb8703a672a8ae91eea071cac5e7426173d4c
haval128,4 32 fe10754e0b31d69d4ece9c7a46e044e5
haval160,4 40 b9afd44b015f8afce44e4e02d8b908ed857afbd1
haval192,4 48 ae73833a09e84691d0214f360ee5027396f12599e3618118
haval224,4 56 e1ad67dc7a5901496b15dab92c2715de4b120af2baf661ecd92
haval256,4 64 2d39577df3a6a63168826b2a10f07a65a676f5776a0772e0a87
haval128,5 32 d20e920d5be9d9d34855accb501d1987
haval160,5 40 dac5e2024bfea142e53d1422b90c9ee2c8187cc6
haval192,5 48 bbb99b1e989ec3174019b20792fd92dd67175c2ff6ce5965
haval224,5 56 aa6551d75e33a9c5cd4141e9a068b1fc7b6d847f85c3ab16295
haval256,5 64 348298791817d5088a6de6c1b6364756d404a50bd64e645035f
5. Fungsi sha1()
Fungsi ini akan menghasilkan kode hash sepanjang 40 karakter. Mirip seperti fungsi md5().

Contoh:

<?php echo sha1("petanikode"); ?>

Hasilnya:

2e71f75dee7cb3e4b8e2e6ef8b8b5e0eab8f78a2

Seperti halnya fungsi md5(), fungsi ini juga akan menciptakan karakter aneh, bila ditambahkan
garam.

Contoh:

<?php echo sha1("petanikode", "ga12am"); ?>

Hasilnya:

6. Fungsi base64_encode()
Fungsi ini akan menghasilkan kode hash dari teks yang diinputkan dan bisa dikembalikan ke
bentuk semula dengan fungsi base64_decode().

Metode ini disebut two-way hasing.


Contoh:

<?php echo base64_encode("Petani kode"); ?>

Hasilnya:

Sementara itu, untuk mengembalikan (decrypt) atau decode dapat menggunakan fungsi
base64_decode().

Contoh:

<?php echo base64_decode("UGV0YW5pIGtvZGU="); ?>

Hasilnya:

Enkripsi dengan base64 tidak cocok digunakan untuk mengenkripsi password, karena sangat
mudah di-decode.

Akhir Kata…
Itulah 6 (enam) fungsi enkripsi di PHP untuk mengamankan data. Setiap fungsi memiliki
algoritmanya masing-masing.

Gunakan fungsi yang menggunakan metode one-way hasing untuk melindungi password. Tapi,
perlu diselidiki dulu…apakah fungsi tersebut masih aman atau tidak?

Sedangkan untuk fungsi yang menggunakan metode two-way hasing, sangat tidak disarankan
untuk melindungi password, karena memiliki fungsi untuk decode atau mengembalikannya dari
bentuk hash menjadi plain text.

Referensi:

 W3Schools.com — PHP crypt() Function

 Php.net — Cryptography Extensions


 Stackoverflow — Fundamental difference between Hashing and Encryption algorithms
Ada tiga jenis API MySQL yang disediakan di PHP:

1. mysql API ini sudah tidak didukung/dikembangkan lagi (kadalwarsa).


2. mysqli (mysql improvement) peningkatan dari API mysql
3. PDO (PHP Data Object)

API yang pertama sudah tidak didukung lagi sejak PHP versi 5.5.x dan digantikan dengan
mysqli yang lebih canggih. Karena mysqli dapat digunakan secara OOP dan prosedural.

Sedangkan API PDO digunakan untuk menghubungkan PHP dengan vendor database yang
lainnya. Jadi tidak hanya untuk MySQL saja.

Pada tutorial ini, kita akan belajar cara menghubungkan PHP dan MySQL menggunakan API
mysqli secara prosedural.

Menyiapkan Database
Pertama, mari kita membuat database bernama pendaftaran_siswa.
CREATE DATABASE `pendaftaran_siswa`;

Setelah itu, buatlah tabel di dalam database tersbut dengan nama calon_siswa.
Berikan tipe data kolomnya seperti ini.
Setelah itu klik Save.

CREATE TABLE `pendaftaran_siswa`.`calon_siswa` (


`id` INT NOT NULL AUTO_INCREMENT ,
`nama` VARCHAR(64) NOT NULL ,
`alamat` VARCHAR(255) NOT NULL ,
`jenis_kelamin` VARCHAR(16) NOT NULL ,
`agama` VARCHAR(16) NOT NULL ,
`sekolah_asal` VARCHAR(64) NOT NULL ,
PRIMARY KEY (`id`)
) ENGINE = InnoDB;
Kemudian kita coba isi dengan sebuah data, klik Insert.

Silahkan isi seperti berikut:


Klik Go untuk menyimpan.

INSERT INTO `calon_siswa` (`id`, `nama`, `alamat`, `jenis_kelamin`, `agama`,


`sekolah_asal`) VALUES (NULL, 'Lia', 'Jl. Mangga No. 3, Mataram', 'perempuan',
'islam', 'SMPN 32 Ampenan');

Membuat Proyek Baru


Setelah itu buat proyek/direktori baru di direktori htdocs atau /var/www/html.

mkdir /var/www/html/pendaftaran-siswa

Buat file-file PHP yang diperlukan

touch /var/www/html/pendaftaran-siswa/{config.php,index.php,list-
siswa.php,form-daftar.php,proses-pendaftaran.php,form-edit.php,proses-
edit.php,hapus.php}

Maka akan terbuat delapan file PHP kosong.


Keterangan:

 config.php — untuk menyimpan konfigurasi database;


 index.php — halaman utama;
 list-siswa.php — halaman untuk menampilkan data siswa;
 form-daftar.php — halaman formulir pendaftaran;
 proses-pendaftaran.php — skrip yang memproses pendaftaran;
 form-edit.php — form untuk edit data siswa;
 proses-edit.php — skrip untuk memproses edit/update;
 hapus.php — skrip untuk menghapus data dari database;

Cara Membuat Koneksi ke Dabase MySQL


Buka file config.php, silahkan isi dengan kode berikut:

<?php

$server = "localhost";
$user = "root";
$password = "kopi";
$nama_database = "pendaftaran_siswa";
$db = mysqli_connect($server, $user, $password, $nama_database);

if( !$db ){
die("Gagal terhubung dengan database: " . mysqli_connect_error());
}

?>

Untuk menghubungkan PHP dengan MySQL, kita menggunakan fungsi mysqli_connect()


dengan parameter alamat server, user, password, dan nama database.

Silahkan isi password sesuai dengan yang dibuat di servernya. Jika tidak menggunakan
passsword, maka dikosongkan saja.

Jika koneksi gagal, variabel $db akan bernilai false.

Karena itu, kita bisa mengeceknya dengan ekspresi if.

if( !$db ){
die("Gagal terhubung dengan database: " . mysqli_connect_error());
}

Berikut ini tampilan saat koneksinya gagal, karena password-nya salah.

Membuat Halaman Indeks


Rencananya kita akan menaruh dua link di halaman indeks. Link pertama untuk menuju ke
formulir pendaftaran dan link yang kedua untuk menuju ke halaman data siswa yang sudah
mendaftar.
Gamabarannya seperti ini…

Sekarang, silahkan isi file index.php dengan kode berikut:

<!DOCTYPE html>
<html>
<head>
<title>Pendaftaran Siswa Baru | SMK Coding</title>
</head>

<body>
<header>
<h3>Pendaftaran Siswa Baru</h3>
<h1>SMK Coding</h1>
</header>

<h4>Menu</h4>
<nav>
<ul>
<li><a href="form-daftar.php">Daftar Baru</a></li>
<li><a href="list-siswa.php">Pendaftar</a></li>
</ul>
</nav>

</body>
</html>

Tampilannya awalnya akan menjadi seperti ini:

Cara Menampilkan Data Tabel MySQL


Silahkan buka list-siswa.php dan isi dengan kode berikut:

<?php include("config.php"); ?>

<!DOCTYPE html>
<html>
<head>
<title>Pendaftaran Siswa Baru | SMK Coding</title>
</head>

<body>
<header>
<h3>Siswa yang sudah mendaftar</h3>
</header>

<nav>
<a href="form-daftar.php">[+] Tambah Baru</a>
</nav>
<br>

<table border="1">
<thead>
<tr>
<th>No</th>
<th>Nama</th>
<th>Alamat</th>
<th>Jenis Kelamin</th>
<th>Agama</th>
<th>Sekolah Asal</th>
<th>Tindakan</th>
</tr>
</thead>
<tbody>

<?php
$sql = "SELECT * FROM calon_siswa";
$query = mysqli_query($db, $sql);

while($siswa = mysqli_fetch_array($query)){
echo "<tr>";

echo "<td>".$siswa['id']."</td>";
echo "<td>".$siswa['nama']."</td>";
echo "<td>".$siswa['alamat']."</td>";
echo "<td>".$siswa['jenis_kelamin']."</td>";
echo "<td>".$siswa['agama']."</td>";
echo "<td>".$siswa['sekolah_asal']."</td>";

echo "<td>";
echo "<a href='form-edit.php?id=".$siswa['id']."'>Edit</a> | ";
echo "<a href='hapus.php?id=".$siswa['id']."'>Hapus</a>";
echo "</td>";

echo "</tr>";
}
?>

</tbody>
</table>

<p>Total: <?php echo mysqli_num_rows($query) ?></p>

</body>
</html>

Pertama kita membutuhkan koneksi ke database, maka kita harus mengimpor file config.php
agar variabel $db dapat dibaca.

<?php include("config.php"); ?>

Setelah itu, kita melakukan query untuk mengambil data siswa pada tabel calon_siswa.
$sql = "SELECT * FROM calon_siswa";
$query = mysqli_query($db, $sql);

Hasil dari query tersetbut, kemudian kita ubah menjadi array dengan fungsi
mysqli_fetch_array() dan hasilnya disimpan dalam variabel $siswa.

$siswa = mysqli_fetch_array($query)

Perulangan while akan mengulang selama masih ada isi dalam tabel. Kemudain, selama
perulangan…kita tampilkan datanya.

while($siswa = mysqli_fetch_array($query)){
echo "<tr>";

echo "<td>".$siswa['id']."</td>";
echo "<td>".$siswa['nama']."</td>";
echo "<td>".$siswa['alamat']."</td>";
echo "<td>".$siswa['jenis_kelamin']."</td>";
echo "<td>".$siswa['agama']."</td>";
echo "<td>".$siswa['sekolah_asal']."</td>";

echo "<td>";
echo "<a href='form-edit.php?id=".$siswa['id']."'>Edit</a> | ";
echo "<a href='hapus.php?id=".$siswa['id']."'>Hapus</a>";
echo "</td>";

echo "</tr>";
}

Perhatikan array $siswa, indeksnya sesuai dengan nama kolom pada database dan bersifat case
sensitive.

Terakhir, kita menampilkan total data yang ada di dalam tabel dengan fungsi
mysqli_num_rows().

echo mysqli_num_rows($query);

Maka hasilnya:
Gampang kaaan…! 😄

Cara Menambahkan Data ke Tabel MySQL


Ada dua file yang kita butuhkan untuk menambahkan data ke MySQL.

1. form-daftar.php halaman untuk form input;


2. proses-pendaftaran.php skrip untuk memproses data yang diinputkan.

Sebenarnya bisa saja dibuat dalam satu file, tapi biar lebih mudah dipahami…kita buat terpisah
saja.

Silahkan buka file form-daftar.php dan isi dengan kode berikut:

<!DOCTYPE html>
<html>
<head>
<title>Formulir Pendaftaran Siswa Baru | SMK Coding</title>
</head>

<body>
<header>
<h3>Formulir Pendaftaran Siswa Baru</h3>
</header>

<form action="proses-pendaftaran.php" method="POST">

<fieldset>

<p>
<label for="nama">Nama: </label>
<input type="text" name="nama" placeholder="nama lengkap" />
</p>
<p>
<label for="alamat">Alamat: </label>
<textarea name="alamat"></textarea>
</p>
<p>
<label for="jenis_kelamin">Jenis Kelamin: </label>
<label><input type="radio" name="jenis_kelamin" value="laki-laki">
Laki-laki</label>
<label><input type="radio" name="jenis_kelamin" value="perempuan">
Perempuan</label>
</p>
<p>
<label for="agama">Agama: </label>
<select name="agama">
<option>Islam</option>
<option>Kristen</option>
<option>Hindu</option>
<option>Budha</option>
<option>Atheis</option>
</select>
</p>
<p>
<label for="sekolah_asal">Sekolah Asal: </label>
<input type="text" name="sekolah_asal" placeholder="nama
sekolah" />
</p>
<p>
<input type="submit" value="Daftar" name="daftar" />
</p>

</fieldset>

</form>

</body>
</html>

Perhatikan pada tag pembuka <form>, di sana kita menggunakan atribut action dan method.

<form action="proses-pendaftaran.php" method="POST">


...

Atribut action digunakan untuk menentukan skrip mana yang akan memproses data inputan.
Sedangkan atribut method untuk menentukan metode pengiriman datanya.

Perhatikan juga pada input-nya, disana ada atribut name. Atribut ini untuk menentukan kunci
indeks dari array $_POST dan $_GET.
Selanjutnya silPriscilia Priscilia YulianiPriscilia Yuliani isi file proses-pendaftaran.php
dengan kode berikut:

<?php

include("config.php");

// cek apakah tombol daftar sudah diklik atau blum?


if(isset($_POST['daftar'])){

// ambil data dari formulir


$nama = $_POST['nama'];
$alamat = $_POST['alamat'];
$jk = $_POST['jenis_kelamin'];
$agama = $_POST['agama'];
$sekolah = $_POST['sekolah_asal'];

// buat query
$sql = "INSERT INTO calon_siswa (nama, alamat, jenis_kelamin, agama,
sekolah_asal) VALUE ('$nama', '$alamat', '$jk', '$agama', '$sekolah')";
$query = mysqli_query($db, $sql);

// apakah query simpan berhasil?


if( $query ) {
// kalau berhasil alihkan ke halaman index.php dengan status=sukses
header('Location: index.php?status=sukses');
} else {
// kalau gagal alihkan ke halaman indek.php dengan status=gagal
header('Location: index.php?status=gagal');
}

} else {
die("Akses dilarang...");
}

?>

Pertama kita ambil data yang dikirim dari formulir, semuanya tersimpan pada variabel $_POST.
Karena tadi kita menggunakan method POST pada form.

Setelah itu, kita buat query penyimpanan.

Lalu melakukan pengecekan, apakah query-nya berhasil atau gagal.

Untuk menampilkan pesan berhasil dan gagal pada halaman index.php, silahkan tambahkan
kode berikut di bawah tag <nav> pada file index.php:

<?php if(isset($_GET['status'])): ?>


<p>
<?php
if($_GET['status'] == 'sukses'){
echo "Pendaftaran siswa baru berhasil!";
} else {
echo "Pendaftaran gagal!";
}
?>
</p>
<?php endif; ?>

Hasilnya:

Sekarang kita sudah punya dua data.


Menghapus Data dari Tabel MySQL
Kita membutuhkan id untuk menentukan data yang akan dihapus. Karena itu, kita mengirimkan
id melalui query string.

Contoh:

http://localhost/pendaftaran-siswa/hapus.php?id=1

Query string-nya adalah ?id=1. Query string akan tersimpan dalam variabel $_GET.

Untuk lebih jelasnya, silahkan buka file hapus.php dan isi dengan kode berikut:

<?php

include("config.php");

if( isset($_GET['id']) ){

// ambil id dari query string


$id = $_GET['id'];

// buat query hapus


$sql = "DELETE FROM calon_siswa WHERE id=$id";
$query = mysqli_query($db, $sql);

// apakah query hapus berhasil?


if( $query ){
header('Location: list-siswa.php');
} else {
die("gagal menghapus...");
}

} else {
die("akses dilarang...");
}

?>

Sekarang coba klik link hapus, maka datanya akan langsung terhapus.

Sebenarnya cara ini kurang aman, karena kita tidak meberikan dialog konfirmasi kepada user.
Misalnya seperti mananyakan ‘Apakah yakin akan menghapus?’

Update Data di Tabel MySQL


Konsep update data hampir sama seperti menghapus.

Pertama kita ambil id data yang akan di-edit. Setelah itu kita melakukan query untuk mengambil
data dari database dan menampilkannya ke dalam form.

Setelah di-edit, selanjutnya melakukan query update untuk menyimpan perubahan.

Untuk lebih jelasnya, silahkan buka file form-edit.php dan isi dengan kode berikut:

<?php

include("config.php");

// kalau tidak ada id di query string


if( !isset($_GET['id']) ){
header('Location: list-siswa.php');
}

//ambil id dari query string


$id = $_GET['id'];

// buat query untuk ambil data dari database


$sql = "SELECT * FROM calon_siswa WHERE id=$id";
$query = mysqli_query($db, $sql);
$siswa = mysqli_fetch_assoc($query);

// jika data yang di-edit tidak ditemukan


if( mysqli_num_rows($query) < 1 ){
die("data tidak ditemukan...");
}

?>

<!DOCTYPE html>
<html>
<head>
<title>Formulir Edit Siswa | SMK Coding</title>
</head>

<body>
<header>
<h3>Formulir Edit Siswa</h3>
</header>

<form action="proses-edit.php" method="POST">

<fieldset>

<input type="hidden" name="id" value="<?php echo $siswa['id'] ?


>" />

<p>
<label for="nama">Nama: </label>
<input type="text" name="nama" placeholder="nama lengkap"
value="<?php echo $siswa['nama'] ?>" />
</p>
<p>
<label for="alamat">Alamat: </label>
<textarea name="alamat"><?php echo $siswa['alamat'] ?></textarea>
</p>
<p>
<label for="jenis_kelamin">Jenis Kelamin: </label>
<?php $jk = $siswa['jenis_kelamin']; ?>
<label><input type="radio" name="jenis_kelamin" value="laki-laki"
<?php echo ($jk == 'laki-laki') ? "checked": "" ?>> Laki-laki</label>
<label><input type="radio" name="jenis_kelamin" value="perempuan"
<?php echo ($jk == 'perempuan') ? "checked": "" ?>> Perempuan</label>
</p>
<p>
<label for="agama">Agama: </label>
<?php $agama = $siswa['agama']; ?>
<select name="agama">
<option <?php echo ($agama == 'Islam') ? "selected": "" ?
>>Islam</option>
<option <?php echo ($agama == 'Kristen') ? "selected": "" ?
>>Kristen</option>
<option <?php echo ($agama == 'Hindu') ? "selected": "" ?
>>Hindu</option>
<option <?php echo ($agama == 'Budha') ? "selected": "" ?
>>Budha</option>
<option <?php echo ($agama == 'Atheis') ? "selected": "" ?
>>Atheis</option>
</select>
</p>
<p>
<label for="sekolah_asal">Sekolah Asal: </label>
<input type="text" name="sekolah_asal" placeholder="nama sekolah"
value="<?php echo $siswa['sekolah_asal'] ?>" />
</p>
<p>
<input type="submit" value="Simpan" name="simpan" />
</p>

</fieldset>

</form>

</body>
</html>

Ada beberapa hal yang perlu diperhatikan dalam kode tersebut.

Pertama kita mengubah data dari hasil query menjadi array dengan menggunakan fungsi
mysqli_fetch_assoc().

Kenapa menggunakan fungsi tersebut?

Karena data yang akan kita ambil adalah satu baris dan agar indeks array-nya menggunakan
nama kolom.

Contoh hasilnya seperti ini:

Array
(
[id] => 1
[nama] => Lia
[alamat] => Jl. Mangga No. 3, Mataram
[jenis_kelamin] => perempuan
[agama] => Islam
[sekolah_asal] => SMPN 32 Ampenan
)

Kemudian data tersebut kita tampilkan untuk menjadi nilai default pada form.
Jangan lupa untuk membuat input id dengan tipe hidden untuk menyimpan id data yang akan
di-update.

<input type="hidden" name="id" value="<?php echo $siswa['id'] ?>" />

Untuk input radio dan select, kita menggunakan operator ternary agar bisa membuat atribut
checked dan selected.

<p>
<label for="jenis_kelamin">Jenis Kelamin: </label>
<?php $jk = $siswa['jenis_kelamin']; ?>
<label><input type="radio" name="jenis_kelamin" value="laki-laki" <?php
echo ($jk == 'laki-laki') ? "checked": "" ?>> Laki-laki</label>
<label><input type="radio" name="jenis_kelamin" value="perempuan" <?php
echo ($jk == 'perempuan') ? "checked": "" ?>> Perempuan</label>
</p>
<p>
<label for="agama">Agama: </label>
<?php $agama = $siswa['agama']; ?>
<select name="agama">
<option <?php echo ($agama == 'Islam') ? "selected": "" ?
>>Islam</option>
<option <?php echo ($agama == 'Kristen') ? "selected": "" ?
>>Kristen</option>
<option <?php echo ($agama == 'Hindu') ? "selected": "" ?
>>Hindu</option>
<option <?php echo ($agama == 'Budha') ? "selected": "" ?
>>Budha</option>
<option <?php echo ($agama == 'Atheis') ? "selected": "" ?
>>Atheis</option>
</select>
</p>

Ketika kita lihat dari inspect elements…maka akan tampil seperti ini:
Setelah itu, silahkan isi file proses-edit.php dengan kode berikut:

<?php

include("config.php");

// cek apakah tombol simpan sudah diklik atau blum?


if(isset($_POST['simpan'])){

// ambil data dari formulir


$id = $_POST['id'];
$nama = $_POST['nama'];
$alamat = $_POST['alamat'];
$jk = $_POST['jenis_kelamin'];
$agama = $_POST['agama'];
$sekolah = $_POST['sekolah_asal'];

// buat query update


$sql = "UPDATE calon_siswa SET nama='$nama', alamat='$alamat',
jenis_kelamin='$jk', agama='$agama', sekolah_asal='$sekolah' WHERE id=$id";
$query = mysqli_query($db, $sql);
// apakah query update berhasil?
if( $query ) {
// kalau berhasil alihkan ke halaman list-siswa.php
header('Location: list-siswa.php');
} else {
// kalau gagal tampilkan pesan
die("Gagal menyimpan perubahan...");
}

} else {
die("Akses dilarang...");
}

?>

Silahkan simpan dan cobalah untuk mengedit data.

*Nama Lia di-update menjadi Priscilia Yuliani.

Source code dari tutorial ini tersedia di github: https://github.com/petanikode/tutorial-php-mysql

Akhir Kata…
Terima kasih sudah mengikuti tutorial ini sampai akhir.

Kalau ada yang belum jelas, silahkan diskusikan melalui komentar.

Selamat belajar. 😄

Anda mungkin juga menyukai