Monday, December 26, 2016

Bab 3. PHP/MySQL Untuk Programer


Menggunakan Tabel Untuk Menampilkan Data





Menciptakan Tabel
Sebelum Anda dapat menampilkan data Anda, Anda perlu menetapkan struktur, tiap kepala kolom, dan format dari tabel HTML Anda. Dengan cara ini, data Anda memiliki ruang untuk ditampilkan. Contoh berikut ini akan mengilustrasikan bagaimana data Anda ditempatkan ketika dibaca dari database.

Contoh
Membangun sebuah tabel
1.     Bukalah editor teks/HTML Anda, dan masukkan kode berikut:

<div style="text-align: center;" >
  <h2 > Database Review Film </h2>
  <table border="1" cellpadding="2" cellspacing="2"
   style="width: 70%; margin-left: auto; margin-right: auto;" >
    <tr>
      <th> Judul Film </th>
      <th> Tahun Rilis </th>
      <th> Sutradara Film </th>
      <th> Aktor Utama Film </th>
      <th> Tipe Film </th>
    </tr>
  </table>
</div>

2.    Simpanlah file tersebut dengan nama tabel1.php, dan jalankan dengan web browser Anda.
3.    Tabel Anda akan tampak seperti ini:




4.    Buka file tabel1.php kembali, dan tambahkan kode untuk menghubungkan ke database. Anda menggunakan database yang diciptakan pada Bab 2 untuk contoh di sini. Ingat untuk mengganti nama server, username, password, dan nama database Anda sendiri.

<?php
//menghubungkan ke MySQL
$db = mysql_connect('localhost', 'rismon', 'Dolokulu77') or
  die ('Tidak bisa terhubung. Periksa parameter koneksi.');

//memastikan bahwa database yang baru dibuat menjadi
//database yang aktif
mysql_select_db('situsfilm', $db) or die(mysql_error($db));
?>

<div style="text-align: center;" >
  <h2 > Database Review Film </h2>
  <table border="1" cellpadding="2" cellspacing="2"
   style="width: 70%; margin-left: auto; margin-right: auto;" >
    <tr>
      <th> Judul Film </th>
      <th> Tahun Rilis </th>
      <th> Sutradara Film </th>
      <th> Aktor Utama Film </th>
      <th> Tipe Film </th>
    </tr>
  </table>
</div>

5.    Jalankan sebuah query SQL terhadap database dan dapatkan hasilnya. Dan amati berapa banyak rekaman data yang dihasilkan dari query.

<?php
//menghubungkan ke MySQL
$db = mysql_connect('localhost', 'rismon', 'Dolokulu77') or
  die ('Tidak bisa terhubung. Periksa parameter koneksi.');

//memastikan bahwa database yang baru dibuat menjadi
//database yang aktif
mysql_select_db('situsfilm', $db) or die(mysql_error($db));

// membaca informasi
$hasil = 'SELECT
        nama_film, tahun_film, sutradara_film, aktor_film,
        tipe_film
    FROM
        film
    ORDER BY
        nama_film ASC,
        tahun_film DESC';
$hasil = mysql_query($hasil, $db) or die(mysql_error($db));

// menentukan berapa banyak baris pada hasil query
$jum_film = mysql_num_rows($hasil);
?>

<div style="text-align: center;" >
  <h2 > Database Review Film </h2>
  <table border="1" cellpadding="2" cellspacing="2"
   style="width: 70%; margin-left: auto; margin-right: auto;" >
    <tr>
      <th> Judul Film </th>
      <th> Tahun Rilis </th>
      <th> Sutradara Film </th>
      <th> Aktor Utama Film </th>
      <th> Tipe Film </th>
    </tr>
  </table>
</div>

6.    Setelah tag tr penutup tetapi sebelum tag table penutup dalam HTML awal, masukkan sebuah loop while untuk memproses rekaman-rekaman yang dibaca. Kemudian, tampilkan jumlah rekaman film setelah tag table penutup.

<?php
//menghubungkan ke MySQL
$db = mysql_connect('localhost', 'rismon', 'Dolokulu77') or
  die ('Tidak bisa terhubung. Periksa parameter koneksi.');

