Dalam
praktikum ini akan dibahas bagaimana cara mengimport data buku yang ada dalam
dokumen XML di atas ke dalam database MySQL.
Berikut ini
adalah sebuah contoh dokumen XML yang merepresentasikan data buku yang terdapat
dalam sebuah toko buku :
databuku.xml
<?xml
version="1.0"?>
<catalog>
<book id="bk101">
<author>Gambardella,
Matthew</author>
<title>XML Developer's
Guide</title>
<genre>Computer</genre>
<price>44.95</price>
<publish_date>2000-10-01</publish_date>
<description>An in-depth look at
creating applications
with XML.</description>
</book>
<book id="bk102">
<author>Ralls, Kim</author>
<title>Midnight Rain</title>
<genre>Fantasy</genre>
<price>5.95</price>
<publish_date>2000-12-16</publish_date>
<description>A former architect
battles corporate zombies,
an evil sorceress, and her own childhood
to become queen
of the world.</description>
</book>
<book id="bk103">
<author>Corets, Eva</author>
<title>Maeve
Ascendant</title>
<genre>Fantasy</genre>
<price>5.95</price>
<publish_date>2000-11-17</publish_date>
<description>After the collapse of
a nanotechnology
society in England, the young survivors
lay the
foundation for a new
society.</description>
</book>
</catalog>
Dokumen XML di atas menyajikan 3 buah buku beserta
keterangannya yang kesemuanya disajikan dalam bentuk obyek dengan tag seperti
halnya HTML. Dalam setiap buku, terdapat 7 buah properties yaitu ID buku,
author (pengarang), title, genre (jenis buku), price, publish_date dan
description.
Selanjutnya adalah menuliskan script diatas dalam notepad
seperti berikut :
Sebelum proses importing data, hal utama yang harus Anda
lakukan terhadap data dari dokumen XML di atas adalah memparsing masing-masing
obyek, atau membaca value dalam setiap obyeknya. Sebagai contoh, kita akan
membaca data dari buku dengan id ‘bk101′. Dari proses parsing ini, kita harus
bisa mendapatkan data keterangan tentang buku tersebut, yaitu authornya siapa,
title nya apa dsb.
Bagaimana cara membaca value dari setiap obyek dalam dokumen XML? dalam
PHP telah tersedia function untuk proses parsing XML ini. Function yang
dimaksud adalah:
simplexml_load_file(nama file XML);
Oke, sekarang kita akan mencoba membuat script PHP untuk memparsing
data buku dari dokumen XML databuku.xml di atas.
Tulis script php dalam notepad, dan simpan dengan nama Parsing.php,
seperti berikut :
Setelah dokumen databuku.xml diparsing dengan
function
simplexml_load_file()
, maka selanjutnya menampilkan data hasil parsingnya. Sebelum kita menampilkan
data hasil parsing, kita lihat terlebih dahulu format XML nya dari data buku.
Setiap data buku, ditandai dengan tag pembuka <book> dan ditutup dengan
</book>. Sedangkan properti dari buku, seperti author, title dan
sebagainya terdapat di dalam tag <book>…</book> tersebut.
Nah… oleh karena itu untuk menampilkan author dari buku, gunakan
perintah :
$dataxml->book->author;
Sedangkan untuk menampilkan ID dari buku, gunakan perintah :
$dataxml->book['id'];
karena ID buku merupakan atribut dari <book>…</book>
Untuk menampilkan semua data buku, kita menggunakan looping foreach()
seperti di atas. Hasil dari script akan diperoleh tampilan seperti di bawah ini
:
Cara memparsing setiap data buku kita sudah, sekarang bagaimana
mengimportnya ke database MySQL.
Terlebih dahulu, kita siapkan tabel untuk menyimpan data bukunya.
Berikut ini adalah contoh struktur tabelnya
CREATE TABLE `book` (
`id` varchar(5),
`author` varchar(30),
`title` varchar(30),
`genre` varchar(30),
`price` float,
`publish_date` date,
`description` text,
PRIMARY KEY(`id`)
)
Untuk proses import data, kita harus memodifikasi script di atas menjadi seperti di bawah ini.
<?php
mysql_connect("dbhost", "dbuser", "dbpass");
mysql_select_db("dbname");
$dataxml = simplexml_load_file('databuku.xml');
foreach($dataxml->book as $buku)
{
$id = $buku['id'];
$author = $buku->author;
$title = addslashes($buku->title);
$genre = $buku->genre;
$price = $buku->price;
$publish_date = $buku->publish_date;
$description = $buku->description;
$query = "INSERT INTO book
VALUES ('$id', '$author', '$title', '$genre', '$price', '$publish_date', '$description') ";
mysql_query($query);
}
?>
Karena pada dasarnya konsep import data adalah proses menyisipkan data
ke dalam tabel, maka digunakanlah query SQL “INSERT INTO” pada script di atas.
Hasil dari proses import dengan script PHP di atas tampak pada tampilan
tabel berikut ini :