HTML 테이블(HTML Table Class)

Table 클래스는 데이터베이스나 배열로부터 HTML 테이블을 자동으로 생성할 수 있도록 해줍니다.

테이블 클래스 사용하기 Using the Table Class

클래스 초기화 Initializing the Class

다른 클래스들 처럼, Table 클래스도 컨트롤러에서 $this->load->library() 함수로 초기화 합니다:

$this->load->library('table');

일단 로드되면, 다음을 통해서 테이블 객체를 이용합니다:

$this->table

예제 Examples

이번 예제는 다차원 배열로부터 어떻게 테이블을 만드는지를 보여줍니다. 주의할점은 첫 번째 배열인덱스가 테이블의 제목(heading)이 된다는 점입니다. set_heading() 함수를 이용하면 여러분이 직접 제목을 작성하실수도 있습니다. 그 방법은 저 아래서 설명합니다.

$this->load->library('table');

$data = array(
        array('Name', 'Color', 'Size'),
        array('Fred', 'Blue', 'Small'),
        array('Mary', 'Red', 'Large'),
        array('John', 'Green', 'Medium')
);

echo $this->table->generate($data);

이번 예제는 데이터베이스 쿼리 결과로 테이블을 만드는 것을 보여줍니다.테이블 클래스는 테이블 이름들로부터 제목(heading)을 자동으로 설정합니다. set_heading() 함수를 이용하면 여러분이 직접 제목을 작성하실수도 있습니다. 그 방법은 저 아래서 설명합니다.

$this->load->library('table');

$query = $this->db->query('SELECT * FROM my_table');

echo $this->table->generate($query);

이번 예제는 각각의 파라미터를 이용해서 테이블을 만드는법을 보여줍니다:

$this->load->library('table');

$this->table->set_heading('Name', 'Color', 'Size');

$this->table->add_row('Fred', 'Blue', 'Small');
$this->table->add_row('Mary', 'Red', 'Large');
$this->table->add_row('John', 'Green', 'Medium');

echo $this->table->generate();

이번예제는 위와 유사하나 개별파라미터가 아닌 배열을 통해 테이블을 만드는법을 보여줍니다:

$this->load->library('table');

$this->table->set_heading(array('Name', 'Color', 'Size'));

$this->table->add_row(array('Fred', 'Blue', 'Small'));
$this->table->add_row(array('Mary', 'Red', 'Large'));
$this->table->add_row(array('John', 'Green', 'Medium'));

echo $this->table->generate();

테이블의 모양 변경 Changing the Look of Your Table

여러분이 원하는 레이아웃에 맞추어 테이블 템플릿을 설정할 수 있습니다. 아래는 기본적인 테이블 템플릿 설정 예제입니다.

