Saturday, July 27, 2013

Export Data Dari MySQL ke XML dengan PHP

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.

Sumber : http://blog.rosihanari.net/export-data-dari-mysql-ke-xml-dengan-php

No comments:

Post a Comment