Listas simples enlazadas jquery
De KumbiaPHP Framework Wiki
Revisión del 06:25 30 sep 2009 de Fidelio (discusión | contribuciones) (Página creada con '== Listas Enlazadas de tres niveles == Para nuestro ejemplos vamos a utilizar listas simples [http://es.wikipedia.org/wiki/Lista_(inform%C3%A1tica)#Listas_simples_enlazadas] con...')
Listas Enlazadas de tres niveles
Para nuestro ejemplos vamos a utilizar listas simples [1] con 3 niveles, Regiones, Comunas y Ciudades.
Requerimientos
- Cambiar autocarga de los modelos
Editamos el archivo config.ini y modificamos models_autoload = On por models_autoload = Off
- incluir libreria jquery
Editamos el template activo y adicionamos esta linea
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
Tablas
#
# Table structure for table 'regiones'
#
# DROP TABLE IF EXISTS regiones;
CREATE TABLE `regiones` (
`id` int(4) NOT NULL auto_increment,
`nombre` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;
#
# Dumping data for table 'regiones'
#
INSERT INTO regiones VALUES (1,'Primera Region');
INSERT INTO regiones VALUES (3,'Tercera Region');
INSERT INTO regiones VALUES (2,'Segunda Region');
#
# Table structure for table 'comunas'
#
# DROP TABLE IF EXISTS comunas;
CREATE TABLE `comunas` (
`id` int(4) NOT NULL auto_increment,
`regiones_id` int(4) NOT NULL,
`nombre` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;
#
# Dumping data for table 'comunas'
#
INSERT INTO comunas VALUES (4,3,'Primera Comuna');
INSERT INTO comunas VALUES (3,2,'Primera Comuna');
INSERT INTO comunas VALUES (2,1,'Segunda Comuna');
INSERT INTO comunas VALUES (1,1,'Primera Comuna');
#
# Table structure for table 'ciudades'
#
# DROP TABLE IF EXISTS ciudades;
CREATE TABLE `ciudades` (
`id` int(4) NOT NULL auto_increment,
`comunas_id` int(4) NOT NULL,
`nombre` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=latin1;
#
# Dumping data for table 'ciudades'
#
INSERT INTO ciudades VALUES (6,3,'Tercera Ciudad');
INSERT INTO ciudades VALUES (5,3,'Segunda Ciudad');
INSERT INTO ciudades VALUES (4,3,'Primera Ciudad');
INSERT INTO ciudades VALUES (3,2,'Segunda Ciudad');
INSERT INTO ciudades VALUES (2,2,'Primera Ciudad');
INSERT INTO ciudades VALUES (1,1,'Primera Ciudad');
Ejemplo
- clientes_controller.php
<?php
class ClientesController extends ApplicationController{
public function index() {
}
public function create(){
Load::model('clientes');
Load::model('regiones');
if($this->has_post('clientes')){
//SUBMIT
}
}
public function getComunas($regiones_id = 0){
Load::model('comunas');
$this->set_response('view');
$this->regiones_id = $regiones_id;
}
public function getCiudades($comunas_id = 0){
Load::model('ciudades');
$this->set_response('view');
$this->comunas_id = $comunas_id;
}
}
?>
- create.phtml
<?php View::content(); ?>
<?php echo form_tag("$controller_name/$action_name"); ?>
<table id='table_forms'>
<tr>
<th>Región</th>
<td>
<?php
echo select_tag(array('clientes.regiones_id',
'order' => 'nombre',
'Regiones', 'option' => 'nombre',
'include_blank' => 'Seleccione...'));
?>
</td>
</tr>
<tr>
<th>Comuna</th>
<td><div id='div_comunas'></div><td>
</tr>
<tr>
<th>Ciudad</th>
<td><div id='div_ciudades'></div></td>
</tr>
<tr>
<td colspan="2" align="center"><?php echo submit_tag('Agregar')?></td>
</tr>
</table>
<?php echo end_form_tag(); ?>
<script type='text/javascript'>
$("#clientes_regiones_id").change(function(){
var regiones_id = document.getElementById('clientes_regiones_id').value;
url = "<?php echo get_kumbia_url('regiones/getComunas/'); ?>" + regiones_id;
$("#div_comunas").load(url);
});
</script>
- getComunas.phtml
<?php
echo select_tag(array("clientes.comunas_id",
'order' => 'nombre',
'Comunas', 'option' => 'nombre',
'conditions' => "regiones_id = $regiones_id",
'include_blank' => 'Seleccione...'));
?>
<script type='text/javascript'>
$("#clientes_comunas_id").change(function(){
var comunas_id = document.getElementById('clientes_comunas_id').value;
url = "<?php echo get_kumbia_url('regiones/getCiudades/'); ?>" + comunas_id;
$("#div_ciudades").load(url);
});
</script>
- getCiudades.phtml
<?php
echo select_tag(array('clientes.ciudades_id',
'order' => 'nombre',
'Ciudades', 'option' => 'nombre',
'conditions' => "comunas_id = $comunas_id",
'include_blank' => 'Seleccione...'));
?>