Usuario discusión:J053D

De KumbiaPHP Framework Wiki

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.