//memastikan bahwa database yang baru dibuat menjadi
//database yang aktif
mysql_select_db('situsfilm', $db) or die(mysql_error($db));

// membaca informasi
$hasil = 'SELECT
        nama_film, tahun_film, sutradara_film, aktor_film,
        tipe_film
    FROM
        film
    ORDER BY
        nama_film ASC,
        tahun_film DESC';
$hasil = mysql_query($hasil, $db) or die(mysql_error($db));

// menentukan berapa banyak baris pada hasil query
$jum_film = mysql_num_rows($hasil);
?>

<div style="text-align: center;" >
  <h2 > Database Review Film </h2>
  <table border="1" cellpadding="2" cellspacing="2"
   style="width: 70%; margin-left: auto; margin-right: auto;" >
    <tr>
      <th> Judul Film </th>
      <th> Tahun Rilis </th>
      <th> Sutradara Film </th>
      <th> Aktor Utama Film </th>
      <th> Tipe Film </th>
    </tr>
<?php
// loop menjelajah hasil query
while ($baris = mysql_fetch_assoc($hasil)) {
    extract($baris);
    echo '<tr>';
    echo '<td>' . $nama_film . '</td>';
    echo '<td>' . $tahun_film . '</td >';
    echo '<td>' . $sutradara_film . '</td>';
    echo '<td>' . $aktor_film . '</td>';
    echo '<td>' . $tipe_film . '</td>';
    echo '</tr>';
}
?>
  </table>
 <p> <?php echo $jum_film; ?> Film </p>
</div>

7.    Buka halaman pada web browser Anda; layar Anda akan menampilkan berikut:



Sejauh ini Anda telah menggunakan echo untuk menampilkan isi dari dalam mode PHP (antara tag <?php dan ?>). Potongan kode HTML yang panjang berada di luar kedua tag tersebut dan ditampilkan ke browser secara langsung, tanpa melalui PHP. Skrip keluar dan masuk mode PHP, maju dan mundur antara kode HTML dan PHP. Beberapa pihak mengatakan bahwa hal ini merupakan cara yang optimal dalam melakukannya, sementara pihak lain mengatakan hal ini membingungkan dan membuatnya lebih susah untuk dikembangkan. Jadi, berikut akan diberikan sintaks heredoc.

Contoh
Menggabungkannya
Salinlah file tabel1.php ke dalam tabel2.php, dan ikut langkah-langkah berikut:
1.     Gantikan kode HTML, yang memuat tiap kepala kolom tabel dengan sebuah statemen heredoc yang disimpan ke dalam variabel $tabel:

$tabel = <<< ENDHTML
<div style="text-align: center;" >
  <h2 > Database Review Film </h2>
  <table border="1" cellpadding="2" cellspacing="2"
   style="width: 70%; margin-left: auto; margin-right: auto;" >
    <tr>
      <th> Judul Film </th>
      <th> Tahun Rilis </th>
      <th> Sutradara Film </th>
      <th> Aktor Utama Film </th>
      <th> Tipe Film </th>
    </tr>
ENDHTML;

2.    Gantikan statemen-statemen echo yang ada di dalam loop while dengan sebuah statemen heredoc, dan tempelkan pada variabel $tabel:

$tabel .= <<< ENDHTML
<tr>
  <td> $nama_film </td>
  <td> $tahun_film </td>
  <td> $sutradara_film </td>
  <td> $aktor_film </td>
  <td> $tipe_film </td>
</tr>
ENDHTML;

Perhatikan penggunaan dari .= menggantikan tanda =. Ini penting karena akan menempelkan blok heredoc ke isi yang telah ada dalam $tabel. Jika Anda menggunakan =, maka isi akan digantikan, yang bukan merupakan apa yang Anda inginkan.

3.    Ganti kode HTML untuk menutup statemen table dan echo yang menampilkan jumlah film yang dihasilkan dengan sebuah statemen heredoc.

$tabel .= <<< ENDHTML
  </table>
<p> $jum_film Film </p>
</div>
ENDHTML;

Berikut merupakan kode pada file tabel2.php:

<?php
//menghubungkan ke MySQL
$db = mysql_connect('localhost', 'rismon', 'Dolokulu77') or
  die ('Tidak bisa terhubung. Periksa parameter koneksi.');

//memastikan bahwa database yang baru dibuat menjadi
//database yang aktif
mysql_select_db('situsfilm', $db) or die(mysql_error($db));

// membaca informasi
$hasil = 'SELECT
        nama_film, tahun_film, sutradara_film, aktor_film,
        tipe_film
    FROM
        film
    ORDER BY
        nama_film ASC,
        tahun_film DESC';
$hasil = mysql_query($hasil, $db) or die(mysql_error($db));

// menentukan berapa banyak baris pada hasil query
$jum_film = mysql_num_rows($hasil);

$tabel = <<< ENDHTML
<div style="text-align: center;" >
  <h2 > Database Review Film </h2>
  <table border="1" cellpadding="2" cellspacing="2"
   style="width: 70%; margin-left: auto; margin-right: auto;" >
    <tr>
      <th> Judul Film </th>
      <th> Tahun Rilis </th>
      <th> Sutradara Film </th>
      <th> Aktor Utama Film </th>
      <th> Tipe Film </th>
    </tr>
ENDHTML;

// loop menjelajah hasil query
while ($baris = mysql_fetch_assoc($hasil)) {
    extract($baris);
    $tabel .= <<< ENDHTML
    <tr>
      <td> $nama_film </td>
      <td> $tahun_film </td>
      <td> $sutradara_film </td>
      <td> $aktor_film </td>
      <td> $tipe_film </td>
    </tr>
ENDHTML;
}

$tabel .= <<< ENDHTML
  </table>
<p> $jum_film Film </p>
</div>
ENDHTML;

echo $tabel;
?>

4.    Tambahkan sebuah statemen echo di akhir file. Simpan dan tampilkan kembali halaman web. Apa yang ditampilkan sama seperti sebelumnya.


Contoh
Memperbaiki tabel Anda
1.     Modifikasilah file tabel2.php Anda seperti ditunjukkan pada teks yang disoroti berikut:

<?php
// membaca id seorang sutradara dan menghasilkan namapenuhnya
function get_sutradara($id_sutradara) {
    global $db;
    $query = 'SELECT
             namapenuh_orang
        FROM
            orang
        WHERE
            id_orang = ' . $id_sutradara;
    $hasil = mysql_query($query, $db) or die(mysql_error($db));
    $baris = mysql_fetch_assoc($hasil);
    extract($baris);
    return $namapenuh_orang;
}

// membaca id dari aktor dan menghasilkan namapenuhnya
function get_aktor($id_aktor) {
    global $db;
    $query = 'SELECT
             namapenuh_orang
        FROM
            orang
        WHERE
            id_orang = ' . $id_aktor;
    $hasil = mysql_query($query, $db) or die(mysql_error($db));
    $baris = mysql_fetch_assoc($hasil);
    extract($baris);
    return $namapenuh_orang;
}

// mengambil id dari tipe film dan menghasilkan deskripsi tekstual
function get_tipefilm($id_tipefilm) {
    global $db;
        $query = 'SELECT
                 label_tipefilm
        FROM
            tipefilm
        WHERE
            id_tipefilm = ' . $id_tipefilm;
    $hasil = mysql_query($query, $db) or die(mysql_error($db));
    $baris = mysql_fetch_assoc($hasil);
    extract($baris);
    return $label_tipefilm;
}

//menghubungkan ke MySQL
$db = mysql_connect('localhost', 'rismon', 'Dolokulu77') or
  die ('Tidak bisa terhubung. Periksa parameter koneksi.');

//memastikan bahwa database yang baru dibuat menjadi
//database yang aktif
mysql_select_db('situsfilm', $db) or die(mysql_error($db));

// membaca informasi
$hasil = 'SELECT
        nama_film, tahun_film, sutradara_film, aktor_film,
        tipe_film
    FROM
        film
    ORDER BY
        nama_film ASC,
        tahun_film DESC';
$hasil = mysql_query($hasil, $db) or die(mysql_error($db));

