Codeigniter menyimpan data parsing XML ke database

xml insert into database
pada tips sebelumnya kita hanya parsing data XML RSS kemudian langsung menampikan data apa yang diparsing pada waktu itu juga, nah sekarang cangkal mencoba sebelum data ditampikan, terlebih dahulu menyimpan data ke database, sehingga data XML yang diparsing sebelumnya masih tersimpan di database.
kenapa cangkal melakukan ini? karena kita ketahui data RSS selalu update sehingga parsing XML hari kameren berbeda dengan data parsing hari ini.

nah data yang ingin kita simpan ke dalam database tetap sama fiednya yaitu title, link, pubDate dan description. cangkal pada tips ini menggunakan database MySql, ayo sob kita create table t_xml pada database coba. ini scriptnya
CREATE TABLE IF NOT EXISTS `t_xml` (
`id_xml` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(200) NOT NULL,
`link` varchar(200) NOT NULL,
`pubDate` datetime NOT NULL,
`description` text NOT NULL,
PRIMARY KEY (`id_xml`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=325 ;

setelah konfigurasi database selesai, saatnya kita koding PHP menggunakan codeigniter, hal yang akan disiapkan pada CI seperti struktur berikut
- aplication
   - config
      - database.php
   - controller
      - Xml.php
   - model
     - Xml_model.php

kita ikuti konfigurasi satu demi satu struktur yang diatas, untuk konfigurasi database.php seperti dibawah ini

$active_group = 'default';
$query_builder = TRUE;

$db['default'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => '',
'database' => 'coba',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => (ENVIRONMENT !== 'production'),
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => TRUE
);

kemudian kita ke bagian controller Xml.php, kita buat function insertdetik seperti list script di bawah ini

public function detikinsert ()
{
$feed_url="http://rss.detik.com/index.php/inet";
$content = file_get_contents($feed_url);
$x = new SimpleXmlElement(html_entity_decode($content));
$dataArr = array();
foreach($x->channel->item as $row){
$title = $row->title;
$link = $row->link;
$pubDate = date("Y-m-d H:i", strtotime($row->pubDate));
$description = $row->description;
$dataArr[] = "('$title', '$link', '$pubDate', '$description')";
}

// echo $pubDate;
$this->load->model('Xml_model');
$this->Xml_model->insert($dataArr);
$this->session->set_flashdata('message', 'Create Record Success');
redirect(site_url('xml/detik'));
}

setelah itu kita masuk ke bagian model Xml_model.php buat function insert seperti script ini, coding ini menggunakan implode agar dapat memisah data array $dataArr
yang berjumlah 10 row.
// insert data
function insert($dataArr)
{
$query_str = 'insert into t_xml (title,link, pubDate, description) values '.implode(',', $dataArr).'';
$query = $this->db->query($query_str);
}

ok sob, sekarang jalankan di url browser kamu http://localhost:808/enjoyit/index.php/xml/insertdetik ,kemudian cek data di database mysql menggunakan phpmyadmin. apakah data tersimpan seperti gambar di bawah ini sob? berarti sobat sudah berhasil melakukan tips ini

insert xml to database


regards,
cangkal