Usuario discusión:J053D
Carga de Lista de Checkbox's e ingreso en la Base de Datos[editar]
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(); ?>
<div id="contenedor-lista">
<div id="lista">
<h3>Listado</h3>
<?php echo form_tag('listas/index'); ?>
<?php echo hidden_field_tag('aux'); ?>
<ol>
<?php foreach($listas->getLists() as $key => $value):
$checked = '';
if($listas->checked($value)){
$checked = 'checked: true';
}
?>
<li>
<?php echo checkbox_field_tag("listas[$key]", "value: $value", $checked);?>
<label for="listas[<?php echo $key ;?>]"><?php echo $value; ?></label>
</li>
<?php endforeach; ?>
</ol>
<?php echo submit_tag('Guardar','class: boton'); ?>
<?php echo end_form_tag(); ?>
</div>
</div>
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.