Usuario discusión:J053D

De KumbiaPHP Framework Wiki
Revisión del 00:23 18 may 2010 de J053D (discusión | contribuciones) (Cargar una lista de Check de un array() y Guardarlos en una base de datos)
(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)

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'; } ?>
  1. <?php echo checkbox_field_tag("listas[$key]", "value: $value", $checked);?> <label for="listas[<?php echo $key ;?>]"><?php echo $value; ?></label>
  2. <?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.