Diferencia entre revisiones de «Usuario discusión:J053D»
(Cargar una lista de Check de un array() y Guardarlos en una base de datos) |
|||
Línea 8: | Línea 8: | ||
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). | 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). | ||
+ | <source lang=mysql> | ||
CREATE TABLE `ejemplo`.`listas` ( | CREATE TABLE `ejemplo`.`listas` ( | ||
`id` int(4) NOT NULL AUTO_INCREMENT, | `id` int(4) NOT NULL AUTO_INCREMENT, | ||
Línea 16: | Línea 17: | ||
ENGINE = InnoDB | ENGINE = InnoDB | ||
CHARACTER SET utf8 COLLATE utf8_general_ci; | CHARACTER SET utf8 COLLATE utf8_general_ci; | ||
+ | </source> | ||
Los archivos para el MVC (Modelo-Vista-Controlador) son los siguientes: | Los archivos para el MVC (Modelo-Vista-Controlador) son los siguientes: | ||
'''El Modelo: [app]/models/listas.php''' | '''El Modelo: [app]/models/listas.php''' | ||
+ | <source lang=php> | ||
<?php | <?php | ||
class Listas extends ActiveRecord{ | class Listas extends ActiveRecord{ | ||
Línea 42: | Línea 45: | ||
} | } | ||
?> | ?> | ||
− | + | </source> | |
'''La Vista: [app]/views/listas/index.phtml''' | '''La Vista: [app]/views/listas/index.phtml''' | ||
+ | <source lang=php> | ||
<?php View::content(); ?> | <?php View::content(); ?> | ||
<div id="contenedor-lista"> | <div id="contenedor-lista"> | ||
Línea 68: | Línea 72: | ||
</div> | </div> | ||
</div> | </div> | ||
− | + | </source> | |
'''El Controlador: [app]/controllers/listas_controller.php''' | '''El Controlador: [app]/controllers/listas_controller.php''' | ||
+ | <source lang=php> | ||
<?php | <?php | ||
Load::model('listas'); | Load::model('listas'); | ||
Línea 83: | Línea 88: | ||
} | } | ||
?> | ?> | ||
+ | </source> | ||
Posteriormente seguido de este primer ejemplo se anexara otro que cargara una lista de Checkbox desde la Base de Datos directamente. | Posteriormente seguido de este primer ejemplo se anexara otro que cargara una lista de Checkbox desde la Base de Datos directamente. |
Revisión actual del 00:26 18 may 2010
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.