Sunday, January 8, 2017

Bab 9. PHP/MySQL Untuk Pemula


Database



Menciptakan Database
Karena semua tabel disimpan dalam sebuah database, langkah pertama yang diperlukan adalah menciptakannya, menggunakan statemen CREATE DATABASE:

mysql> CREATE DATABASE musik;
Query OK, 1 row affected (0.05 sec)

Selanjutnya, Anda akan memilih database yang baru diciptakan sebagai database default untuk dipakai pada perintah-perintah selanjutnya, menggunakan statemen USE:

mysql> USE musik;
Database changed


Menambahkan Tabel
Setelah Anda menciptakan database, sekarang saatnya untuk menambahkan beberapa tabel ke dalamnya. Perintah SQL untuk melakukannya adalah menggunakan statemen CREATE TABLE, yang memerlukan nama tabel dan sebuah deskripsi detil mengenai tiap bidang tabel. Berikut adalah contohnya:

mysql> CREATE TABLE artis (
    -> id_artis INT(4) NOT NULL PRIMARY KEY AUTO_INCREMENT,
    -> nama_artis VARCHAR (50) NOT NULL,
    -> negara_artis CHAR (50) NOT NULL
    -> );
Query OK, 0 rows affected (0.53 sec)

Sekarang, Anda melanjutkan untuk menciptakan dua tabel lain menggunakan statemen-statemen SQL berikut:

mysql> CREATE TABLE rating(
    -> id_rating INT(2) NOT NULL PRIMARY KEY,
    -> nama_rating VARCHAR(50) NOT NULL
    -> );
Query OK, 0 rows affected (0.25 sec)

mysql> CREATE TABLE lagu(
    -> id_lagu INT(4) NOT NULL PRIMARY KEY AUTO_INCREMENT,
    -> judul_lagu VARCHAR(100) NOT NULL,
    -> artis_lagu INT(4) NOT NULL,
    -> rating_lagu INT(2) NOT NULL
    -> );
Query OK, 0 rows affected (0.27 sec)


Menambahkan Rekaman
Penambahan sebuah rekaman pada tabel merupakan hal mudah dengan memanggil statemen INSERT menggunakan nilai-nilai yang diinginkan. Berikut adalah contoh, yang menambahkan sebuah rekaman pada tabel artis untuk bidang id_artis, nama_artis, dan negara_artis:

mysql> INSERT INTO artis(id_artis, nama_artis, negara_artis)
    -> VALUES('1', 'AEROSMITH', 'US');
Query OK, 1 row affected (0.03 sec)

Karena bendera dari bidang id_artis adalah AUTO_INCREMENT, maka Anda tidak perlu menetapkannya secara eksplisit karena bidang tersebut terinkremen secara otomatis. Untuk mendemonstrasikannya, Anda bisa menambahkan satu rekaman lain menggunakan statemen berikut:

mysql> INSERT INTO artis(nama_artis, negara_artis)
    -> VALUES('Abba', 'SE');
Query OK, 1 row affected (0.09 sec)

Dengan cara yang sama, Anda bisa menambahkan beberapa rekaman pada tabel rating:

mysql> INSERT INTO rating (id_rating, nama_rating) VALUES (4, 'Baik');
Query OK, 1 row affected (0.05 sec)

mysql> INSERT INTO rating (id_rating, nama_rating) VALUES (5, 'Sangat Baik');
Query OK, 1 row affected (0.06 sec)

Anda juga bisa menambahkan beberapa rekaman pada tabel lagu:

mysql> INSERT INTO lagu(judul_lagu, artis_lagu, rating_lagu)
    -> VALUES('Janie\'s Got A Gun', 1, 4);
Query OK, 1 row affected (0.06 sec)

mysql> INSERT INTO lagu(judul_lagu, artis_lagu, rating_lagu)
    -> VALUES('Crazy', 1, 5);
Query OK, 1 row affected (0.05 sec)

mysql> INSERT INTO lagu (judul_lagu, artis_lagu, rating_lagu)
    -> VALUES ('Dancing Queen', 2, '5');
Query OK, 1 row affected (0.06 sec)


Mengeksekusi Query
Setelah data berada di dalam database, sekarang Anda dapat melakukan sesuatu terhadapnya. SQL dipakati untuk melakukan pencarian rekaman yang sesuai dengan kriteria spesifik menggunakan statemen SELECT. Berikut adalah contohnya, yang menghasilkan semua rekaman dari tabel artis:

