OOP : CRUD With PHP Native

Apa itu OOP?

OOP (Object-Oriented Programming) atau Pemrograman Berorientasi Objek adalah paradigma pemrograman yang digunakan dalam PHP, yang memungkinkan Anda untuk mengorganisasi kode Anda ke dalam objek-objek yang memiliki properti (variabel) dan metode (fungsi). Dalam PHP, Anda dapat membuat kelas, yang merupakan blueprint atau cetakan untuk objek, dan kemudian membuat objek berdasarkan kelas tersebut.

Langkah – Langkah Membuat CRUD

  • Membuat Koneksi dengan database
<?php
 
class Database
{
    private $host = "localhost";
    private $user = "root";
    private $pass = "";
    private $name = "contoh_crud";
    private $conn;
 
    public function __construct()
    {
        $this->conn = new mysqli($this->host, $this->user, $this->pass, $this->name);
 
        if ($this->conn->connect_error) {
            die("Koneksi Dengan Database Gagal: " . $this->conn->connect_error);
        }
    }
 
    public function getConnection()
    {
        return $this->conn;
    }
}
 
$database = new Database();
$link = $database->getConnection();
 
if (!$link) {
    die("Koneksi Dengan Database Gagal: " . mysqli_connect_errno() . " - " . mysqli_connect_error());
}
  • Setelah Membuat Koneksi langsung saja membuat tampilan nya 
<html lang="en">
 
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Contoh Crud</title>
</head>
 
<body>
    <h1>Data Produk</h1>
    <a href="create.php">Tambahkan Data</a>
    <table border='1'>
        <tr>
            <th>No</th>
            <th>Nama</th>
            <th>Harga</th>
            <th>Jumlah</th>
            <th>Aksi</th>
        </tr>
        <?php
        require_once 'koneksi.php';
 
        $db = new Database();
        $conn = $db->getConnection();
        $query = "SELECT * FROM produk";
        $result = $conn->query($query);
 
        if ($result->num_rows > 0) {
            $no = 1;
            while ($row = $result->fetch_assoc()) {
                echo "<tr>";
                echo "<td>" . $no . "</td>";
                echo "<td>" . $row['nama'] . "</td>";
                echo "<td>" . $row['harga'] . "</td>";
                echo "<td>" . $row['jumlah'] . "</td>";
                echo "<td><a href='edit.php?id=" . $row['id'] . "'>Edit</a> | <a href='delete.php?id=" . $row['id'] . "'>Delete</a></td>";
                echo "</tr>";
                $no++;
            }
        }
        ?>
    </table>
</body>
 
</html> 
  • Membuat Form & Controller Untuk Menambahkan Data
    Create.php
<?php
require_once 'koneksi.php';
require_once 'create_proses.php';
 
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $nama = $_POST['nama'];
    $harga = $_POST['harga'];
    $jumlah = $_POST['jumlah'];
 
    $database = new Database();
    $db = $database->getConnection();
 
    $produk = new Produk($db);
 
    if ($produk->createProduct($nama, $harga, $jumlah)) {
        header("Location: index.php");
        exit;
    } else {
        echo "Gagal menambahkan data.";
    }
}
 
?>
 
<!DOCTYPE html>
<html>
 
<head>
    <title>Tambah Produk Baru</title>
</head>
 
<body>
    <h2>Tambah Produk Baru</h2>
    <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
        <label for="nama">Nama:</label>
        <input type="text" name="nama" required><br>
 
        <label for="harga">Harga:</label>
        <input type="text" name="harga" required><br>
 
        <label for="jumlah">Jumlah:</label>
        <input type="text" name="jumlah" required><br>
 
        <input type="submit" value="Simpan">
    </form>
    <br>
    <a href="index.php">Kembali ke Daftar Produk</a>
</body>
 
</html>

Create_proses.php

<?php
class Produk
{
    private $conn;
    private $table = 'produk';
 
    public function __construct($db)
    {
        $this->conn = $db;
    }
 
    public function createProduct($nama, $harga, $jumlah)
    {
        $query = "INSERT INTO " . $this->table . " (nama, harga, jumlah) VALUES (?, ?, ?)";
        $stmt = $this->conn->prepare($query);
 
        $nama = htmlspecialchars(strip_tags($nama));
        $harga = htmlspecialchars(strip_tags($harga));
        $jumlah = htmlspecialchars(strip_tags($jumlah));
 
        $stmt->bind_param("sss", $nama, $harga, $jumlah);
 
        if ($stmt->execute()) {
            return true;
        } else {
            return false;
        }
    }
}
  • Selanjutnya kita membuat Form Edit & Controllernya
    Edit.php
