adityarizki.net
12Dec/11

Membuat Dokumen XML dengan PHP dan MySQL

Tutorial kali ini akan membahas bagaimana cara membuat file XML dengan PHP yang diperoleh dari MySQL. Kemudian bagaimana cara menampilkan file XML tersebut ke dalam tampilan HTML. Proses pembentukan file XML dari MySQL (database) disebut sebagai parsing. XML  (Xtensible Markup Languange) merupakan representasi data dalam bentuk obyek. Representasi data dalam bentuk obyek tersebut disajikan dalam format seperti halnya tag HTML.

Sebelumnya saya akan memberikan ilustrasi kasus terlebih dahulu. Misalkan seseorang ingin membuat sebuah database toko buku. Untuk mendata semua buku, maka dibuatlah antarmuka form HTML yang memuat beberapa hal, seperti ID Buku, Author, Title, Genre, Price,  Publish Date, dan Description.

Kode Program untuk pembuatan database MySQL sesuai kebutuhan ilustrasi di atas :

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`)
)

Kode Program untuk pembuatan form input HTML (index.php):

<!DOCTYPE html>
<head>
	<title>Parsing XML-MySQL</title>
</head>
<body>
	<form action="#" method="POST">
		<table>
			<tr>
				<td>ID Buku</td>
				<td><input type="text" name="id" id="id"></input></td>
			</tr>
			<tr>
				<td>Author</td>
				<td><input type="text" name="author" id="author"></input></td>
			</tr>
			<tr>
				<td>Title</td>
				<td><input type="text" name="title" id="title"></input></td>
			</tr>
			<tr>
				<td>Genre</td>
				<td><input type="text" name="genre" id="genre"></input></td>
			</tr>
			<tr>
				<td>Price</td>
				<td><input type="text" name="price" id="price"></input></td>
			</tr>
			<tr>
				<td>Publish Date</td>
				<td><input type="text" name="pubdate" id="pubdate"></input></td>
			</tr>
			<tr>
				<td>Description</td>
				<td><input type="text" name="desc" id="desc"></input></td>
			</tr>
			<tr>
				<td><a href="parsing.php">Lihat Data</a></td>
				<td><input type="submit" name="submit" id="submit" value="Kirim"></input></td>
			</tr>

		</table>
	</form>
	<?php
		// 1. KONEKSI KE DATABASE
		mysql_connect("localhost", "root", "");
		mysql_select_db("example");

		// 2. MENGAMBIL DATA DARI INPUT FORM
		$id=$_POST["id"];
		$author=$_POST["author"];
		$title=$_POST["title"];
		$genre=$_POST["genre"];
		$price=$_POST["price"];
		$pubdate=$_POST["pubdate"];
		$desc=$_POST["desc"];

		// 3. MEMASUKKAN DATA KE DATABASE
		if ($id != ''){
		$query = "INSERT INTO book(id, author, title, genre, price, publish_date, description)
				VALUES ('$id', '$author', '$title', '$genre', '$price', '$pubdate', '$desc')";
		mysql_query($query);
		echo "Data sebelumnya dengan judul <b>$title</b> telah tersimpan.";
		}
		else
		{
		}

		// 4. MENGAMBIL DATA DARI DATABASE
		$namaTabel = "book";

		$query = "SELECT * FROM $namaTabel";
		$hasil = mysql_query($query);
		$jumField = mysql_num_fields($hasil);
		$sites = array();

		while ($data = mysql_fetch_array($hasil))
		{
			$sites [] = array('id' => $data['id'], 'author' => $data['author'], 'title' => $data['title'], 'genre' => $data['genre'],
			'price' => $data['price'], 'publish_date' => $data['publish_date'], 'description' => $data['description']);
		}

		// 5. PARSING DATA SQL -> XML Document : print_r($sites);
		$document = new DOMDocument();
		$document->formatOutput = true;

		$root = $document->createElement( "data" );
		$document->appendChild( $root );

		foreach( $sites as $book )
		{
			$block = $document->createElement( "book" );

			$id = $document->createElement( "id" );
			$id->appendChild(
			$document->createTextNode( $book['id'] )
			);
			$block->appendChild( $id );

			$author = $document->createElement( "author" );
			$author->appendChild(
			$document->createTextNode( $book['author'] )
			);
			$block->appendChild( $author );

			$title = $document->createElement( "title" );
			$title->appendChild(
			$document->createTextNode( $book['title'] )
			);
			$block->appendChild( $title);

			$genre = $document->createElement( "genre" );
			$genre->appendChild(
			$document->createTextNode( $book['genre'] )
			);
			$block->appendChild( $genre );

			$price = $document->createElement( "price" );
			$price->appendChild(
			$document->createTextNode( $book['price'] )
			);
			$block->appendChild( $price );

			$publish_date = $document->createElement( "publish_date" );
			$publish_date->appendChild(
			$document->createTextNode( $book['publish_date'] )
			);
			$block->appendChild( $publish_date );

			$description = $document->createElement( "description" );
			$description->appendChild(
			$document->createTextNode( $book['description'] )
			);
			$block->appendChild( $description );

			$root->appendChild( $block );
			}

			// 6. MENYIMPAN DATA DALAM BENTUK FILE linksp.xml
			$document->save("linksp.xml");
	?>
</body>
</html>

Penjelasan kode PHP pada script di atas (sesuai nomor urut) :

1. KONEKSI KE DATABASE : menghubungkan basis data dan nama tabel yang digunakan pada MySQL

2. MENGAMBIL DATA DARI INPUT FORM : input yang diisikan user ketika memasukkan nilai form akan ditangkap di bagian ini untuk dimasukkan ke dalam variabel

3. MEMASUKKAN DATA KE DALAM DATABASE : nilai dari masing-masing variabel pada poin 2 akan dimasukkan ke dalam basis data menggunakan QUERY PHP

4. MENGAMBIL DATA DARI DATABASE : mengambil data yang tersimpan dalam MySQL, kemudian hasilnya akan disimpan dalam sebuah array

5. PARSING MYSQL KE XML : konversi array menjadi dokumen XML

6. MENYIMPAN DATA DALAM BENTUK FILE : menyimpan dokumen XML ke dalam sebuah file berekstensi .xml

Contoh Hasil Keluaran File XML (linksp.xml), isi otomatis terbentuk sesuai dengan isi database MySQL :

<?xml version="1.0"?>
<data>
  <book>
    <id>bk101</id>
    <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</id>
    <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</id>
    <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>
</data>

Kode Program untuk Menampilkan File XML ke dalam HTML (parsing.php) :

<?php
// MENAMPILKAN DATA XML KE HTML
$dataxml = simplexml_load_file('linksp.xml');

foreach($dataxml->book as $buku)
{

   echo "Author : ".$buku->author."<br>";
   echo "Title : ".$buku->title."<br>";
   echo "Genre : ".$buku->genre."<br>";
   echo "Price : $ ".$buku->price."<br>";
   echo "Published Date : ".$buku->publish_date."<br>";
   echo "Description : ".$buku->description."<hr>";
}
echo "<a href='index.php'>Kembali ke Form</a>";
?>

Salah satu fungsi XML adalah sebagai representasi data yang dapat dikonsumsi untuk berbagai macam aplikasi yang berbeda. Sebuah aplikasi tidak perlu melakukan koneksi ke database, karena sudah diakomodasi dalam bentuk file XML.

Share and Enjoy

  • Facebook
  • Twitter
  • Delicious
  • LinkedIn
  • StumbleUpon
  • Add to favorites
  • Email
  • RSS
Tagged as: , , , Leave a comment
Comments (6) Trackbacks (0)
  1. eh di php ada fungsi foreach juga to? kirain cuma ada di .net, hehe

  2. seandai nya buat xml dari file/bukan dari datebase gimana mas? sama gunakan perintah
    $document = new DOMDocument();
    $document->formatOutput = true;

    $root = $document->createElement( “data” );
    $document->appendChild( $root );

    makasih

  3. Kak, nanya dunk….
    Kalo datanya emang dari database tapi yang mau disimpan di xml itu cuma yang user pilih aja gitu bisa ga ya?

  4. saya coba kuk tidak keluar data xml nya mas,, minta bantuanya mas, salah apanya ya,,

  5. izin sedot mas, nie yang saya cari-cari, sebelumnya makasih banyak, al hasil jalan dengan lancar pakai mysql dan pdo

    info tambahan buat teman-teman yang punya masalah yang sama,
    kalau ingin hasil xmlnya kayak gini

    pada bagian $document = new DOMDocument(); diganti $document = new DOMDocument(’1.0′,’UTF-8′);


Leave a comment

No trackbacks yet.

Pinterest