mysql> SELECT id_artis, nama_artis FROM artis;
+----------+------------+
| id_artis | nama_artis |
+----------+------------+
|        1 | AEROSMITH  |
|        2 | Abba       |
+----------+------------+
2 rows in set (0.03 sec)

Biasanya, Anda juga ingin menambahkan beberapa filter pada query Anda, untuk mengurangi ukuran dari himpunan hasil dan memastikan bahwa hasil hanya memuat rekaman-rekeman yang sesuai dengan kriteria tertentu. Ini dapat dilakukan menggunakan klausa WHERE pada statemen SELECT yang diikuti dengan satu atau lebih ekspresi kondisional. Berikut adalah contohnya, yang mencantumkan artis yang berasal dari United State:

mysql> SELECT id_artis, nama_artis FROM artis
    -> WHERE negara_artis = 'US';
+----------+------------+
| id_artis | nama_artis |
+----------+------------+
|        1 | AEROSMITH  |
+----------+------------+
1 row in set (0.05 sec)

Semua operator perbandingan standar dalam PHP didukung oleh SQL. Contoh tersebut mendemonstrasikan penggunaan operator ekualitas (=). Contoh berikutnya akan mendemonstrasikan operator lebih-besar-atau-sama-dengan (>=) untuk menampilkan semua lagu dengan rating lebih dari atau sama dengan 4:

mysql> SELECT judul_lagu, rating_lagu FROM lagu
    -> WHERE rating_lagu >= 4;
+-------------------+-------------+
| judul_lagu        | rating_lagu |
+-------------------+-------------+
| Janie's Got A Gun |           4 |
| Crazy             |           5 |
| Dancing Queen     |           5 |
+-------------------+-------------+
3 rows in set (0.00 sec)

Anda dapat menggabungkan beberapa ekspresi kondisional menggunakan operator logikal AND, OR, atau NOT. Berikut adalah contohnya, yang menampilkan semua artis dari US atau SE:

mysql> SELECT nama_artis, negara_artis FROM artis
    -> WHERE negara_artis = 'US'
    -> OR negara_artis = 'SE';
+------------+--------------+
| nama_artis | negara_artis |
+------------+--------------+
| AEROSMITH  | US           |
| Abba       | SE           |
+------------+--------------+
2 rows in set (0.00 sec)


Membatasi Dan Mengurutkan Query
Jika Anda ingin melihat data dari sebuah tabel yang diurutkan berdasarkan bidang tertentu, maka Anda bisa menggunakan klausa ORDER BY. Klausa ini dapat Anda pakai untuk mendefinisikan nama bidang yang akan digunakan untuk mengurutkan (secara menaik atau secara menurun). Berikut adalah sebuah contoh untuk menampilkan daftar lagu yang diurutkan secara alfabetikal, menggunakan statemen SQL berikut:

mysql> SELECT judul_lagu FROM lagu
    -> ORDER BY judul_lagu;
+-------------------+
| judul_lagu        |
+-------------------+
| Crazy             |
| Dancing Queen     |
| Janie's Got A Gun |
+-------------------+
3 rows in set (0.00 sec)

Untuk membalikkan urutan judul lagu, Anda bisa menambahkan pemodifikasi DESC, seperti berikut:

mysql> SELECT judul_lagu FROM lagu
    -> ORDER BY judul_lagu DESC;
+-------------------+
| judul_lagu        |
+-------------------+
| Janie's Got A Gun |
| Dancing Queen     |
| Crazy             |
+-------------------+
3 rows in set (0.00 sec)

SQL juga dapat Anda pakai untuk membatasi berapa banyak rekaman yang akan ditampilkan menggunakan katakunci LIMIT, yang menerima dua parameter: offset rekaman awal (dimulai dari 0) dan jumlah rekaman yang akan ditampilkan. Sebagai contoh, untuk menampilkan baris 1-2 pada sebuah hasil query, Anda bisa menggunakan statemen berikut:

mysql> SELECT judul_lagu FROM lagu
    -> ORDER BY judul_lagu
    -> LIMIT 0,2;
+---------------+
| judul_lagu    |
+---------------+
| Crazy         |
| Dancing Queen |
+---------------+
2 rows in set (0.00 sec)

Statemen SELECT juga mendukung klausa LIKE, yang dapat dipakai untuk melakukan pencarian terhadap bidang-bidang teks menggunakan wildcard. Ada dua jenis wildcard pada klausa LIKE: karakter %, yang dipakai untuk menandai kemunculan nol atau lebih dari sebuah karakter, dan karakter _, yang dipakai untuk menandai secara persis satu kemunculan dari sebuah karakter. Contoh berikut mengilustrasikan klausa LIKE, untuk melakukan pencarian terhadap karakter ‘g’ pada judul-judul lagu:

mysql> SELECT id_lagu, judul_lagu FROM lagu
    -> WHERE judul_lagu LIKE '%g%';
+---------+-------------------+
| id_lagu | judul_lagu        |
+---------+-------------------+
|       1 | Janie's Got A Gun |
|       3 | Dancing Queen     |
+---------+-------------------+
2 rows in set (0.00 sec)


Menggabungkan Tabel
Sejauh ini, semua query yang Anda telah lakukan dikonsentrasikan pada satu tabel. Tetapi SQL juga dapat dipakai untuk melakukan query terhadap satu atau lebih tabel secara bersamaan, dan menampilkan himpunan hasil gabungan. Berikut adalah sebuah contoh penggabungan tabel lagu dan tabel artis menggunakan bidang id_artis bersama (klausa WHERE dipakai untuk memetakan bidang-bidang bersama):

mysql> SELECT id_lagu, judul_lagu, nama_artis FROM lagu, artis
    -> WHERE lagu.artis_lagu = artis.id_artis;
+---------+-------------------+------------+
| id_lagu | judul_lagu        | nama_artis |
+---------+-------------------+------------+
|       1 | Janie's Got A Gun | AEROSMITH  |
|       2 | Crazy             | AEROSMITH  |
|       3 | Dancing Queen     | Abba       |
+---------+-------------------+------------+
3 rows in set (0.03 sec)


Memodifikasi Dan Menghapus Rekaman
Sama seperti Anda menambahkan rekaman ke dalam sebuah tabel menggunakan statemen INSERT, Anda juga dapat menghapus rekaman menggunakan statemen DELETE. Umumnya, Anda dapat memilih subhimpunan baris tertentu yang akan dihapus dengan menambahkan klausa WHERE pada statemen DELETE, seperti contoh berikut yang menghapus semua lagu dengan rating kurang dari atau sama dengan 3.

mysql> DELETE FROM lagu
    -> WHERE rating_lagu <= 3;
Query OK, 0 rows affected (0.03 sec)

Ada pula statemen UPDATE, yang dapat digunakan untuk mengubah isi dari sebuah rekaman; Statemen ini juga menerima klausa WHERE, sehingga Anda dapat menerapkan perubahan hanya pada rekaman-rekaman yang cocok dengan kriteria tertentu. Perhatikan contoh berikut, yang mengubah rating ‘Sangat Baik’ menjadi ‘Fantastis’:

mysql> UPDATE rating SET nama_rating = 'FANTASTIS'
    -> WHERE nama_rating = 'SANGAT BAIK';
Query OK, 1 row affected (0.06 sec)
Rows matched: 1  Changed: 1  Warnings: 0

Anda dapat pula mengubah beberapa bidang sekaligus menggunakan koma. Berikut adalah sebuah contoh yang memperbarui rekaman lagu tertentu dalam tabel lagu, mengubah judul dan ratingnya.

mysql> UPDATE lagu SET judul_lagu = 'Waterloo',
    -> rating_lagu = 3
    -> WHERE id_lagu = 1;
Query OK, 1 row affected (0.06 sec)
Rows matched: 1  Changed: 1  Warnings: 0





Membaca Data Menggunakan PHP
Sekarang, Anda akan membaca data dari PHP, menggunakan skrip berikut. Di sini, diasumsikan bahwa nama user adalah ‘rismon’, password adalah ‘Dolokulu77’, dan database yang digunakan adalah ‘musik’.

<?php
// mencoba terhubung ke database
$mysqli = new mysqli("localhost", "rismon", "Dolokulu77", "musik");
if ($mysqli === false) {
    die("ERROR: Tidak bisa terhubung. " . mysqli_connect_error());
}

// mencoba untuk mengeksekusi query
// beriterasi pada himpunan hasil
// menampilkan tiap rekaman pada bidang-bidang
$sql = "SELECT id_artis, nama_artis FROM artis";
if ($hasil = $mysqli->query($sql)) {
    if ($hasil->num_rows > 0) {
        while($baris = $hasil->fetch_array()) {
            echo $baris[0] . ":" . $baris[1] . "\n";
        }
        $hasil->close();
    } else {
        echo "Tidak ada rekaman yang sesuai dengan query Anda.";
    }
} else {
    echo "ERROR: Tidak bisa mengeksekusi $sql. " . $mysqli->error;
}