// menentukan berapa banyak baris pada hasil query
$jum_film = mysql_num_rows($hasil);

$tabel = <<< ENDHTML
<div style="text-align: center;" >
  <h2 > Database Review Film </h2>
  <table border="1" cellpadding="2" cellspacing="2"
   style="width: 70%; margin-left: auto; margin-right: auto;" >
    <tr>
      <th> Judul Film </th>
      <th> Tahun Rilis </th>
      <th> Sutradara Film </th>
      <th> Aktor Utama Film </th>
      <th> Tipe Film </th>
    </tr>
ENDHTML;

// loop menjelajah hasil query
while ($baris = mysql_fetch_assoc($hasil)) {
    extract($baris);
   $sutradara = get_sutradara($sutradara_film);
    $aktor = get_aktor($aktor_film);
    $tipefilm = get_tipefilm($tipe_film);
  
    $tabel .= <<< ENDHTML
    <tr>
      <td> $nama_film </td>
      <td> $tahun_film </td>
      <td> $sutradara </td>
      <td> $aktor </td>
      <td> $tipefilm </td>
    </tr>
ENDHTML;
}

$tabel .= <<< ENDHTML
  </table>
<p> $jum_film Film </p>
</div>
ENDHTML;

echo $tabel;
?>

2.    Buka halaman pada web browser Anda; layar Anda akan menampilkan berikut:




Contoh
Menambah link pada tabel
1.     Bukan tabel2.php dan edit query yang membaca informasi untuk mengambil bidang id_film:

// membaca informasi
$hasil = 'SELECT
        id_film, nama_film, tahun_film, sutradara_film,
        aktor_film, tipe_film
    FROM
        film
    ORDER BY
        nama_film ASC,
        tahun_film DESC';
$hasil = mysql_query($hasil, $db) or die(mysql_error($db));

2.    Edit heredoc yang menghasilkan baris-baris tabel sehingga judul film merupakan hyperlink:

$tabel .= <<< ENDHTML
<tr>
  <td> <a href="detilfilm.php?id_film=$id_film"> $nama_film </a> </td>
  <td> $tahun_film </td>
  <td> $sutradara </td>
  <td> $aktor </td>
  <td> $tipefilm </td>
</tr>
ENDHTML;

3.    Simpanlah file tersebut dengan nama tabel3.php, buka halaman itu dengan browser Anda. Layar Anda akan tampak seperti:




Contoh
Menambah data pada tabel
1.     Bukalah editor teks Anda, dan ketikkan kode berikut:

<?php
//menghubungkan ke MySQL
$db = mysql_connect('localhost', 'rismon', 'Dolokulu77') or
  die ('Tidak bisa terhubung. Periksa parameter koneksi.');

//memastikan bahwa database yang baru dibuat menjadi
//database yang aktif
mysql_select_db('situsfilm', $db) or die(mysql_error($db));

//mengubah tabel film mencakup bidang waktu running, bidang biaya,
//dan bidang pendapatan
$query = 'ALTER TABLE film ADD COLUMN (
    waktu_running_film TINYINT UNSIGNED NULL,
    biaya_film DECIMAL(4,1) NULL,
    pendapatan_film DECIMAL(4,1) NULL)';
mysql_query($query, $db) or die (mysql_error($db));

//menyisipkan data baru ke dalam tabel film untuk tiap film
$query = 'UPDATE film SET
        waktu_running_film = 101,
        biaya_film = 81,
        pendapatan_film = 242.6
    WHERE
        id_film = 1';
mysql_query($query, $db) or die(mysql_error($db));

$query = 'UPDATE film SET
        waktu_running_film = 89,
        biaya_film = 10,
        pendapatan_film = 10.8
    WHERE
        id_film = 2';
mysql_query($query, $db) or die(mysql_error($db));

$query = 'UPDATE film SET
        waktu_running_film = 134,
        biaya_film = NULL,
        pendapatan_film = 33.2
    WHERE
        id_film = 3';
mysql_query($query, $db) or die(mysql_error($db));
echo 'Database film sukses diperbarui!';
?>

