Saturday, May 14, 2016

Library Tree Menu Codeigniter

Hi guys, kali ini saya akan berbagi library Tree menu untuk kebutuhan untuk project website atau blog dengan menggunakan framework Codeigniter.

Ok, kita langsung saja siapkan table untuk media penymipanan menu. Berikut struktrnya :

DROP TABLE IF EXISTS `menus`;
CREATE TABLE `menus` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
`parent_id` int(11) NOT NULL DEFAULT '0',
`module` varchar(255) DEFAULT NULL,
`url` varchar(255) DEFAULT NULL,
`type` varchar(255) DEFAULT 'front' COMMENT 'front, backend',
`active` int(2) NOT NULL DEFAULT '1',
`order` int(2) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;


Selanjutnya berikut script/code library Tree Menu :

'; //parent tag open
private $pt_close = ''; //parent tag close
private $pt_slink = ''; //parent tag link
private $pt_attr = ''; /parent attribute
private $lpt_open = '



  • '; //list parent tag open
    private $lpt_close = '


  • '; //list parent tag close

    /*child properties*/
    private $ct_open = '
      '; //child tag open private $ct_close = '
    '; //child tag close
    private $ct_attr = ''; //child tag attribute
    private $lct_open = '



  • '; //list child tag open
    private $lct_close = '


  • '; //list child tag close

    var $obarray, $list;

    public function __construct($properties = array())
    {
    empty($properties) OR $this->initialize($properties, FALSE);
    $this->_mimes =& get_mimes();
    $this->_CI =& get_instance();
    log_message('info', 'Menu Class Initialized');
    }

    public function initialize(array $properties = array()){
    foreach ($properties as $key => $val)
    {
    if (property_exists($this, $key))
    {
    $this->$key = $val;
    }
    }
    }

    function buildTree($menu_array)
    {
    global $obarray, $list;

    $list = $this->pt_open;

    if (!is_array($menu_array)) return '';

    $obarray = $menu_array;

    foreach($obarray as $item){
    if($item['parent'] == 0){
    $mainlist = $this->_buildElements($item, 0);
    }
    }

    $list .= $this->pt_close;

    return $list;
    }

    private function _buildElements($parent, $append)
    {
    global $obarray, $list;

    if($parent['module']!='pages'){
    if($this->_hasChild($parent['id'])){
    $list .= $this->lpt_open . anchor($parent['module'], $parent['name'].$this->pt_attr, $this->pt_slink);
    }else{
    $list .= $this->lct_open . anchor($parent['module'], $parent['name'], '') . $this->lct_close;
    }
    }else{
    if($this->_hasChild($parent['id'])){
    $list .= $this->lpt_open . anchor($parent['module'].'/'.$parent['url'], $parent['name'].$this->pt_attr, $this->pt_slink);
    }else{
    $list .= $this->lct_open . anchor($parent['module'].'/'.$parent['url'], $parent['name'], '') . $this->lct_close;
    }
    }

    if($this->_hasChild($parent['id'])){
    $append++;
    $list .= $this->ct_open;
    $child = $this->_buildArray($parent['id']);

    foreach($child as $item){
    $list .= $this->_buildElements($item, $append);
    }

    if($this->_hasChild($parent['id'])){
    $list .= $this->lpt_close;
    }

    $list .= $this->ct_close;
    }
    }

    private function _hasChild($parent)
    {
    global $obarray;
    $counter = 0;
    foreach($obarray as $item){
    if($item['parent'] == $parent){
    ++$counter;
    }
    }
    return $counter;
    }

    private function _buildArray($parent)
    {
    global $obarray;
    $bArray = array();

    foreach($obarray as $item){
    if($item['parent'] == $parent){
    array_push($bArray, $item);
    }
    }

    return $bArray;
    }
    }


    Cara menggunakan sebagai berikut:


    load->library(‘omenu’);
    }

    Public function index()
    {
    $data[‘menu’] = $this->get_menus();
    $this->load->view(‘halama_utama’,$data);
    }

    Public function get_menus()
    {
    $properties = array(
    'pt_open' => '
    ',
    'pt_slink' => 'class="dropdown-toggle" data-toggle="dropdown"',
    'pt_attr' => ' ',
    'lpt_open' => '





    ',
    'ct_open' => '
    ',
    'ct_attr' => '',
    'lct_open' => '



  • ',
    'lct_close' => '


  • '
    );

    $this->load->library('omenu', $properties);
    $this->omenu->initialize($properties);
    $this->db->where('active', 1);
    $menu = $this->db->get('menus')->result_array();
    return $this->omenu->buildTree($menu);
    }
    }

    Lalu kita buat view,

    <….. tag html….>
    <….. tag html….>


    Mudah bukan… semoga bermaafat. Sampai jumpa pada artikel berikutnya.

    Sunday, December 27, 2015

    DETERMINISTIC, NO SQL, or READS SQL DATA error

    Just after giving name for database , next step it shows
    This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)...how to solve this?

    Most common solution: Open your php.ini file and search for display_errors = ON and change it to display_errors = Off

    If the above does not work, try the following:

    SSH to your server

    Connect to MySQL using your root user and passord and at the mysql prompt, run this command mysql> SET GLOBAL log_bin_trust_function_creators = 1;

    Monday, December 7, 2015

    Exception Codeigniter 3 pada PHP 7.0 [solved]

    awala hanya baca-baca feed yang sudah lama tidak sempat gw tengok. saat itu pula gw dapet info PHP 7.0 sudah di rilis. tanpa berpikir panjang, karena emank sudah nunggu lama banget. akhir lansung saja gw upgrade PHP 5.6.6 ke PHP 7 dan tidak lupa gw update juga Apache 2.4.x. pokoknya pake yang versi terkahir rilis. setelah proses update selesai, gw langsung coba running project yang sedang gw kerjaan yang menggunakan Framework Codeigniter akhir terjadilah error exception yg tidak biasanya. setelah coba cari tahu ketemulah solusi nya. Ternyata ada perbedaan anatar php5dan php7 adalam penulisan Exception. 

    Jika rekan-rekan ada yang menemui error serupa silahkan buka file Exceptions.php yang ada pada dirketori system/core/Exceptions.php

    Kemudian Rubah pada line 189:
     sebelumnya => "public function show_exception(Exception $exception)"  
     edit menjadi => "public function show_exception(Throwable $exception)"  
    

     dan error message Codeigntier pun menjadi mudah dibaca kembali tanpa ada tambahan error message yang aneh-aneh.

    semoga bermanfaat

    Friday, July 1, 2011

    Ternyata CodeIgniter itu seru juga..

    hayo ada yang masih ingat dengan framework? yach codeigniter adalah salah framework PHP. mungkin di Indonesia Codeigniter ini adalah framework yang paling banyak digunakan oleh para web developer.

    awalnya saya kurang suka dengan codeigniter. suatu hari ada temen senior. yang ngajak kerja bareng bikin aplikasi dengan menggunakan codeigniter. 2 minggu pertama bersama dengan codeigniter. sungguh terbata2. maklum biasa pake cakephp. trus pake codeigniter yang menurut saya awalnya primitif. gk secanggih cakephp. tapi lambar laun mulai suka dengan codeigniter. kenapa jadi suka codeigniter? codeigniter itu sangat flexible. apalagi kalo di tambah HMVC * ORM. wuh...


    nyambung... (kalo ada kesempatan lagi, kita terusin nulis codeigniternya..)

    http://www.codeigniter.com

    multiple rails version di ubuntu dengan RVM

    tanpa basa-basi(gk sempet ngangetin) langsung aja.
    ketika saya menulis saya menggunakan kubuntu 11.04 (nutt narwhal).
    langkar pertama :
    sudo apt-get install ruby rdoc irb ruby1.8-dev rubygems libopenssl-ruby
    sudo gem update --system
    sudo gem install rails
    Langkah kedua :
    sudo apt-get install curl git-core build-essential zlib1g-dev libssl-dev libreadline5-dev
    bash << (curl http://rvm.beginrescueend.com/releases/rvm-install-head)
    rvm get head
    rvm install 1.9.2
    sudo gem install rails

    Tuesday, May 31, 2011

    Apa itu cakephp? apa sama dengan pie?

    jangan hiraukan judulnya... hehe. karena ane gk tahu nech tulisan mo dikasih judul apa.  untuk para pemula (programmer php) yang telah tahu yang namanya framework. Mungkin juga ada beberapa yang bingung harus pilih framework apa. Karena di jagat dunia maya ini banyak sekali yang namanya framework php.

    Misalnya Cakephp (favorit ane), Akelos (kalo di situs resminya katanya mirip ruby on rails), yii, codeigniter(kayanya ini yang paling banyak digunain oleh para programmer php indonesia).

    Dalam tulisan ini ane mo ngupas  tentang  CAKEPHP framework (bersdasarkan pengalaman & pengetahuan ane yg sedikit).

    Cakephp adalah sebuah php framework yang menurut ane sangat bagus dan memudahkan para prgorammer php. write less code, yup karena kita bisa menggunakan generate by console. jadi gk perlu ngetik manual untuk setiap halaman (halaman index, add & edit). yang perlu kita lakukana adalah menyesuaikan dengan desain atau field tambahan saja.

    untuk kelebihan atau kekurangan cakephp  & compare sama framework php lain.  anda bisa kunjungi  : framework php compare.

    di tulisan selanjutnya insya allah ane mo nulis tutorial membuat website dengen cakephp.