// menutup koneksi
$mysqli->close();
?>




Membaca Data Menggunakan PHP
Kasus sebelumnya mendemonstrasikan pemrosesan hasil menggunakan metode fetch_array() dari objek MySQLi_Result. Metode ini menghasilkan tiap rekaman dari himpunan hasil sebagai sebuah array yang memuat kedua kunci berindeks numerik dan kunci berindeks string. Hal ini untuk memudahkan pengembang agar dapat mengakses tiap rekaman pada bidang tertentu menggunakan indeks maupun nama bidang.

Skrip berikut, yang sama dengan kasus sebelumnya, melakukan pekerjaan pembacaan yang sama menggunakan nama bidang:

<?php
// mencoba terhubung ke database
$mysqli = new mysqli("localhost", "rismon", "Dolokulu77", "musik");
if ($mysqli === false) {
    die("ERROR: Tidak bisa terhubung. " . mysqli_connect_error());
}

// mencoba untuk mengeksekusi query
// beriterasi pada himpunan hasil
// menampilkan tiap rekaman pada bidang-bidang
$sql = "SELECT id_artis, nama_artis FROM artis";
if ($hasil = $mysqli->query($sql)) {
    if ($hasil->num_rows > 0) {
        while($baris = $hasil->fetch_array()) {
            echo $baris['id_artis'] . ":" . $baris['nama_artis'] . "\n";
        }
    $hasil->close();
    } else {
        echo "Tidak ada rekaman yang cocok dengan query Anda.";
    }
} else {
    echo "ERROR: Tidak dapat mengeksekusi $sql. " . $mysqli->error;
}

// menutup koneksi
$mysqli->close();
?>



Skrip berikut merupakan cara ketiga dalam membaca rekaman. Tiap rekaman di sini diperlakukan sebagai objek, menggunakan metode fetch_object().

<?php
// mencoba terhubung ke database
$mysqli = new mysqli("localhost", "rismon", "Dolokulu77", "musik");
if ($mysqli === false) {
    die("ERROR: Tidak bisa terhubung. " . mysqli_connect_error());
}

// mencoba untuk mengeksekusi query
// beriterasi pada himpunan hasil
// menampilkan tiap rekaman pada bidang-bidang
$sql = "SELECT id_artis, nama_artis FROM artis";
if ($hasil = $mysqli->query($sql)) {
    if ($hasil->num_rows > 0) {
        while($baris = $hasil->fetch_object()) {
            echo $baris->id_artis . ":" . $baris->nama_artis . "\n";
        }
    $hasil->close();
    } else {
        echo "Tidak ada rekaman yang cocok dengan query Anda.";
    }
} else {
    echo "ERROR: Tidak dapat mengeksekusi $sql. " . $mysqli->error;
}

// menutup koneksi
$mysqli->close();
?>


Menambah Atau Memodifikasi Data Menggunakan PHP
Contoh berikut menambahkan sebuah rekaman baru pada tabel artis.

<?php
// tambah_data.php
// mencoba terhubung ke database
$mysqli = new mysqli("localhost", "rismon", "Dolokulu77", "musik");
if ($mysqli === false) {
    die("ERROR: Tidak bisa terhubung. " . mysqli_connect_error());
}

// mencoba mengeksekusi query
// menambah sebuah rekaman baru
$sql = "INSERT INTO artis (nama_artis, negara_artis) VALUES
('Kylie Minogue', 'AU')";
if ($mysqli->query($sql) === true) {
    echo 'Artis baru dengan id:' . $mysqli->insert_id . ' ditambahkan.';
} else {
    echo "ERROR: Tidak dapat mengeksekusi query: $sql. " . $mysqli->error;
}

// menutup koneksi
$mysqli->close();
?>



Bagaimana dengan memperbarui rekaman yang telah ada? Yang Anda perlukan adalah mengubah string query SQL:

<?php
// perbarui_data.php
// mencoba terhubung ke database
$mysqli = new mysqli("localhost", "rismon", "Dolokulu77", "musik");
if ($mysqli === false) {
    die("ERROR: Tidak bisa terhubung. " . mysqli_connect_error());
}

// mencoba mengeksekusi query
// memperbarui sebuah rekaman
$sql = "UPDATE artis SET nama_artis = 'Eminem', negara_artis = 'US' WHERE
id_artis = 3";
if ($mysqli->query($sql) === true) {
    echo $mysqli->affected_rows . ' diperbarui.';
} else {
    echo "ERROR: Tidak dapat mengeksekusi query: $sql. " . $mysqli->error;
}