$template = array(
        'table_open'            => '<table border="0" cellpadding="4" cellspacing="0">',

        'thead_open'            => '<thead>',
        'thead_close'           => '</thead>',

        'heading_row_start'     => '<tr>',
        'heading_row_end'       => '</tr>',
        'heading_cell_start'    => '<th>',
        'heading_cell_end'      => '</th>',

        'tbody_open'            => '<tbody>',
        'tbody_close'           => '</tbody>',

        '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($template);

Note

템플릿블록안에는 두 세트의 “row” 블록이 있다는 것을 알 수 있습니다. 이렇게하면 한 줄(row)마다 반복되는 다른 색 혹은 디자인을 적용할 수 있습니다.(예를 들어 첫줄 빨간색, 둘째줄 파란색, 셋째줄 빨간색, 네째줄 파란색 .......... 이런식 )

완벽한 구조의 템플릿을 만들필요는 없습니다. 테이블의 일부분만 바꾸고싶다면, 그부분만 템플릿을 만들면 됩니다. 이번예제는 테이블을 여는 태그만 바뀌게 됩니다:

$template = array(
        'table_open' => '<table border="1" cellpadding="2" cellspacing="1" class="mytable">'
);

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

환경설정 파일에서 기본값을 설정하실 수 있습니다.

클래스 레퍼런스 Class Reference

class CI_Table
$function = NULL

PHP 내장함수 또는 유효한 함수 배열 객체가 모든 셀 데이터에 적용될 수 있습니다.

$this->load->library('table');

$this->table->set_heading('Name', 'Color', 'Size');
$this->table->add_row('Fred', '<strong>Blue</strong>', 'Small');

$this->table->function = 'htmlspecialchars';
echo $this->table->generate();

위 예제에서는, 모든 셀 데이터가 PHP의 htmlspecialchars() 함수를 통해 결과를 출력합니다:

<td>Fred</td><td>&lt;strong&gt;Blue&lt;/strong&gt;</td><td>Small</td>
generate([$table_data = NULL])
인수:
  • $table_data (mixed) – Data to populate the table rows with
반환값:

HTML table

반환형:

문자열

생성된 테이블을 포함한 문자열을 리턴합니다. 배열이나 데이터베이스 결과 객체를 파라미터로 받습니다.

set_caption($caption)
인수:
  • $caption (string) – Table caption
반환값:

CI_Table instance (method chaining)

반환형:

CI_Table

테이블의 캡션을 설정합니다.

$this->table->set_caption('Colors');
set_heading([$args = array()[, ...]])
인수:
  • $args (mixed) – An array or multiple strings containing the table column titles
반환값:

CI_Table instance (method chaining)

반환형:

CI_Table

테이블의제목(heading)을 설정합니다. 배열이나, 각각의 제목을 파라미터로 넘겨줄 수 있습니다:

$this->table->set_heading('Name', 'Color', 'Size');

$this->table->set_heading(array('Name', 'Color', 'Size'));
add_row([$args = array()[, ...]])
인수:
  • $args (mixed) – An array or multiple strings containing the row values
반환값:

CI_Table instance (method chaining)

반환형:

CI_Table

한 줄(row)을 테이블에 추가합니다. 배열이나 혹은 각 값을 넘겨줄 수 있습니다:

$this->table->add_row('Blue', 'Red', 'Green');

$this->table->add_row(array('Blue', 'Red', 'Green'));

각 셀의 태그에 속성을 부여하려면 연관배열을 사용하세요. 데이터를 채우려면 data 키를 사용하시고, 다른 키들은 모두 key=’값’ 의 형식으로 추가됩니다:

$cell = array('data' => 'Blue', 'class' => 'highlight', 'colspan' => 2);
$this->table->add_row($cell, 'Red', 'Green');

// generates
// <td class='highlight' colspan='2'>Blue</td><td>Red</td><td>Green</td>
make_columns([$array = array()[, $col_limit = 0]])
인수:
  • $array (array) – An array containing multiple rows’ data
  • $col_limit (int) – Count of columns in the table
반환값:

An array of HTML table columns

반환형:

array

이 함수는 1차원 배열을 받아서 원하는 칼럼수에 맞추어 다차원배열을 생성합니다. 이 함수를 통해서 값은 1차원배열인데, 표현하고자 하는 칼럼의 개수가 그것보다 작은경우를 효과적으로 처리할 수 있습니다. 아래 예제를 보시면 이해가 쉬우실거예요:

$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);

// Generates a table with this prototype

<table border="0" cellpadding="4" cellspacing="0">
<tr>
<td>one</td><td>two</td><td>three</td>
</tr><tr>
<td>four</td><td>five</td><td>six</td>
</tr><tr>
<td>seven</td><td>eight</td><td>nine</td>
</tr><tr>
<td>ten</td><td>eleven</td><td>twelve</td></tr>
</table>
set_template($template)
인수:
  • $template (array) – An associative array containing template values
반환값:

TRUE on success, FALSE on failure

반환형:

bool

여러분이 만든 템플릿을 적용할 수 있도록 해 줍니다. 전체템플릿이나, 부분템플릿을 적용하실 수 있습니다.

$template = array(
        'table_open'  => '<table border="1" cellpadding="2" cellspacing="1" class="mytable">'
);

$this->table->set_template($template);
set_empty($value)
인수:
  • $value (mixed) – Value to put in empty cells
반환값:

CI_Table instance (method chaining)

반환형:

CI_Table

테이블셀의 값이 없을 경우 기본값을 설정할 수 있습니다. 예를 들어 아래와 같이 한칸의 공백을 표시하는 예약어를 기본값으로 설정할 수 있습니다:

$this->table->set_empty("&nbsp;");
clear()
반환값:CI_Table instance (method chaining)
반환형:CI_Table

테이블의 제목과 데이터를 모두 비웁니다. 포함하고 있는 데이터가 다른 여러 테이블을 보여줘야 할 경우 이전 테이블의 데이터를 비우는데 사용합니다. 예제:

$this->load->library('table');

$this->table->set_heading('Name', 'Color', 'Size');
$this->table->add_row('Fred', 'Blue', 'Small');
$this->table->add_row('Mary', 'Red', 'Large');
$this->table->add_row('John', 'Green', 'Medium');

echo $this->table->generate();

$this->table->clear();

$this->table->set_heading('Name', 'Day', 'Delivery');
$this->table->add_row('Fred', 'Wednesday', 'Express');
$this->table->add_row('Mary', 'Monday', 'Air');
$this->table->add_row('John', 'Saturday', 'Overnight');

echo $this->table->generate();