Как отобразить серийные номера в таблице, созданной с использованием библиотеки таблиц в codeigniter? - PullRequest
0 голосов
/ 17 сентября 2011

Я знаю, как создавать нумерацию страниц и генерировать таблицу, содержащую информацию из базы данных в codeigniter, но я не знаю, как отображать серийные номера для каждой строки в таблице.Пример:

SL.  Name           Email
1.  Srijon      example@yahoo.com
2.  Jake        jake@yahoo.com

Не могли бы вы показать мне, как это сделать?Заранее спасибо

Вот контроллер для создания страниц и создания таблицы (без серийных номеров)

 function index(){

            $this->load->library('pagination');
            $this->load->library('table');
            $this->table->set_heading('Student ID','Student Name','Batch','Edit','Delete');

            $config['base_url'] = 'http://localhost/coaching/index.php/student_list/index';
            $config['total_rows'] = $this->db->get('student')->num_rows();
            $config['per_page'] = 15;
            $config['num_links'] = 20;
            $config['full_tag_open'] = '<div id="pagination" align="center">';
            $config['full_tag_close'] = '</div>';

            $this->pagination->initialize($config);
            $data['tab'] = "Student List";              
            $this->load->model('mod_studentlist');
            $data['records']= $this->mod_studentlist->student_list();
            $data['main_content']='studentlist';
            $this->load->view('includes/template',$data);

        }   

Вот моя модель

                function student_list()
    {   
        $config['per_page'] = 10;
        $this->db->select('studentid, studentname, batch');
        $this->db->order_by("studentid", "desc"); 
        $rows = $this->db->get('student',$config['per_page'],$this->uri->segment(3))->result_array();


        foreach ($rows as $count => $row)
            {
             $rows[$count]['studentname'] = anchor('student_list/get/'.$row['studentid'],$row['studentname']);
             $rows[$count]['Edit'] = anchor('update_student/update/'.$row['studentid'],'Update');
             $rows[$count]['Delete'] = anchor('report/'.$row['studentid'],'Delete');

            }
        return $rows;
    }

Вот мой взглядфайл

                 <?php echo $this->table->generate($records);?>
                    <?php  echo $this->pagination->create_links();?>
                    <script type="text/javascript" charset="utf-8">
                        $('tr:odd').css('background','#EAEAEA');
                        </script>

Ответы [ 3 ]

2 голосов
/ 17 сентября 2011

Вы должны создать переменную внутри функции вашей модели:

<?php
function student_list()
{   
    $config['per_page'] = 10;
    $this->db->select('studentid, studentname, batch');
    $this->db->order_by("studentid", "desc"); 
    $rows = $this->db->get('student',$config['per_page'],$this->uri->segment(3))->result_array();

    $sl = $this->uri->segment(3) + 1; // so that it begins from 1 not 0

    foreach ($rows as $count => $row)
        {
         array_unshift($rows[$count], $sl.'.');
         $sl = $sl + 1;

         $rows[$count]['studentname'] = anchor('student_list/get/'.$row['studentid'],$row['studentname']);
         $rows[$count]['Edit'] = anchor('update_student/update/'.$row['studentid'],'Update');
         $rows[$count]['Delete'] = anchor('report/'.$row['studentid'],'Delete');
        }
    return $rows;
}

и изменить ваш контроллер:

<?php
function index() {
    $this->load->library('pagination');
    $this->load->library('table');
    $this->table->set_heading('SL.', 'Student ID','Student Name','Batch','Edit','Delete');
    ....
0 голосов
/ 23 октября 2013

Вы думали сделать это на клиенте? библиотека javascript datatables великолепна. он может обрабатывать сортировку для вас на стороне пользователя и может быть сделан для динамического извлечения информации с использованием ajax, поэтому время загрузки для больших таблиц быстрое. для менее чем 100 строк или около того, вероятно, нет необходимости. у меня есть сортировка / фильтрация таблиц с> 100 000 строк без проблем вообще (с помощью ajax)

, если серийные номера не имеют семантического значения, не показывайте их клиенту. это просто больше материала для них, чтобы фильтровать. если они необходимы для вашего кода, но не для просмотра пользователем, просто спрячьте их в атрибуте data или что-то в этом роде.

0 голосов
/ 02 марта 2012

Codeigniter имеет большую библиотеку таблиц для отображения данных в формате HTML таблицы.Добавление серийного номера иногда требуется для таблицы, но MySQL не просто предоставляет номер строки, поэтому при использовании библиотеки таблиц эта функция добавляется для выполнения этой работы.

Вот код:

 /**  
    * Set the serial no  
    *  
    * Add serial no to left of table  
    *  
    * @access  public  
    * @param  mixed  
    * @return  mixed  
    */  
   function add_sr_no(&$arr)  
   {  if (!is_array($arr)) return $arr;  
     $i=1;  
     foreach ($arr as &$values) {        
       if (!is_array($values))  
         break;  
       else  
         array_unshift($values, $i++);  
     }      
     return $arr;  
   }  

Просто добавьте эти строки в table.php в библиотеке.Использование:

$rows = $query->result_array(); 
$this->table->add_sr_no($rows); 

Не забудьте добавить первый столбец 'Sr No' в set_heading.Читайте пост здесь .Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...