JqGrid + CodeIgniter

4 Cevap php

Ben CodeIgniter ile jqGrid çalışması yapmaya çalıştım, ama ben bunu yapamam, ben sadece json biçiminde tablodan veri göstermek istiyorum ... ama hiçbir şey olmuyor .. ama ben yanlış yapıyorum bilmiyorum, ben göremiyorum içeriği ile tablo i arıyorum.

benim denetleyicisi

class Grid extends Controller
{

  public function f()
  {

       $this->load->model('dbgrid');
       $var['grid'] =  $this->dbgrid->getcontentfromtable();

       foreach($var['grid'] as $row) {
        $responce->rows[$i]['id']=$row->id;
        $responce->rows[$i]['cell']=array($row->id,$row->id_catalogo);

       }
     $json = json_encode($responce);
       $this->load->view('vgrid',$json);



  } 


  function load_view_grid()
  {

    $this->load->view('vgrid');


  }


}

benim modeli

class Dbgrid extends Model{

function getcontentfromtable()
{


  $sql = 'SELECT * FROM anuncios';
  $query = $this->db->query($sql);
  $result = $query->result();


  return $result;   
}

benim görüşüm (script)

$(document).ready(function() { 
 jQuery("#list27").jqGrid({
        url:'http://localhost/sitio/index.php/grid/f',
        datatype: "json",
        mtype: "post",
        height: 255,
        width: 600,
        colNames:['ID','ID_CATALOGO'],
        colModel:[
            {name:'id',index:'id', width:65, sorttype:'int'},
            {name:'id_catalogo',index:'id_catalogo', sorttype:'int'}


        ],
        rowNum:50,
        rowTotal: 2000,
        rowList : [20,30,50],
        loadonce:true,
        rownumbers: true,
        rownumWidth: 40,
        gridview: true,
        pager: '#pager27',
        sortname: 'item_id',
        viewrecords: true,
        sortorder: "asc",
        caption: "Loading data from server at once" 
    });

}); 

Birisi bana yardımcı umut

4 Cevap

I am a new programmer in code igniter. I am trying to integrate jqgrkimlik with code igniter and after seven hours i came to a successful point where jqgrkimlik and code igniter is fully integrated with search option.

İlk başta, uygulama / model dizininde bir model yazın. Kod ......

class JqgrkimlikSample extends CI_Model {

  function getAllData($start,$limit,$skimlikx,$sord,$where){
    $this->db->select('kimlik,isim,E-posta,pasaport,telefon,faks,adres');
    $this->db->limit($limit);
    if($where != NULL)
        $this->db->where($where,NULL,FALSE);
    $this->db->order_by($skimlikx,$sord);
    $query = $this->db->get('info',$limit,$start);

    return $query->result();
  }
} 

Sonra, başvuru / denetleyici dizininde bir kontrolör yazmak. Kodudur

class Demo extends CI_Controller {

function __construct() {
    parent::__construct();
    $this->load->model('JqgrkimlikSample');
}

function jqGrkimlik(){
$this->load->view('showGrkimlik');
}

function loadData(){
    $page = isset($_POST['page'])?$_POST['page']:1; 
    $limit = isset($_POST['rows'])?$_POST['rows']:10; 
    $skimlikx = isset($_POST['skimlikx'])?$_POST['skimlikx']:'isim'; 
    $sord = isset($_POST['sord'])?$_POST['sord']:'';         
    $start = $limit*$page - $limit; 
    $start = ($start<0)?0:$start; 

    $where = ""; 
    $searchField = isset($_POST['searchField']) ? $_POST['searchField'] : false;
    $searchOper = isset($_POST['searchOper']) ? $_POST['searchOper']: false;
    $searchString = isset($_POST['searchString']) ? $_POST['searchString'] : false;

    if ($_POST['_search'] == 'true') {
        $ops = array(
        'eq'=>'=', 
        'ne'=>'<>',
        'lt'=>'<', 
        'le'=>'<=',
        'gt'=>'>', 
        'ge'=>'>=',
        'bw'=>'LIKE',
        'bn'=>'NOT LIKE',
        'in'=>'LIKE', 
        'ni'=>'NOT LIKE', 
        'ew'=>'LIKE', 
        'en'=>'NOT LIKE', 
        'cn'=>'LIKE', 
        'nc'=>'NOT LIKE' 
        );
        foreach ($ops as $key=>$value){
            if ($searchOper==$key) {
                $ops = $value;
            }
        }
        if($searchOper == 'eq' ) $searchString = $searchString;
        if($searchOper == 'bw' || $searchOper == 'bn') $searchString .= '%';
        if($searchOper == 'ew' || $searchOper == 'en' ) $searchString = '%'.$searchString;
        if($searchOper == 'cn' || $searchOper == 'nc' || $searchOper == 'in' || $searchOper == 'ni') $searchString = '%'.$searchString.'%';

        $where = "$searchField $ops '$searchString' "; 

    }

    if(!$skimlikx) 
        $skimlikx =1;
    $count = $this->db->count_all_results('info'); 
    if( $count > 0 ) {
        $total_pages = ceil($count/$limit);    
    } else {
        $total_pages = 0;
    }

    if ($page > $total_pages) 
        $page=$total_pages;
    $query = $this->JqgrkimlikSample->getAllData($start,$limit,$skimlikx,$sord,$where); 
    $responce->page = $page;
    $responce->total = $total_pages;
    $responce->records = $count;
    $i=0;
    foreach($query as $row) {
        $responce->rows[$i]['kimlik']=$row->kimlik;
        $responce->rows[$i]['cell']=array($row->isim,$row->E-posta,$row->pasaport,$row->telefon,$row->faks,$row->adres);
        $i++;
    }

    echo json_encode($responce);
}
}

Ve nihayet sizin application / views dizinine bir görünüm yazmak ..

<head>

