CRUD database dengan php pdo

Pada tutorial ini kita akan belajar bagaimana membuat aplikasi database sederhana yang didalamnya terdapat dasar-dasar tentang bagaimana menampilkan, menambah, meng-update dan hapus data database menggunakan PDO ( PHP Data Objects )

Skenarionya, kita akan membuat inputan tentang data user yang didalamnya terdapat informasi tentang username dan password. Jadi kita dapat menambahkan user baru, mengedit dan menghapusnya.

Koneksi database dengan PDO

Untuk koneksi ke database menggunakan PDO caranya seperti dibawah. Parameter pertama saat membuat instance dari class PDO adalah DSN ( Data Source Name ) yang berisi informasi host dan nama database, kemudian user, password dan option.


<?php

$pdo = new PDO('mysql:host=localhost;dbname=crud', $user, $pass, $options);

Membuat file config.php

Kita akan membuat variable untuk mengisi parameter PDO seperti diatas dalam file config.php sehingga jika kita memerlukannya tinggal panggil saja. Silahkan sobat buat file dengan nama config.php dan isinya seperti dibawah ini, sesuaikan isinya dengan punya sobat jika punya sobat berbeda


<?php

$config = array(
    'dsn'  => 'mysql:host=localhost;port=3306;dbname=crud',
    'user' => 'root',
    'pass' => '',
    'opt'  => array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION) 
);

Membuat Database

Sebelumnya, kita perlu membuat database terlebih dahulu. Disini kita akan buat database dengan nama crud dan didalamnya kita akan buat tabel dengan nama users yang terdiri dari kolom id sebagai primary key dan kita setting AUTO_INCREMENT kemudian ada kolom username dan password .

Dalam membuat database dan tabel ini kita akan menggunakan script php. Pertama sobat buat dulu file dengan nama crud.sql yang isinya adalah script sql untuk create database dan table. Isinya seperti dibawah:


CREATE DATABASE crud;

USE crud;

CREATE TABLE users(
    id INT(11) AUTO_INCREMENT PRIMARY KEY,
    username varchar(100) UNIQUE NOT NULL,
    password varchar(100) NOT NULL
);

Kemudian buat file dengan nama install.php dan sobat isikan dengan script dibawah ini:


<?php

require_once 'config.php';

try
{    
    $pdo = new PDO('mysql:host=localhost', $config['user'], $config['pass'], $config['opt']);
    
    $sql = file_get_contents('crud.sql');
    
    $pdo->exec($sql);
    
    echo 'Successfully created!';
    
}
catch(PDOException $e)
{    
    die('Failed to create : ' . $e->getMessage());   
}

Pada file install.php diatas parameter pertama class PDO yaitu DSN ( Data Source Name ) kita tidak ambil dari config karena kita belum buat database dan kita isikan secara manual yaitu dengan nama hostnya saja.

Setelah itu sobat panggil file install.php diatas pada web server sobat melalui browser. Jika database dan tabel berhasil dibuat akan muncul pesan sukes dan kalo gagal akan muncul informasi tentang errornya.

crud-database-dengan-php-pdo-install.pngcrud-database-dengan-php-pdo-database.png

Membuat file index.php

File index.php ini berfungsi sebagai halaman utama yang akan menampilkan list user yang sudah disimpan pada database dan juga navigasi untuk kehalaman lainnya yaitu halaman untuk menambahkan data, edit dan hapus. Adapun isi dari file index.php adalah seperti dibawah ini



<?php

require_once 'config.php';

try
{
    $pdo = new PDO($config['dsn'], $config['user'], $config['pass'], $config['opt']);
    
    $statement = $pdo->prepare('SELECT * FROM users');
    $statement->execute();
    
    $results = $statement->fetchAll();
    
}
catch(PDOException $e)
{
    die('Error : ' . $e->getMessage());
}

?>

<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <meta name="description" content="">
        <meta name="author" content="">
	    <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>List - Crud PHP PDO</title>
        <style type="text/css">
        
            table{
                border-collapse: collapse;
                border:1px solid #E1E1E1;
            }
            
            th, td{
                padding:5px 10px;
                border:1px solid #E1E1E1;
            }
            
        </style>
    </head>
    <body>
        
    <h1>User List</h1>
        
    <p><a href="create.php">[+] Create</a></p>
    
    <table>
        <thead>
            <tr>
                <th>ID</th>
                <th>Username</th>
                <th>Password</th>
                <th>#</th>
                <th>#</th>
            </tr>
        </thead> 
        <tbody>
            
            <?php
            
            foreach($results as $users){
                
                ?>
                
                <tr>
                    <td><?php echo $users['id']; ?></td>
                    <td><?php echo $users['username']; ?></td>
                    <td><?php echo $users['password']; ?></td>
                    <td><a href="edit.php?id=<?php echo $users['id']; ?>">Edit</a></td>
                    <td><a href="delete.php?id=<?php echo $users['id']; ?>">Delete</a></td>
                </tr>
            
                <?php   
            }
            
            ?>
            
        </tbody>
    </table>
        
    </body>
</html>

Tampilan halaman index.php pada browser

crud-database-dengan-php-pdo-index.png

Membuat file create.php

File create.php berfungsi untuk menambahkan data ke database. Isi dari file create.php seperti dibawah ini


<?php

require_once 'config.php';

