Web Programming: Export Data Dari MySQL ke XML dengan PHP

Beberapa hari yang lalu, saya telah memposting artikel bagaimana membuat script PHP untuk mengimport data dari XML ke MySQL. Nah… untuk artikel kali ini, saya akan coba bahas kebalikannya yaitu membuat script PHP untuk export data dari MySQL ke XML.

Mau tahu caranya? Simak artikel ini baik-baik ya :-)

Dalam artikel ini, kita akan memanfaatkan data yang telah tersimpan dalam tabel ‘book’ MySQL seperti yang sudah dibahas di artikel import data dari XML ke MySQL. Nah.. tujuan dari script yang akan kita buat ini nanti yaitu mengenerate dokumen XML dari data yang telah tersimpan dalam tabel ‘book’ tersebut.

OK.. bagaimana cara membuat scriptnya? pertama kita buat asumsi terlebih dahulu bahwa dokumen XML yang akan kita hasilkan akan berbentuk seperti ini

<?xml version='1.0'?>
<data>
   <book>
    .
    .
    .
   </book>
   <book>
    .
    .
    .
   </book>
    .
    .
</data>

Nama tag <book>…</book> ini nanti misalkan kita ambil dari nama tabelnya yaitu ‘book’. Sedangkan nama tag properti dari setiap buku, nantinya akan diambil dari nama field-fieldnya. Sehingga diharapkan nantinya struktur dokumen XML nya berbentuk seperti di bawah ini

<?xml version='1.0'?>
<data>
   <book>
      <id>...</id>
      <author>...</author>
      <title>...</title>
      <genre>...</genre>
      <price>...</price>
      <publish_date>...</publish_date>
      <description>...</description>
   </book>
   <book>
     <id>...</id>
      <author>...</author>
      <title>...</title>
      <genre>...</genre>
      <price>...</price>
      <publish_date>...</publish_date>
      <description>...</description>
   </book>
    .
    .
</data>

Nah.. dengan struktur di atas, bagaimana bentuk script PHP nya?

export2xml.php

<?php
 
mysql_connect("dbhost", "dbuser", "dbpass");
mysql_select_db("dbname");
 
$namaTabel = "book";
 
header('Content-Type: text/xml');
 
$query = "SELECT * FROM $namaTabel";
$hasil = mysql_query($query);
$jumField = mysql_num_fields($hasil);
 
echo "<?xml version='1.0'?>";
echo "<data>";
while ($data = mysql_fetch_array($hasil))
{
   echo "<".$namaTabel.">";
   for ($i=0; $i<=$jumField-1; $i++)
   {
      $namaField = mysql_field_name($hasil, $i);
      echo "<".$namaField.">".$data[$namaField]."</".$namaField.">";
   }
   echo "</".$namaTabel.">";
}
echo "</data>";
?>

Penjelasan:

Perintah header('Content-Type: text/xml'); digunakan untuk memberitahukan ke browser bahwa hasil output script adalah dalam format XML, bukan HTML.

Perintah mysql_num_fields() digunakan untuk menghitung jumlah field yang dihasilkan dari sebuah query SQL. Jumlah field ini nanti akan digunakan untuk looping ketika proses membuat tag properti dari setiap data buku.

Sedangkan perintah mysql_field_name() digunakan untuk membaca nama field pada urutan tertentu sesuai nomor indeksnya.

Perhatikan contoh penggunaan function mysql_field_name() berikut ini

<?php
$query = "SELECT * FROM book";
$hasil = mysql_query($query);
 
// akan memunculkan nama field pertama dari hasil query (field: ID) 
echo mysql_field_name($hasil, 0); 
 
// akan memunculkan nama field kedua dari hasil query (field: AUTHOR) 
echo mysql_field_name($hasil, 1);
 
// akan memunculkan nama field ketiga dari hasil query (field: TITLE) 
echo mysql_field_name($hasil, 2);
?>

Dari contoh tersebut, maka mysql_field_name() dapat kita gunakan untuk mengenerate nama tag properti dari data buku yang kebetulan sama dengan nama fieldnya.

Hasil dari script export2xml.php di atas akan seperti di bawah ini:

Photobucket

source: blog.rosihanari.net

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s