2.    Simpan file ini dengan nama tambahdata.php, dan kemudian buka dalam jendela browser Anda. Anda akan melihat pesan keberhasilan sebagai pertanda bahwa database telah berhasil diperbarui.

Contoh
Menampilkan detil film
1.     Buka editor teks Anda, dan ketikkan program berikut:

<?php
// membaca id seorang sutradara dan menghasilkan namapenuhnya
function get_sutradara($id_sutradara) {
    global $db;
    $query = 'SELECT
             namapenuh_orang
        FROM
            orang
        WHERE
            id_orang = ' . $id_sutradara;
    $hasil = mysql_query($query, $db) or die(mysql_error($db));
    $baris = mysql_fetch_assoc($hasil);
    extract($baris);
    return $namapenuh_orang;
}

// membaca id dari aktor dan menghasilkan namapenuhnya
function get_aktor($id_aktor) {
    global $db;
    $query = 'SELECT
             namapenuh_orang
        FROM
            orang
        WHERE
            id_orang = ' . $id_aktor;
    $hasil = mysql_query($query, $db) or die(mysql_error($db));
    $baris = mysql_fetch_assoc($hasil);
    extract($baris);
    return $namapenuh_orang;
}

// mengambil id dari tipe film dan menghasilkan deskripsi tekstual
function get_tipefilm($id_tipefilm) {
    global $db;
        $query = 'SELECT
                 label_tipefilm
        FROM
            tipefilm
        WHERE
            id_tipefilm = ' . $id_tipefilm;
    $hasil = mysql_query($query, $db) or die(mysql_error($db));
    $baris = mysql_fetch_assoc($hasil);
    extract($baris);
    return $label_tipefilm;
}

// fungsi untuk menghitung apakah film untung, rugi, atau impas
function hitung_selisih($pendapatan, $biaya) {
    $selisih = $pendapatan - $biaya;
    if ($selisih < 0) {
        $warna = 'red';
        $selisih = '$' . abs($selisih) . ' miliar';
    } elseif ($selisih > 0) {
        $warna ='green';
        $selisih = '$' . $selisih . ' miliar';
    } else {
        $warna = 'blue';
        $selisih = 'impas';
    }
    return '<span style="color:' . $warna . ';"> ' . $selisih . ' </span>';
}

//menghubungkan ke MySQL
$db = mysql_connect('localhost', 'rismon', 'Dolokulu77') or
  die ('Tidak bisa terhubung. Periksa parameter koneksi.');

//memastikan bahwa database yang baru dibuat menjadi
//database yang aktif
mysql_select_db('situsfilm', $db) or die(mysql_error($db));

// membaca informasi
$query = 'SELECT
        nama_film, tahun_film, sutradara_film, aktor_film,
        tipe_film, waktu_running_film, biaya_film, pendapatan_film
    FROM
        film
    ORDER BY
        nama_film ASC,
        tahun_film DESC';
$hasil = mysql_query($query, $db) or die(mysql_error($db));
$baris = mysql_fetch_assoc($hasil);

$nama_film = $baris['nama_film'];
$sutradara_film = get_sutradara($baris['sutradara_film']);
$aktor_film = get_aktor($baris['aktor_film']);
$tahun_film = $baris['tahun_film'];
$waktu_running_film = $baris['waktu_running_film'] .' menit';
$pendapatan_film = $baris['pendapatan_film'] . ' miliar';
$biaya_film = $baris['biaya_film'] . ' miliar';
$kesehatan_film = hitung_selisih($baris['pendapatan_film'], $baris['biaya_film']);

