Belajar Membuat CRUD PHP Dengan MySQL
CRUD adalah singkatan dari Create, Read, Update, dan Delete, yang merupakan operasi dasar dalam manipulasi data pada database. Dalam tutorial ini, kita akan membangun sebuah aplikasi sederhana menggunakan PHP untuk melaksanakan keempat operasi tersebut dalam satu halaman pada tabel database MySQL.
Kita akan membuat sebuah aplikasi dengan tampilan seperti pada gambar di bawah dengan sebuah tabel yang menampilkan data dari database di sisi frontend. Terdapat beberapa tombol untuk mengubah data yang ada di database lewat antarmuka yang kita buat. Tabel libalary yang kita buat akan berisi informasi pengguna seperti Category, Picture, Name, Publisher, Count
Langkah-Langkah Pembuatan CRUD
1. Membuat Database Mysql
1 2 3 4 5 6 7 8 9 10 11 12 13 |
/* Create Database and Table */ CREATE DATABASE zawata; USE zawata; CREATE TABLE `library` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `name` VARCHAR(255) NOT NULL, `category` VARCHAR(255) NOT NULL, `publisher` VARCHAR(255) NOT NULL, `count` INT NOT NULL, `picture` VARCHAR(255) NOT NULL, PRIMARY KEY (`id`) ); |
Pertama kita buat terlebih dahulu file database.sql
kemudian kita impor file database.sql
ini ke dalam database (menggunakan PHPMyAdmin).
2. Membuat file config.php
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php /** * using mysqli_connect for database connection */ $databaseHost = 'localhost'; $databaseName = 'zawata'; $databaseUsername = 'root'; $databasePassword = ''; $mysqli = mysqli_connect($databaseHost, $databaseUsername, $databasePassword, $databaseName); ?> |
Sebelum kita mulai kita buat forder di server kita jika kamu pakai laragon maka laragon/www dan jika xampp maka di xamppp/htdocs. Buat forder dengan nama bebas File config.php berfungsi untuk menyimpan informasi terkait database, seperti host, username, dan password. Sebagian besar server lokal menggunakan konfigurasi standar, tetapi Anda dapat menyesuaikannya sesuai dengan detail host dan database yang Anda gunakan.
Untuk menghubungkan PHP dengan MySQL, kita menggunakan fungsi mysqli_connect(), di mana:
Parameter pertama adalah alamat server,
Parameter kedua adalah username database,
Parameter ketiga adalah password pengguna,
Parameter keempat adalah nama database.
Pastikan untuk mengisi password sesuai dengan yang telah dibuat di server Anda. Jika tidak menggunakan password, cukup isi dengan string kosong (“”).
3. Membuat file index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
<?php // Include database connection file include_once("config.php"); // Fetch all library data from database $result = mysqli_query($mysqli, "SELECT * FROM library ORDER BY id DESC"); ?> <html> <head> <title>Homepage</title> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css"> </head> <body> <br> <div class="container"> <button type="button" class="btn btn-primary" onclick="location.href='add.php'">Add New Book</button><br /><br /> <table class="table table-striped"> <thead> <tr> <th scope="col">No</th> <th scope="col">Picture</th> <th scope="col">Name</th> <th scope="col">Category</th> <th scope="col">Publisher</th> <th scope="col">Count</th> <th scope="col">Update</th> </tr> </thead> <tbody> <?php $no = 1; while ($user_data = mysqli_fetch_array($result)) { echo "<tr>"; echo "<td>" . $no . "</td>"; $no++; // Menampilkan gambar echo "<td><img src='picture/" . $user_data['picture'] . "' width='100'></td>"; echo "<td>" . $user_data['name'] . "</td>"; echo "<td>" . $user_data['category'] . "</td>"; echo "<td>" . $user_data['publisher'] . "</td>"; echo "<td>" . $user_data['count'] . "</td>"; echo "<td> <a href='edit.php?id=$user_data[id]'>Edit</a> | <a href='delete.php?id=$user_data[id]' onclick=\"return confirm('Are you sure you want to delete this item?')\">Delete</a> </td></tr>"; } ?> </tbody> </table> </div> </body> </html> |
File add.php digunakan untuk menambahkan buku baru. Sebelum itu buat dulu forder picture. Formulir HTML digunakan sebagai antarmuka untuk menerima input data buku. Setelah pengguna mengisi dan mengirimkan formulir, data tersebut akan diproses menggunakan query MySQL INSERT untuk menyimpannya ke dalam database.
4. Membuat file Add.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
<?php // Include database connection file include_once("config.php"); if (isset($_POST['submit'])) { $name = $_POST['name']; $category = $_POST['category']; $publisher = $_POST['publisher']; $count = $_POST['count']; // Upload gambar $target_dir = "picture/"; $target_file = $target_dir . basename($_FILES["picture"]["name"]); move_uploaded_file($_FILES["picture"]["tmp_name"], $target_file); $picture = $_FILES['picture']['name']; // Insert data ke database $result = mysqli_query($mysqli, "INSERT INTO library(picture, name, category, publisher, count) VALUES('$picture', '$name', '$category', '$publisher', '$count')"); // Redirect ke index.php setelah berhasil tambah data header("Location: index.php"); } ?> <html> <head> <title>Add New User</title> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css"> </head> <body> <br> <div class="container"> <a href="index.php" class="btn btn-secondary">Home</a> <br /><br /> <form action="add.php" method="post" enctype="multipart/form-data"> <div class="form-group"> <label for="picture">Picture</label> <input type="file" class="form-control-file" id="picture" name="picture" required> </div> <div class="form-group"> <label>Name</label> <input type="text" class="form-control" name="name" required> </div> <div class="form-group"> <label>Category</label> <input type="text" class="form-control" name="category" required> </div> <div class="form-group"> <label>Publisher</label> <input type="text" class="form-control" name="publisher" required> </div> <div class="form-group"> <label>Count</label> <input type="number" class="form-control" name="count" required> </div> <button type="submit" name="submit" class="btn btn-success">Add User</button> </form> </div> </body> </html> |
5. Membuat file edit.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
<?php // Include database connection file include_once("config.php"); // Check if form is submitted for update if (isset($_POST['update'])) { $id = $_POST['id']; $name = $_POST['name']; $category = $_POST['category']; $publisher = $_POST['publisher']; $count = $_POST['count']; // Ambil gambar lama dari input hidden $old_picture = $_POST['old_picture']; // Periksa apakah pengguna mengunggah gambar baru if ($_FILES['picture']['name']) { $picture = $_FILES['picture']['name']; $target_dir = "picture/"; $target_file = $target_dir . basename($_FILES["picture"]["name"]); // Pindahkan gambar baru ke folder move_uploaded_file($_FILES["picture"]["tmp_name"], $target_file); } else { // Jika tidak ada gambar baru, gunakan gambar lama $picture = $old_picture; } // Update data ke database $result = mysqli_query($mysqli, "UPDATE library SET picture='$picture', name='$name', category='$category', publisher='$publisher', count='$count' WHERE id=$id"); // Redirect ke homepage setelah update header("Location: index.php"); } // Ambil data berdasarkan ID $id = $_GET['id']; $result = mysqli_query($mysqli, "SELECT * FROM library WHERE id=$id"); while ($user_data = mysqli_fetch_array($result)) { $picture = $user_data['picture']; $name = $user_data['name']; $category = $user_data['category']; $publisher = $user_data['publisher']; $count = $user_data['count']; } ?> <html> <head> <title>Edit Data</title> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css"> </head> <body> <br> <div class="container"> <a href="index.php" class="btn btn-secondary">Home</a> <br/><br/> <form name="update_user" method="post" action="edit.php" enctype="multipart/form-data"> <input type="hidden" name="id" value="<?php echo $id; ?>"> <input type="hidden" name="old_picture" value="<?php echo $picture; ?>"> <div class="form-group"> <label>Current Picture</label><br> <img src="picture/<?php echo $picture; ?>" width="150"> </div> <div class="form-group"> <label>Change Picture</label> <input type="file" class="form-control-file" name="picture"> </div> <div class="form-group"> <label>Name</label> <input type="text" class="form-control" name="name" value="<?php echo $name; ?>" required> </div> <div class="form-group"> <label>Category</label> <input type="text" class="form-control" name="category" value="<?php echo $category; ?>" required> </div> <div class="form-group"> <label>Publisher</label> <input type="text" class="form-control" name="publisher" value="<?php echo $publisher; ?>" required> </div> <div class="form-group"> <label>Count</label> <input type="number" class="form-control" name="count" value="<?php echo $count; ?>" required> </div> <button type="submit" name="update" class="btn btn-primary">Update</button> </form> </div> </body> </html> |
File edit.php digunakan untuk memperbarui data pengguna. Dengan file ini, pengguna dapat mengedit informasi mereka, lalu menyimpannya ke dalam database. Setelah proses pembaruan berhasil, pengguna akan diarahkan kembali ke halaman utama.
6. Membuat file delete.php
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php // include database connection file include_once("config.php"); // Get id from URL to delete that user $id = $_GET['id']; // Delete user row from table based on given id $result = mysqli_query($mysqli, "DELETE FROM library WHERE id=$id"); // After delete redirect to Home, so that latest user list will be displayed. header("Location:index.php"); ?> |
Jangan lupa lihat produk lain di zawata