Diferencia entre revisiones de «Usuario discusión:J053D»

De KumbiaPHP Framework Wiki
(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.