// menutup koneksi
$mysqli->close();
?>


Menyisipkan Data Menggunakan PHP
Perhatikan skrip berikut, yang menyisipkan beberapa lagu ke dalam database menggunakan ekstensi MySQLi:

<?php
// tambah beberapa_data.php
// mendefinisikan nilai-nilai yang akan disisipkan
$lagu = array(
    array('Patience', 4, 3),
    array('Beautiful World', 4, 4),
    array('Shine', 4, 4),
    array('Hold On', 4, 3),
);

// mencoba terhubung ke database
$mysqli = new mysqli("localhost", "rismon", "Dolokulu77", "musik");
if ($mysqli === false) {
    die("ERROR: Tidak bisa terhubung. " . mysqli_connect_error());
}

// mempersiapkan template query
// mengeksekusi beberapa kali
$sql = "INSERT INTO lagu (judul_lagu, artis_lagu, rating_lagu)
VALUES (?, ?, ?)";
if ($stmt = $mysqli->prepare($sql)) {
    foreach ($lagu as $s) {
        $stmt->bind_param('sii', $s[0], $s[1], $s[2]);
        if ($stmt->execute()) {
            echo "Lagu baru dengan id: " . $mysqli->insert_id . " ditambahkan.\n";
        } else {
            echo "ERROR: Tidak dapat mengeksekusi query: $sql. " . $mysqli->error;
        }
    }
} else {
    echo "ERROR: Tidak dapat mengeksekusi query: $sql. " . $mysqli->error;
}

// menutup koneksi
$mysqli->close();
?>





Projek: Menambahkan Beberapa Karyawan Ke Dalam Database
Untuk memulai aplikasi ini, Anda perlu menjalankan perintah-perintah MySQL berikut:

mysql> CREATE DATABASE karyawan;
Query OK, 1 row affected (0.00 sec)

mysql> USE karyawan;
Database changed

mysql> CREATE TABLE karyawan (
    -> id INT(4) NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> nama VARCHAR(255) NOT NULL,
    -> jabatan VARCHAR(255) NOT NULL
    -> );
Query OK, 0 rows affected (0.28 sec)

Setelah selesai, langkah berikutnya adalah membuat suatu form Web untuk menerima data karyawan. Pada kasus ini, setiap nama dan jabatan karyawab. Pada submisi, pemroses form akan memeriksa masukan dan, jika valid, akan menghasilkan sebuah query INSERT untuk menuliskannya ke dalam tabel database yang telah diciptakan. Berikut skrip dengan nama karyawan.php:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <title>Projek: Menempatkan Data Karyawan Ke dalam Database</title>
    <style type="text/css">
    div#pesan {
      text-align:center;
      margin-left:auto;
      margin-right:auto;
      width:40%;
      border: solid 2px green
    }
    </style>
  </head>
  <body>
    <h2>Projek: Menempatkan Data Karyawan Ke dalam Database</h2>
    <h3>Menambahkan Karyawan Baru</h3>
<?php
// jika form disubmit
// proses masukan form
if (isset($_POST['submit'])) {
    // mencoba terhubung ke database
    $mysqli = new mysqli("localhost", "rismon", "Dolokulu77", "karyawan");
    if ($mysqli === false) {
        die("ERROR: Tidak bisa terhubung. " . mysqli_connect_error());
    }

      // membuka blok pesan
    echo '<div id="pesan">';

      // membaca dan memeriksan nilai-nilai masukan
    $errorMasukan = false;
    if (empty($_POST['nama_kar'])) {
        echo 'ERROR: Silahkan masukkan nama karyawan yang valid';
        $errorMasukan = true;
    } else {
        $nama = $mysqli->escape_string($_POST['nama_kar']);
    }

      if ($errorMasukan != true && empty($_POST['jab_kar'])) {
        echo 'ERROR: Silahkan masukkan jabatan karyawan yang valid';
        $errorMasukan = true;
    } else {
        $jabatan = $mysqli->escape_string($_POST['jab_kar']);
    }

      // menambahkan nilai-nilai ke database menggunakan query INSERT
    if ($errorMasukan != true) {
        $sql = "INSERT INTO karyawan (nama, jabatan)
        VALUES ('$nama', '$jabatan')";
        if ($mysqli->query($sql) === true) {
            echo 'Rekaman karyawan baru ditambahkan dengan ID: ' . $mysqli->insert_id;
        } else {
            echo "ERROR: Tidak bisa mengeksekusi query: $sql. " . $mysqli->error;
        } 
    }

      // menutup blok pesan
    echo '</div>';

      // menutup koneksi
    $mysqli->close();
}
?>
</div>
    <form action="karyawan.php" method="POST">
      Nama karyawan: <br />
      <input type="text" name="nama_kar" size="40" />
      <p/>
      Jabatan karyawan: <br />
      <input type="text" name="jab_kar" size="40" />
      <p/>
      <input type="submit" name="submit" value="Submit" />
      </form>