<?php
require_once 'koneksi.php';
 
class Produk
{
    private $conn;
 
    public function __construct($db)
    {
        $this->conn = $db;
    }
 
    public function getProductById($id)
    {
        $query = "SELECT nama, harga, jumlah FROM produk WHERE id = ?";
        $stmt = $this->conn->prepare($query);
        $stmt->bind_param("i", $id);
        $stmt->execute();
        $result = $stmt->get_result();
 
        if ($result->num_rows > 0) {
            return $result->fetch_assoc();
        } else {
            return null;
        }
    }
}
 
if (isset($_GET['id'])) {
    $id = $_GET['id'];
 
    $database = new Database();
    $db = $database->getConnection();
 
    $produk = new Produk($db);
    $productData = $produk->getProductById($id);
 
    if ($productData) {
        $nama = $productData['nama'];
        $harga = $productData['harga'];
        $jumlah = $productData['jumlah'];
    } else {
        echo "Data tidak ditemukan.";
        exit;
    }
} else {
    echo "ID Produk tidak ditemukan.";
}
?>
 
<!DOCTYPE html>
<html lang="en">
 
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Edit Produk</title>
</head>
 
<body>
    <h2>Edit Produk</h2>
    <form method="post" action="edit_proses.php">
        <input type="hidden" name="id" value="<?php echo $id; ?>">
 
        <label for="nama">Nama:</label>
        <input type="text" name="nama" value="<?php echo $nama; ?>" required><br>
 
        <label for="harga">Harga:</label>
        <input type="text" name="harga" value="<?php echo $harga; ?>" required><br>
 
        <label for="jumlah">Jumlah:</label>
        <input type="text" name="jumlah" value="<?php echo $jumlah; ?>" required><br>
 
        <input type="submit" value="Simpan Perubahan">
    </form>
    <br>
    <a href="index.php">Kembali ke Daftar Produk</a>
</body>
 
</html>

edit_proses.php

<?php
require_once 'koneksi.php';
 
class Produk
{
    private $conn;
 
    public function __construct($db)
    {
        $this->conn = $db;
    }
 
    public function updateProduct($id, $nama, $harga, $jumlah)
    {
        $query = "UPDATE produk SET nama = ?, harga = ?, jumlah = ? WHERE id = ?";
        $stmt = $this->conn->prepare($query);
        $stmt->bind_param("sssi", $nama, $harga, $jumlah, $id);
 
        if ($stmt->execute()) {
            return true;
        } else {
            return false;
        }
    }
}
 
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $id = $_POST['id'];
    $nama = $_POST['nama'];
    $harga = $_POST['harga'];
    $jumlah = $_POST['jumlah'];
 
    $database = new Database();
    $db = $database->getConnection();
 
    $produk = new Produk($db);
 
    if ($produk->updateProduct($id, $nama, $harga, $jumlah)) {
        header("Location: index.php");
        exit;
    } else {
        echo "Gagal memperbarui data.";
    }
}
  • Dan yang terakhir kita akan membuat fitur delete
    Delete.php
<?php
require_once 'koneksi.php';
 
class Produk
{
    private $conn;
 
    public function __construct($db)
    {
        $this->conn = $db;
    }
 
    public function deleteProduct($id)
    {
        $query = "DELETE FROM produk WHERE id = ?";
        $stmt = $this->conn->prepare($query);
        $stmt->bind_param("i", $id);
 
        if ($stmt->execute()) {
            return true;
        } else {
            return false;
        }
    }
}
 
if (isset($_GET['id'])) {
    $id = $_GET['id'];
 
    $database = new Database();
    $db = $database->getConnection();
 
    $produk = new Produk($db);
 
    if ($produk->deleteProduct($id)) {
        header("Location: index.php");
        exit;
    } else {
        echo "Gagal menghapus produk.";
        exit;
    }
} else {
    echo "ID Produk tidak ditemukan.";
}

Subscribe

Related articles

Web Developer | Pengalaman Magang di Udacoding

Udacoding menjadi salah satu tempat, dimana peserta magang...

Segala Hal yang Perlu Kamu Tahu tentang Dark Theme

Ngomongin mode gelap, kayaknya sekarang lagi jadi yang hits...

TinyMCE: Solusi Praktis untuk Konten Web yang Lebih Interaktif

TinyMCE adalah alat untuk membuat dan mengedit teks di...
Previous article
Next article

LEAVE A REPLY

Please enter your comment!
Please enter your name here