// menampilkan informasi
echo <<< ENDHTML
  <html>
    <head>
      <title> Detil dan Review untuk: $nama_film </title>
    </head>
    <body>
      <div style="text-align: center;">
        <h2> $nama_film </h2>
        <h3> <em> Detil </em> </h3>
        <table cellpadding="2" cellspacing="2"
         style="width: 70%; margin-left: auto; margin-right: auto;">
         <tr>
           <td><strong> Judul </strong></strong></td>
           <td>$nama_film </td>
           <td><strong> Tahun Rilis </strong></strong></td>
           <td> $tahun_film </td>
         </tr><tr>
           <td><strong> Sutradara Film </strong></td>
           <td> $sutradara_film </td>
           <td><strong> Biaya </strong></td>
           <td> $biaya_film <td/>
         </tr><tr>
           <td><strong> Aktor </strong></td>
           <td> $aktor_film </td>
           <td><strong> Pendapatan </strong></td>
           <td> $pendapatan_film <td/>
         </tr><tr>
           <td><strong> Waktu Running </strong></td>
           <td> $waktu_running_film </td>
           <td><strong> Kondisi </strong></td>
           <td> $kesehatan_film <td/>
         </tr>
      </table></div>
  </body>
</html>
ENDHTML;
?>

2.    Simpan file tersebut dengan nama detilfilm.php, dan kemudian buka dengan jendela browser.
3.    Buka file tabel3.php pada jendela browser, dan klik pada salah satu link film tersebut. Hal itu akan membuka file detilfilm.php, dan Anda akan melihat seperti berikut:




Relasi
Bagaimana jika Anda ingin melihat semua review untuk film tertentu? Anda perlu menciptakan sebuah query SQL baru dalam halaman detilfilm.php dan mengeksekusinya, sehingga terdapat dua query SQL dalam satu halaman.

Relasi merupakan suatu cara untuk menggabungkan tabel-tabel sehingga Anda dapat mengakses data pada semua tabel tersebut. Keuntungan dari MySQL adalah bahwa ia merupakan suatu database relasional dan, oleh karena itu, mendukung pembuatan relasi antar tabel. Ketika digunakan secara benar, relasi dapat menjadi sangat berguna dan dapat dipakai untuk membaca data dari banyak tabel dalam satu query SQL.

Cara terbaik untuk mendemonstrasikan ini adalah menunjukkannya dalam contoh berdasarkan contoh yang telah ada.

Contoh
Menciptakan dan mengisi tabel review film
1.     Bukalah editor teks Anda, dan ketikkan kode berikut:

<?php
//menghubungkan ke MySQL
$db = mysql_connect('localhost', 'rismon', 'Dolokulu77') or
  die ('Tidak bisa terhubung. Periksa parameter koneksi.');

//memastikan bahwa database yang baru dibuat menjadi
//database yang aktif
mysql_select_db('situsfilm', $db) or die(mysql_error($db));

//menciptakan tabel review
$query = 'CREATE TABLE review (
        id_film_review INTEGER UNSIGNED NOT NULL,
        tanggal_review DATE NOT NULL,
        nama_reviewer VARCHAR(255) NOT NULL,
        komentar_review VARCHAR(255) NOT NULL,
        rating_review TINYINT UNSIGNED NOT NULL DEFAULT 0,
         
        KEY (id_film_review)
      )
      ENGINE=MyISAM';
mysql_query($query, $db) or die (mysql_error($db));

//menyisipkan data baru ke dalam tabel review
$query = <<< ENDSQL
INSERT INTO review
    (id_film_review, tanggal_review, nama_reviewer, komentar_review, rating_review)