if(isset($_POST['submit']))
{
    $username = $_POST['username'];
    $password = md5($_POST['password']);
    
    try
    {
        $pdo = new PDO($config['dsn'], $config['user'], $config['pass'], $config['opt']);
        $pdo->beginTransaction();
            
        $statement = $pdo->prepare('INSERT INTO users (username, password) VALUES (?,?)');
        $statement->bindValue(1, $username, PDO::PARAM_STR);
        $statement->bindValue(2, $password, PDO::PARAM_STR);
        $statement->execute();
        
        $pdo->commit();
        
        $message = 'Successfully Create!';
    }
    catch(PDOException $e)
    {
        $pdo->rollBack();
        
        $message = 'Failed : ' . $e->getMessage();
    }

}


?>


<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <meta name="description" content="">
        <meta name="author" content="">
	    <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>List - Crud PHP PDO</title>
        <style type="text/css">
        
            label{
                display: block;
                margin:10px 0;
            }
            
        </style>
    </head>
    <body>
        
    <h1>Create User</h1>
        
    <p><a href="index.php">[-] Back</a></p>
        
    <?php
    
    if(isset($message) && !empty($message))
    {
        echo '<p>'.$message.'</p>';
    }
        
    ?>
    
    <form method="post">
        <label for="username">Username</label>
        <input type="text" name="username" id="username" placeholder="Username">
        <label for="password">Password</label>
        <input type="password" name="password" id="password" placeholder="Password"><br /><br />
        <input type="submit" name="submit" value="Save">
    </form>
        
    </body>
</html>

Tampilan halaman create.php pada browser

crud-database-dengan-php-pdo-create.png

Membuat file edit.php

File edit.php berfungsi untuk edit dan update data. scriptnya seperti dibawah ini.



<?php

require_once 'config.php';

if(isset($_POST['submit']))
{
    $id       = (int) $_POST['id'];
    $username = $_POST['username'];
    $password = $_POST['password'];
    
    try
    {
        $pdo = new PDO($config['dsn'], $config['user'], $config['pass'], $config['opt']);
        $pdo->beginTransaction();
        
        if(empty($password))
        {
            $statement = $pdo->prepare('UPDATE users SET username=? WHERE id=?');
            $statement->bindValue(1, $username, PDO::PARAM_STR);
            $statement->bindValue(2, $id, PDO::PARAM_INT);
            $statement->execute();
        }
        else
        {
            $password = md5($password);
            
            $statement = $pdo->prepare('UPDATE users SET username=?, password=? WHERE id=?');
            $statement->bindValue(1, $username, PDO::PARAM_STR);
            $statement->bindValue(2, $password, PDO::PARAM_STR);
            $statement->bindValue(3, $id, PDO::PARAM_INT);
            $statement->execute();
        }
        
        
        $pdo->commit();
        
        $message = 'Successfully Update!';
    }
    catch(PDOException $e)
    {
        $pdo->rollBack();
        
        $message = 'Failed : ' . $e->getMessage();
    }
}


if(isset($_GET['id']))
{
    $id = (int) $_GET['id'];
    
    try
    {
        $pdo = new PDO($config['dsn'], $config['user'], $config['pass'], $config['opt']);
        
        $statement = $pdo->prepare('SELECT * FROM users WHERE id=?');
        $statement->bindValue(1, $id, PDO::PARAM_INT);
        $statement->execute();
        
        $user = $statement->fetch();
        
    }
    catch(PDOException $e)
    {
        die($e->getMessage());
    }
}
else
{
    echo "Something went wrong!";
    
    exit();
}

?>

<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <meta name="description" content="">
        <meta name="author" content="">
	    <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>List - Crud PHP PDO</title>
        <style type="text/css">
        
            label{
                display: block;
                margin:10px 0;
            }
            
        </style>
    </head>
    <body>
        
    <h1>Edit User</h1>
        
    <p><a href="index.php">[-] Back</a></p>
        
    <?php
    
    if(!empty($message))
    {
        echo '<p>'.$message.'</p>';
    }
        
    ?>
    
    <form method="post">
        <input type="hidden" name="id" value="<?php echo $user['id']; ?>">
        <label for="username">Username</label>
        <input type="text" name="username" id="username" value="<?php echo $user['username']; ?>">
        <label for="password">Password (leave blank if you don't want to change it)</label>
        <input type="password" name="password" id="password" placeholder="Password"><br /><br />
        <input type="submit" name="submit" value="Update">
    </form>
        
    </body>
</html>

Tampilan halaman edit.php pada browser

crud-database-dengan-php-pdo-edit.png

Membuat file delete.php

File delete.php berfungsi untuk hapus data yang ada di database. File delete.php disini tidak menggunakan tampilan karena pada saat hapus data berhasil akan langsung di redirect ke halaman index.php, kecuali kalau ada error baru akan menampilkan errornya.

Isi dari file delete.php sebagai berikut :



<?php

require_once 'config.php';

if(isset($_GET['id']))
{
    $id = (int) $_GET['id'];
    
    try
    {
        $pdo = new PDO($config['dsn'], $config['user'], $config['pass'], $config['opt']);
        
        $statement = $pdo->prepare('DELETE FROM users WHERE id=?');
        $statement->bindValue(1, $id, PDO::PARAM_INT);
        $statement->execute();
        
        header('location:index.php');
        
        exit();
        
    }
    catch(PDOException $e)
    {
        die($e->getMessage());
    }
}
else
{
    echo "Something went wrong!";
    
    exit();
}

Demikian, semoga tutorial ini bermanfaat buat sobat pembaca blog ini. Untuk source code nya sobat bisa ambil disini


Komentar

Fian

Boleh Minta Source nya gan? PM yaa gan : Fianian32@gmail.com

14 August 2019

Ajat Sudrajat

Link untuk download source code sudah ada diatas ya, silahkan download.

14 August 2019

Fian

Makasih Min , Semoga blog ini ngasih artikel2 yang manarik lagi min

14 August 2019