2010/02/09

[CodeIgniter] Table Library

以往在使用表格輸出資料的時候,都得打一堆<TR><TD>這種東西
不小心少打還會讓表格歪掉;
現在使用CI的Table Library,可藉由傳入一個陣列就可簡單的產生表格。

載入Library
$this->load->library('table');
要用之前要先載入,載入後以 $this->table->函式(); 形式使用

產生表格

Namesexage
Alexmale23
Brianmale30
ChangFemale28
Dannymale40

以上表為例,陣列如下(我懶得加引號XD)
$ary = array( array( name , sex , age ),
 array( Alex, male , 23 ),
 array( Brain, male , 30 ),
 array( Chang , Female , 28 ),
 array( Danny , Male , 40)
);

說穿了就是表格一行就是一個陣列,之後把它丟到generate
$this->table->generate($ary);
就會自己生HTML CODE了。

另外還有一個很變態的好用方法,他可以直接吃DB查詢後的結果
$this->load->library('table');
$query = $this->db->query("SELECT * FROM my_table");
echo $this->table->generate($query);
直接把QUERY的結果丟給他就可以產生表格了,非常的好用!

改變外觀
因為預設的樣子很醜,不能改外觀也沒人會想用,以下是官方說明文件的範例
$tmpl = array (
 'table_open' => '<table border="0" cellpadding="4" cellspacing="0" class='myTable' >',
 'heading_row_start' => '<tr>',
 'heading_row_end' => '</tr>',
 'heading_cell_start' => '<th>',
 'heading_cell_end' => '</th>',
 'row_start' => '<tr>',
 'row_end' => '</tr>',
 'cell_start' => '<td>',
 'cell_end' => '</td>',
 'row_alt_start' => '<tr>',
 'row_alt_end' => '</tr>',
 'cell_alt_start' => '<td>',
 'cell_alt_end' => '</td>',
 'table_close' => '</table>'
);

$this->table->set_template($tmpl); 

常用的應該只有第一行的 table_open,只要設定表格的ID或CSS
其餘使用CSS來設計即可。

一長串資料轉多行表格
如果要生表格的資料是屬於一維然後落落長的格式,可以使用這個讓它自己換行
$this->table->make_columns( 資料陣列 , 一行有幾個 );

範例:
$list = array('one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten', 'eleven', 'twelve');
$new_list = $this->table->make_columns($list,3);
$this->table->generate($new_list);
onetwothree
fourfivesix
seveneightnine
teneleventwelve


可惜的是,目前沒看到怎麼讓他產生rowspan 或 colspan 的東東。

沒有留言:

張貼留言