    <link rel="stylesheet" type="text/css" href="<?php echo base_url()?>application/views/css/custom-theme/jquery-ui-1.8.16.custom.css" />

    <link type="text/css" href="<?php echo base_url()?>application/views/css/ui.jqgrkimlik.css" rel="stylesheet" />

    <link type="text/css" href="<?php echo base_url()?>application/views/css/plugins/searchFilter.css" rel="stylesheet" />

    <style>
        html, body {
            margin: 0;
            padding: 0;
            font-size: 75%;
        }
    </style>

    <script type="text/javascript" src="<?php echo base_url(); ?>application/views/js/jquery-1.5.2.min.js"></script>

    <script type="text/javascript" src="<?php echo base_url(); ?>application/views/js/i18n/grkimlik.locale-en.js"></script>

    <script type="text/javascript" src="<?php echo base_url(); ?>application/views/js/jquery.jqGrkimlik.min.js"></script>


    <title>Codeigniter With JQGrkimlik</title>
</head>
<body>
    <center>
        <h1>Codeigniter With JQGrkimlik</h1>
    <?php
        $ci =& get_instance();
        $base_url = base_url();
    ?>
    <table kimlik="list"></table><!--Grkimlik table-->
    <div kimlik="pager"></div>  <!--pagination div-->
    </center>
</body>


<script type="text/javascript">
        $(document).ready(function (){
            jQuery("#list").jqGrkimlik({
                url:'<?=$base_url.'index.php/demo/loadData'?>',      //another controller function for generating data
                mtype : "post",             //Ajax request type. It also could be GET
                datatype: "json",            //supported formats XML, JSON or Arrray
                colNames:['Name','Email','Passport','Phone','Fax','Address'],       //Grkimlik column headings
                colModel:[
                    {isim:'isim',index:'isim', wkimlikth:100, align:"left"},
                    {isim:'E-posta',index:'E-posta', wkimlikth:150, align:"left"},
                    {isim:'pasaport',index:'pasaport', wkimlikth:100, align:"right"},
                    {isim:'telefon',index:'telefon', wkimlikth:100, align:"right"},
                    {isim:'faks',index:'faks', wkimlikth:100, align:"right"},
                    {isim:'adres',index:'adres', wkimlikth:100, align:"right"},
                ],
                rowNum:10,
                wkimlikth: 750,
                //height: 300,
                rowList:[10,20,30],
                pager: '#pager',
                sortisim: 'kimlik',
                viewrecords: true,
                rownumbers: true,
                grkimlikview: true,
                caption:"List Of Person"
            }).navGrkimlik('#pager',{edit:false,add:false,del:false});
        });
    </script>

For the view file for myself i create two folder in views directory js and css. and in js foder i place the jquery-1.5.2.min.js, grkimlik.locale-en.js(views/js/i18n/), jquery.jqGrkimlik.min.js which you find in jqgrkimlik package.

Jquery-ui-1.8.16.custom.css, ui.jqgrkimlik.css bir ihtiyaç Aynı şekilde de jqGrkimlik paketinde mevcut olduğunu.

tam süreci çalıştırmak için bir veritabanı adlandırılmış jqgrkimlik_sample oluşturmak zorunda ve veritabanında bilgi alanları içeren adında bir tablo oluşturun ...

kimlik

isim

E-posta

pasaport

telefon

faks

adres

thats it. keyfini çıkarın. güle güle.

Eğer açıklamada göndermek sunucu tarafından üretilen veriler

{"rows":{"":{"id":"11","cell":["11","225101503"]}}} 

Yanlış formatı var. Çıkış gibi görünüyor olmalı

{ 
  "total": "xxx", 
  "page": "yyy", 
  "records": "zzz",
  "rows" : [
    {"id" :"1", "cell" :["cell11", "cell12", "cell13"]},
    {"id" :"2", "cell":["cell21", "cell22", "cell23"]},
      ...
  ]
}

(http://www.trirand.com/jqgridwiki/doku.php?id=wiki:retrieving_data#json_data bakınız). Yani en azından böyle olmalıdır

{"rows":[{"id":"11","cell":["11","225101503"]}]}

Eğer tanımlarsanız genel jsonReader, hemen hemen herhangi bir veri okumak mümkün olacak. Eğer üretmek veriler sadece jsonReader (http://www.trirand.com/jqgridwiki/doku.php?id=wiki:retrieving_data#jsonreader_as_function ve http://stackoverflow.com/questions/2835957/jquery-with-asp-net-mvc-calling-ajax-enabled-web-service/2836817#2836817 bakınız) fonksiyonları ile tanımlanmış tarafından readed olabilir. Sizin için basit yolu jsonReader standardına göre readed edilebilir bir standart FORMET (yukarıya bakınız), verileri üretmek için sunucu kodu değiştirmek olacaktır.

Ve bir tane daha küçük sözler. sorttype kullanılması datatype: "json" için herhangi bir etkisi yoktur. Parametre sorttype local veri sıralama ile çalışır. Durumunda datatype: "json" sunucu doğru veri sıralama için sorumlu olacaktır. sunucuya kullanıcı veri sıralama için seçim sütununun sadece ismini göndermek jqGrid.

These Solution is Cover full JqGrid Data Load and CRUD. This is Very Simple Task. Just go through the following steps and enjoy.

  1. Sadece aşağıdaki gibi bir model yazın

    class gridAction_model extends CI_Model {
    
    public function __construct() {
        $this->load->database();
    }
    
    function getAllTeacherDesignation($start, $limit, $sidx, $sord, $where) {
    
        $this->db->select('DesignationId,DesignationName,Description,Status');
        $this->db->limit($limit);
        if ($where != NULL)
            $this->db->where($where, NULL, FALSE);
        $this->db->order_by($sidx, $sord);
        $query = $this->db->get('TeacherDesignation', $limit, $start);
    
        return $query->result();
    }
    
    function insert_teacherDesignation($data) {
        return $this->db->insert('TeacherDesignation', $data);
    }
    
    function update_teacherDesignation($id, $data) {
        $this->db->where('DesignationId', $id);
        return $this->db->update('TeacherDesignation', $data);
    }
    
    function delete_teacherDesignation($id) {
        $this->db->where('DesignationId', $id);
        $this->db->delete('TeacherDesignation');
    }
    

    }

  2. Şimdi Kontrol Sınıf aşağıdaki Yöntem Ekle

        class grid_action extends CI_Controller {
    
    public function __construct() {
        parent::__construct();
        $this->load->helper("form");
        $this->load->model("gridAction_model");
    }
    
    public function loadTeacherDesignationData() {
    
        $page = isset($_POST['page']) ? $_POST['page'] : 1;
        $limit = isset($_POST['rows']) ? $_POST['rows'] : 10;
        $sidx = isset($_POST['sidx']) ? $_POST['sidx'] : 'DesignationName';
        $sord = isset($_POST['sord']) ? $_POST['sord'] : '';
        $start = $limit * $page - $limit;
        $start = ($start < 0) ? 0 : $start;
    
        $where = "";
        $searchField = isset($_POST['searchField']) ? $_POST['searchField'] : false;
        $searchOper = isset($_POST['searchOper']) ? $_POST['searchOper'] : false;
        $searchString = isset($_POST['searchString']) ? $_POST['searchString'] : false;
    
        if ($_POST['_search'] == 'true') {
            $ops = array(
                'eq' => '=',
                'ne' => '<>',
                'lt' => '<',
                'le' => '<=',
                'gt' => '>',
                'ge' => '>=',
                'bw' => 'LIKE',
                'bn' => 'NOT LIKE',
                'in' => 'LIKE',
                'ni' => 'NOT LIKE',
                'ew' => 'LIKE',
                'en' => 'NOT LIKE',
                'cn' => 'LIKE',
                'nc' => 'NOT LIKE'
            );
            foreach ($ops as $key => $value) {
                if ($searchOper == $key) {
                    $ops = $value;
                }
            }
            if ($searchOper == 'eq')
                $searchString = $searchString;
            if ($searchOper == 'bw' || $searchOper == 'bn')
                $searchString .= '%';
            if ($searchOper == 'ew' || $searchOper == 'en')
                $searchString = '%' . $searchString;
            if ($searchOper == 'cn' || $searchOper == 'nc' || $searchOper == 'in' || $searchOper == 'ni')
                $searchString = '%' . $searchString . '%';
    
            $where = "$searchField $ops '$searchString' ";
        }
    
        if (!$sidx)
            $sidx = 1;
        $count = $this->db->count_all_results('TeacherDesignation');
        if ($count > 0) {
            $total_pages = ceil($count / $limit);
        } else {
            $total_pages = 0;
        }
    
        if ($page > $total_pages)
            $page = $total_pages;
    
        $query = $this->gridAction_model->getAllTeacherDesignation($start, $limit, $sidx, $sord, $where);
    
        $responce = new stdClass;
    
        $responce->page = $page;
        $responce->total = $total_pages;
        $responce->records = $count;
        $i = 0;
    
        foreach ($query as $row) {
            $responce->rows[$i]['id'] = $row->DesignationId;
            $responce->rows[$i]['cell'] = array($row->DesignationId, $row->DesignationName, $row->Description, $row->Status);
            $i++;
        }
        echo json_encode($responce);
    }
    
    public function crudTeacherDesignation() {
    
        $oper = $this->input->post('oper');
        $id = $this->input->post('id');
        $DesignationId = $this->input->post('DesignationId');
        $DesignationName = $this->input->post('DesignationName');
        $Description = $this->input->post('Description');
        $Status = $this->input->post('Status');
    
        switch ($oper) {
            case 'add':
                $data = array('DesignationId' => $DesignationId, 'DesignationName' => $DesignationName, 'Description' => $Description, 'Status' => $Status);
                $this->gridAction_model->insert_teacherDesignation($data);
                break;
            case 'edit':
                $data = array('DesignationId' => $DesignationId, 'DesignationName' => $DesignationName, 'Description' => $Description, 'Status' => $Status);
                $this->gridAction_model->update_teacherDesignation($DesignationId, $data);
                break;
            case 'del':
                $this->gridAction_model->delete_teacherDesignation($DesignationId);
                break;
        }
    }  
    

    }

  3. View Script Ekle

     <table id="gridDesignation"> </table>
    
     <div id="pager"> </div>
    
    
    
    
    
            $(document).ready(function () {
    
        jQuery("#gridDesignation").jqGrid({
            url:'<?php echo base_url(); ?>grid_action/loadTeacherDesignationData',                
            mtype : "post",              //Ajax request type. It also could be GET
            datatype: "json",            //supported formats XML, JSON or Arrray
            colNames:['Designation ID','Designation Name','Description','Status'],       //Grid column headings
            colModel:[
                {name:'DesignationId',index:'DesignationId', width:100, align:"left", editable:true, editrules:{required:true}},
                {name:'DesignationName',index:'DesignationName', width:150, align:"left",editable:true,editrules:{required:true}},
                {name:'Description',index:'Description', width:100, align:"left", sortable:false, editable:true,editrules:{required:true}},
                {name:'Status',index:'Status', width:100, align:"right",editable:true,editrules:{required:true}, 
                    edittype:'select', editoptions:{value:"1:Active;0:InActive"}
                }
            ],
            rownumbers: true,
            rowNum:10,
            width: 750,
            height: "100%",
            rowList:[10,20,30],
            pager: jQuery('#pager'),
            sortname: 'DesignationName',
            autowidth: true,
            viewrecords: true,            
            gridview: true,  
            ondblClickRow: function(id){              
                $("#gridDesignation").editGridRow(id, {closeAfterEdit:true,mtype:'POST'});                
            },
            sortorder: "desc",       
            editurl: '<?php echo base_url() ?>grid_action/crudTeacherDesignation', //URL Process CRUD
            multiselect: false,
            caption:"List Of Teacher Designation"
        }).navGrid('#pager',
        {view:true,edit:true,add:true,del:true},
        {closeOnEscape:true},
        {closeOnEscape:true},
        {closeOnEscape:true},
        {closeOnEscape:true},
        {
            closeOnEscape:true,closeAfterSearch:false,multipleSearch:false, 
            multipleGroup:false, showQuery:false,
            drag:true,showOnLoad:false,sopt:['cn'],resize:false,
            caption:'Search Record', Find:'Search', 
            Reset:'Reset Search'
        }
    );        
    
    });
    

Burada birçok kez kullanılan triand örneği kodunu Lütfen uyarı var SQL-injection risk. $where dizesini oluşturmadan önce u gibi searchString kaçmak gerekir;

replace this:

$where = "$searchField $ops '$searchString' "; 

with this:

$searchString = mysql_real_escape_string($searchString);
$where = "$searchField $ops '$searchString' ";