</body>
</html>








Anda melihat bahwa hal tersebut merupakan pekerjaan yang mudah. Sekarang, Anda akan merevisi skrip tersebut, sehingga, di samping untuk menambahkan karyawan baru ke dalam database, skrip yang direvisi ini juga akan menampilkan tiap rekaman dari database.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <title>Projek: Menempatkan Data Karyawan Ke dalam Database</title>
    <style type="text/css">
    div#pesan {
      text-align:center;
      margin-left:auto;
      margin-right:auto;
      width:40%;
      border: solid 2px green
    }
    </style>
  </head>
  <body>
    <h2>Projek: Menempatkan Data Karyawan Ke dalam Database</h2>
    <h3>Menambahkan Karyawan Baru</h3>
<?php
// mencoba terhubung ke database
$mysqli = new mysqli("localhost", "rismon", "Dolokulu77", "karyawan");
if ($mysqli === false) {
    die("ERROR: Tidak bisa terhubung. " . mysqli_connect_error());
}

// jika form disubmit
// proses masukan form
if (isset($_POST['submit'])) {     
      // membuka blok pesan
    echo '<div id="pesan">';

      // membaca dan memeriksan nilai-nilai masukan
    $errorMasukan = false;
    if (empty($_POST['nama_kar'])) {
        echo 'ERROR: Silahkan masukkan nama karyawan yang valid';
        $errorMasukan = true;
    } else {
        $nama = $mysqli->escape_string($_POST['nama_kar']);
    }

      if ($errorMasukan != true && empty($_POST['jab_kar'])) {
        echo 'ERROR: Silahkan masukkan jabatan karyawan yang valid';
        $errorMasukan = true;
    } else {
        $jabatan = $mysqli->escape_string($_POST['jab_kar']);
    }

      // menambahkan nilai-nilai ke database menggunakan query INSERT
    if ($errorMasukan != true) {
        $sql = "INSERT INTO karyawan (nama, jabatan)
        VALUES ('$nama', '$jabatan')";
        if ($mysqli->query($sql) === true) {
            echo 'Rekaman karyawan baru ditambahkan dengan ID: ' . $mysqli->insert_id;
        } else {
            echo "ERROR: Tidak bisa mengeksekusi query: $sql. " . $mysqli->error;
        } 
    }

      // menutup blok pesan
    echo '</div>';

}
?>
</div>
    <form action="karyawan_baru.php" method="POST">
      Nama karyawan: <br />
      <input type="text" name="nama_kar" size="40" />
      <p/>
      Jabatan karyawan: <br />
      <input type="text" name="jab_kar" size="40" />
      <p/>
      <input type="submit" name="submit" value="Submit" />
      </form>

        <h3>Daftar Karyawan</h3>
<?php
    // membaca rekaman
    // diformat sebagai tabel HTML
    $sql = "SELECT id, nama, jabatan FROM karyawan";
    if ($hasil = $mysqli->query($sql)) {
        if ($hasil->num_rows > 0) {
            echo "<table>\n";
            echo " <tr class=\"heading\">\n";
            echo " <td>ID</td>\n";
            echo " <td>Nama</td>\n";
            echo " <td>Jabatan</td>\n";
            echo " </tr>\n";
                 
            while($baris = $hasil->fetch_object()) {
                echo " <tr>\n";
               echo " <td>" . $baris->id . "</td>\n";
               echo " <td>" . $baris->nama . "</td>\n";
               echo " <td>" . $baris->jabatan . "</td>\n";
               echo " </tr>\n";
            }

            echo "</table>";
            $hasil->close();
        } else {
            echo "Tidak ada karyawan dalam database.";
        }
    } else {
        echo "ERROR: Tidak dapat mengeksekusi query: $sql. " . $mysqli->error;
}

// menutup koneksi
$mysqli->close();
?>
  </body>
</html>





No comments:

Post a Comment