Usuario discusión:J053D
Carga de Lista de Checkbox's e ingreso en la Base de Datos
Esta es una practica que consta de cargar varios Check desde un array() y por medio de un boton, Guardar estos item (check).
La tabla de la base de datos para este ejemplo sera esta: (tabla vacia) donde "ejemplo" es el nombre de la base de datos y "listas" la tabla. Si dispones de otra base de datos de pruebas/practicas puedes dejarlo solo como CREATE TABLE `listas` o en todo caso, crear tu mismo los campos.
Esta practica muestra varios checkbox provenientes desde un array(), en base a los tildados o no tildados al guardar su estado por medio de un boton Guardar. El campo numerico (int) "seleccionado" de la base de datos sera 1 (tildado) o 0 (no tildado).
CREATE TABLE `ejemplo`.`listas` (
`id` int(4) NOT NULL AUTO_INCREMENT, `nombre` varchar(100) NOT NULL, `seleccionado` TINYINT(1) NOT NULL, PRIMARY KEY (`id`)
) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci;
Los archivos para el MVC (Modelo-Vista-Controlador) son los siguientes:
El Modelo: [app]/models/listas.php <?php class Listas extends ActiveRecord{ public function getLists(){ return array('item uno', 'item dos', 'item tres'); } public function crear($listas){ $this->update_all('seleccionado=0'); foreach($listas as $key => $value){ $this->find_first("nombre='$value'"); $this->nombre = $value; $this->seleccionado = 1; $this->save(); } } public function checked($value){ if($this->find_first("nombre='$value' and seleccionado=1")){ return true; } return false; } } ?>
La Vista: [app]/views/listas/index.phtml
<?php View::content(); ?>
Listado
<?php echo form_tag('listas/index'); ?>
<?php echo hidden_field_tag('aux'); ?>
-
<?php foreach($listas->getLists() as $key => $value):
$checked = ;
if($listas->checked($value)){
$checked = 'checked: true';
}
?>
- <?php echo checkbox_field_tag("listas[$key]", "value: $value", $checked);?> <label for="listas[<?php echo $key ;?>]"><?php echo $value; ?></label> <?php endforeach; ?>
<?php echo submit_tag('Guardar','class: boton'); ?> <?php echo end_form_tag(); ?>
El Controlador: [app]/controllers/listas_controller.php
<?php
Load::model('listas');
class ListasController extends ApplicationController{
public function index(){
Flash::notice('Listas');
$this->listas = new Listas();
if($this->has_post('aux')){
$this->listas->crear($this->post('listas'));
}
}
}
?>
Posteriormente seguido de este primer ejemplo se anexara otro que cargara una lista de Checkbox desde la Base de Datos directamente.