CodeIgniter User Guide Version 1.6.1


Clase de Tabla HTML

La Clase de Tabla provee funciones que le permite autogenerar una tabla HTML desde arreglos o juegos de resultados de base de datos.

Inicializando la Clase

Como la mayoría de las otras clases en CodeIgniter, la clase de Tabla es inicializada en su controlador usando la función $this->load->library:

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

Una vez cargada, el objeto de la librería de Tabla estará disponible usando $this->table

Ejemplos

Aquí hay un ejemplo mostrando como puede crear una tabla usando arreglos multidimensionales. Note que el primer índice del arreglo será el encabezado de la tabla (o puede establecer sus propios encabezazdos usando la función set_heading() descrita en la referencia de funciones debajo).

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

$data = array(
             array('Nombre', 'Color', 'Tamaño'),
             array('Fred', 'Azul', 'Pequeño'),
             array('Mary', 'Rojo', 'Grande'),
             array('John', 'Verde', 'Mediano')
             );

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

Aquí hay un ejemplo de una tabla creada desde un resultado de una consulta a la base de datos. La clase de tabla generará los encabezados basados en el nombre de la tabla (o puede establecer sus propios encabezados usando la función set_heading() descrita en la referencia de funciones debajo).

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

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

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

Aquí hay un ejemplo mostrando como puede crear una tabla usando parámetros discretos:

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

$this->table->set_heading('Nombre', 'Color', 'Tamaño');

$this->table->add_row('Fred', 'Azul', 'Pequeño');
$this->table->add_row('Mary', 'Rojo', 'Grande');
$this->table->add_row('John', 'Verde', 'Mediano');

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

Aquí está el mismo ejemplo, excepto que en vez de parámetros individuales, se usan arreglos:

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

$this->table->set_heading(array('Nombre', 'Color', 'Tamaño'));

$this->table->add_row(array('Fred', 'Azul', 'Pequeño'));
$this->table->add_row(array('Mary', 'Rojo', 'Grande'));
$this->table->add_row(array('John', 'Verde', 'Mediano'));

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

Cambiando Como se ve su Tabla

La Clase de Tabla le permite establecer una plantilla de tabla con la cual puede especificar el diseño. Aquí hay un prototipo de plantilla:

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

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

Nota:  Notará que hay dos juegos de bloques de "fila" en la plantilla. Esto le permite crear alternativamente colores de fila o diseños de elementos que alternen en cada iteración de los datos de fila.

NO requiere que envíe un template completo. Si sólo necesita cambiar partes del diseño puede simplemente enviar esos elementos. En este ejemplo, sólo la etiqueta de apertura de tabla es cambiada:

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

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

Referencia de función

$this->table->generate()

Devuelve una cadena que contiene la tabla generada. Acepta un parámetro opcional que puede ser un arreglo o un objeto de resultado de base de datos.

$this->table->set_caption()

Permite agregar un "caption" a la tabla.

$this->table->set_caption('Colores');

$this->table->set_heading()

Permite establecer el encabezado de la tabla. Puede enviar un arreglo o parámetros discretos:

$this->table->set_heading('Nombre', 'Color', 'Tamaño'); $this->table->set_heading(array('Nombre', 'Color', 'Tamaño'));

$this->table->add_row()

Le permite agregar una fila a su tabla. Puede enviar un arreglo o parámetros discretos:

$this->table->add_row('Azul', 'Rojo', 'Verde'); $this->table->add_row(array('Azul', 'Rojo', 'Verde'));

$this->table->make_columns()

Esta función toma un arreglo unidimensional como entrada y crea un arreglo multidimensional con una profundidad igual al número de columnas deseadas. Esto permite a un simple arreglo con varios elementos ser mostrado en una tabla que tiene una cantidad fija de columnas. Considere este ejemplo:

$lista = array('uno', 'dos', 'tres', 'cuatro', 'cinco', 'seis', 'siete', ocho', 'nueve', 'diez', 'once', 'doce');

$nueva_lista = $this->table->make_columns($lista, 3);

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

// Genera una tabla con este prototipo

<table border="0" cellpadding="4" cellspacing="0">
<tr>
<td>uno</td><td>dos</td><td>tres</td>
</tr><tr>
<td>cuatro</td><td>cinco</td><td>seis</td>
</tr><tr>
<td>siete</td><td>ocho</td><td>nueve</td>
</tr><tr>
<td>diez</td><td>once</td><td>doce</td></tr>
</table>

$this->table->set_template()

Le permite establece su plantilla. Puede enviar una plantilla total o parcial.

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

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

$this->table->set_empty()

Le permite establecer un valor por defecto para usar en cualquier celda de la tabla que esté vacía. Puede, por ejemplo, establecer un espacio sin quiebre (non-breaking space):

$this->table->set_empty("&nbsp;");

$this->table->clear()

Le permite limpiar el encabezado y filas de datos. Si necesita mostrar múltiples tablas con diferentes datos debería llamar a esta función después de que cada tabla ha sido generada para vaciar la información de la tabla previa. Ejemplo:

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

$this->table->set_heading('Nombre', 'Color', 'Tamaño');
$this->table->add_row('Fred', 'Azul', 'Pequeño');
$this->table->add_row('Mary', 'Rojo', 'Grande');
$this->table->add_row('John', 'Verde', 'Mediano');

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

$this->table->clear();

$this->table->set_heading('Nombre', 'Día', 'Envío');
$this->table->add_row('Fred', 'Miércoles', 'Expreso');
$this->table->add_row('Mary', 'Lunes', 'Aéreo');
$this->table->add_row('John', 'Sábado', 'De la noche a la mañana');

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