Fairuz Sulaiman

Tips Bijak Wang , Publications Services , Internet Marketing, Ecommerce,

Tutorial CakePHP 1.3 | Menghasilkan keputusan dalam bentuk XML daripada jadual pangkalan data

Assalamualaikum…

Kali ini saya ingin kongsikan sedikit tutorial mudah untuk menghasilkan keputusan di dalam bentuk XML daripada jadual pangkalan data. Ia merupakan alternatif yang selain daripada menggunakan helpers XML yang terbina di dalam cakePHP. Dan hasilnya adalah seperti dibawah.

Klik Untuk Lihat Lebih Jelas

 

Bismillahirrahmanirrahim { Untuk pembaca Muslim sahaja , bagi pembaca no-Muslim bacalah doa supaya dipermudahkan pemahaman }.

Langkah Pertama : Sila muat turun fail array2xml.php atau cipta satu fail bernama array2xml.php menggunakan notepad yang kepilkan di dalam post ini ke dalam folder vendors.

<?php
/****
* @PHPVER4.0
*
* @author	emnu
* @ver	--
* @date	12/08/08
*
* use this class to convert from mutidimensional array to xml.
* see example.php file on howto use this class
*
*/

class arr2xml
{
	var $array = array();
	var $xml = '';

	function arr2xml($array)
	{
		$this->array = $array;

		if(is_array($array) && count($array) > 0)
		{
			$this->struct_xml($array);
		}
		else
		{
			$this->xml .= "no data";
		}
	}

	function struct_xml($array)
	{
		foreach($array as $k=>$v)
		{
			if(is_array($v))
			{
				$tag = ereg_replace('^[0-9]{1,}','data',$k); // replace numeric key in array to 'data'
				$this->xml .= "<".htmlentities($tag).">";
				$this->struct_xml($v);
				$this->xml .= "</".htmlentities($tag).">";
			}
			else
			{
				$tag = ereg_replace('^[0-9]{1,}','data',$k); // replace numeric key in array to 'data'
				$this->xml .= "<".htmlentities($tag).">".htmlentities($v)."</".htmlentities($tag).">";
			}
		}
	}

	function get_xml()
	{
		$header = "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?><root>";
		$footer = "</root>";

		echo $header;
		echo $this->xml;
		echo $footer;
	}
}
?>

Langkah Kedua : Buka folder controller dan buka fail controller yang anda ini menjanakan data dalam bentuk XML. Di dalam tutorial ini saya menggunakan jadual bernama cubaans. Oleh itu, nama controller yang diperlukan ialah cubaans_controller.php

Langkah Ketiga : Di dalam fail cubaans_controller.php sila tambah code di bawah sebelum class CubaansController extends AppController {. Fungsi App:import() adalah untuk memanggil fungsi terbina di dalam file array2xml.php yang di masukkan di dalam Langkah 1. Untuk rujukan boleh klik url  ini http://book.cakephp.org/view/943/Loading-Vendor-Files

<?php
       // fail cubaans_controller.php
       App::import('Vendor','Array2xml', array('file' => 'array2xml.php'));
       class CubaansController extends AppController {
?>

Langkah 4: Cipta function @ fungsi baru bagi menjana keputusan dalam jadual cubaans. Sila rujuk kod di bawah untuk di copy-paste dalam fail cubaans_controller.php . Untuk maklumat pembaca, bahagian find itu boleh diubahsuai berdasarkan keperluan pembaca. Untuk maklumat terperinci boleh rujuk pada url ini http://book.cakephp.org/view/1018/find

<?php
// file cubaans_controller.php
	function view_xml()
	{
		   $this->layout=null;
		   $allCubaans = $this->Cubaan->find('all');
		   $xmlCubaans = new arr2xml($allCubaan);
		   $this->set('xmlCubaans', $xmlCubaans);
	}
?>

Langkah 5: Buka folder views dan folder cubaans kemudian cipta satu fail baru bernama view_xml.ctp { pastikan nama fail sama dengan nama fungsi baru yang dibuat pada Langkah 4). Kemudian tampalkan code di bawah pada fail tersebut kemudian simpan.

<?php
        // view_xml.ctp
	header ("content-type: text/xml");
	echo $xmlSeminars->get_xml();
?>

Langkah 6: Dengan menggunakan web browser taip : http://localhost/namasystem/cubaans/view_xml dan anda akan lihat keputusannya. seperti rajah di atas.

Untuk memuat turun sila komen ye. Insyallah saya akan emelkan kepada anda kembali. Fail SQL, controller dan view bagi tutorial ini.

 

Tagged as: , , ,

1 Comment

  1. Tutorial yang bagus.. kalau php5 boleh pakai built-in extension SimpleXML

Leave a Response