VALUES
(1, "2014-09-23", "John Naibaho", "Saya kira ini merupakan film yang sangat hebat.
    Meskipun pada awalnya saya tidak terlalu tertarik.", 4),
(1, "2014-09-23", "Hamzan Wadi", "Saya kurang suka dengan film ini.", 2),
(1, "2014-09-28", "Vivian Siahaan", "Seharusnya dari dulu saya menontonnya!", 5),
(2, "2014-09-23", "Marolop Rotua", "Ini adalah film favoritku.", 5),
(3, "2014-09-23", "Rico Chandra", "Banyak informasi penting dalam film ini.", 3)
ENDSQL;
mysql_query($query, $db) or die(mysql_error($db));

echo 'Database film telah berhasil diperbarui!';
?>

2.    Simpan file ini dengan nama isitabel.php, dan buka dalam browser Anda. Tabel review Anda sekarang telah diciptakan dan diisi.

Contoh
Menampilkan review
1.     Tambahkan kode ini di atas file detilfilm.php:

// fungsi untuk menghasilkan rating
function hasilkan_rating($rating) {
    $rating_film = '';
    for ($i = 0; $i < $rating; $i++) {
        $rating_film .= ' < img src="star.png" alt="star"/ > ';
    }
    return $rating_film;
}

2.    Sekarang pecah ekor dari blok heredoc yang menampilkan informasi film sehingga terdapat dua:

           <td><strong> Kondisi </strong></td>
           <td> $kesehatan_film <td/>
         </tr>
      </table>
ENDHTML;

echo <<< ENDHTML
    </div>
  </body>
</html>
ENDHTML;

3.    Tambahkan kode di antara dua blok heredoc:

// membaca review untuk film ini
$query = 'SELECT
        id_film_review, tanggal_review, nama_reviewer, komentar_review,
        rating_review
    FROM
        review
    ORDER BY
        tanggal_review DESC';
$hasil = mysql_query($query, $db) or die(mysql_error($db));

// menampilkan review
echo <<< ENDHTML
  <h3><em> Review </em></h3>
  <table cellpadding="2" cellspacing="2"
    style="width: 90%; margin-left: auto; margin-right: auto;">
    <tr>
    <th style="width: 7em;"> Tanggal </th>
    <th style="width: 10em;"> Reviewer </th>
    <th> Komentar </th>
    <th style="width: 5em;"> Rating </th>
    </tr>
ENDHTML;

while ($baris = mysql_fetch_assoc($hasil)) {
    $tanggal = $baris['tanggal_review'];
    $nama = $baris['nama_reviewer'];
    $komentar = $baris['komentar_review'];
    $rating = hasilkan_rating($baris['rating_review']);

   echo <<< ENDHTML
    <tr>
    <td style="vertical-align:top; text-align: center;"> $tanggal </td>
    <td style="vertical-align:top;"> $nama </td>
    <td style="vertical-align:top;"> $komentar </td>
    <td style="vertical-align:top;"> $rating </td>
    </tr>
    ENDHTML;
}

Berikut merupakan isi dari file detilfilm.php:

<?php
// fungsi untuk menghasilkan rating
function hasilkan_rating($rating) {
    $rating_film = '';
    for ($i = 0; $i < $rating; $i++) {
        $rating_film .= '<img src="star.png" alt="star"/>';
    }
    return $rating_film;
}

// membaca id seorang sutradara dan menghasilkan namapenuhnya
function get_sutradara($id_sutradara) {
    global $db;
    $query = 'SELECT
             namapenuh_orang
        FROM
            orang
        WHERE
            id_orang = ' . $id_sutradara;
    $hasil = mysql_query($query, $db) or die(mysql_error($db));
    $baris = mysql_fetch_assoc($hasil);
    extract($baris);
    return $namapenuh_orang;
}

// membaca id dari aktor dan menghasilkan namapenuhnya
function get_aktor($id_aktor) {
    global $db;
    $query = 'SELECT
             namapenuh_orang
        FROM
            orang
        WHERE
            id_orang = ' . $id_aktor;
    $hasil = mysql_query($query, $db) or die(mysql_error($db));
    $baris = mysql_fetch_assoc($hasil);
    extract($baris);
    return $namapenuh_orang;
}

// mengambil id dari tipe film dan menghasilkan deskripsi tekstual
function get_tipefilm($id_tipefilm) {
    global $db;
        $query = 'SELECT
                 label_tipefilm
        FROM
            tipefilm
        WHERE
            id_tipefilm = ' . $id_tipefilm;
    $hasil = mysql_query($query, $db) or die(mysql_error($db));
    $baris = mysql_fetch_assoc($hasil);
    extract($baris);
    return $label_tipefilm;
}

// fungsi untuk menghitung apakah film untung, rugi, atau impas
function hitung_selisih($pendapatan, $biaya) {
    $selisih = $pendapatan - $biaya;
    if ($selisih < 0) {
        $warna = 'red';
        $selisih = 'Rp.' . abs($selisih) . ' miliar';
    } elseif ($selisih > 0) {
        $warna ='green';
        $selisih = 'Rp.' . $selisih . ' miliar';
    } else {
        $warna = 'blue';
        $selisih = 'impas';
    }
    return '<span style="color:' . $warna . ';"> ' . $selisih . ' </span>';
}

//menghubungkan ke MySQL
$db = mysql_connect('localhost', 'rismon', 'Dolokulu77') or
  die ('Tidak bisa terhubung. Periksa parameter koneksi.');

//memastikan bahwa database yang baru dibuat menjadi
//database yang aktif
mysql_select_db('situsfilm', $db) or die(mysql_error($db));

// membaca informasi
$query = 'SELECT
        nama_film, tahun_film, sutradara_film, aktor_film,
        tipe_film, waktu_running_film, biaya_film, pendapatan_film
    FROM
        film
    ORDER BY
        nama_film ASC,
        tahun_film DESC';
$hasil = mysql_query($query, $db) or die(mysql_error($db));
$baris = mysql_fetch_assoc($hasil);

$nama_film = $baris['nama_film'];
$sutradara_film = get_sutradara($baris['sutradara_film']);
$aktor_film = get_aktor($baris['aktor_film']);
$tahun_film = $baris['tahun_film'];
$waktu_running_film = $baris['waktu_running_film'] .' menit';
$pendapatan_film = $baris['pendapatan_film'] . ' miliar';
$biaya_film = $baris['biaya_film'] . ' miliar';
$kesehatan_film = hitung_selisih($baris['pendapatan_film'], $baris['biaya_film']);

// menampilkan informasi
echo <<< ENDHTML
  <html>
    <head>
      <title> Detil dan Review untuk: $nama_film </title>
    </head>
    <body>
      <div style="text-align: center;">
        <h2> $nama_film </h2>
        <h3> <em> Detil </em> </h3>
        <table cellpadding="2" cellspacing="2"
         style="width: 70%; margin-left: auto; margin-right: auto;">
         <tr>
           <td><strong> Judul </strong></strong></td>
           <td>$nama_film </td>
           <td><strong> Tahun Rilis </strong></strong></td>
           <td> $tahun_film </td>
         </tr><tr>
           <td><strong> Sutradara Film </strong></td>
           <td> $sutradara_film </td>
           <td><strong> Biaya </strong></td>
           <td> $biaya_film <td/>
         </tr><tr>
           <td><strong> Aktor </strong></td>
           <td> $aktor_film </td>
           <td><strong> Pendapatan </strong></td>
           <td> $pendapatan_film <td/>
         </tr><tr>
           <td><strong> Waktu Running </strong></td>
           <td> $waktu_running_film </td>
           <td><strong> Kondisi </strong></td>
           <td> $kesehatan_film <td/>
         </tr>
      </table>
ENDHTML;

// membaca review untuk film ini
$query = 'SELECT
        id_film_review, tanggal_review, nama_reviewer, komentar_review,
        rating_review
    FROM
        review
    ORDER BY
        tanggal_review DESC';
$hasil = mysql_query($query, $db) or die(mysql_error($db));

// menampilkan review
echo <<< ENDHTML
  <h3><em> Review </em></h3>
  <table cellpadding="2" cellspacing="2"
    style="width: 90%; margin-left: auto; margin-right: auto;">
    <tr>
    <th style="width: 7em;"> Tanggal </th>
    <th style="width: 10em;"> Reviewer </th>
    <th> Komentar </th>
    <th style="width: 5em;"> Rating </th>
    </tr>
ENDHTML;

while ($baris = mysql_fetch_assoc($hasil)) {
    $tanggal = $baris['tanggal_review'];
    $nama = $baris['nama_reviewer'];
    $komentar = $baris['komentar_review'];
    $rating = hasilkan_rating($baris['rating_review']);

       echo <<< ENDHTML
    <tr>
    <td style="vertical-align:top; text-align: center;"> $tanggal </td>
    <td style="vertical-align:top;"> $nama </td>
    <td style="vertical-align:top;"> $komentar </td>
    <td style="vertical-align:top;"> $rating </td>
    </tr>
    ENDHTML;
}

echo <<< ENDHTML
    </div>
  </body>
</html>
ENDHTML;
?>






No comments:

Post a Comment