Problema con select_tag y base de datos

edited abril 2011 in Beta1
Hola, gracias por tomarse el tiempo de leer esta entrada.

Sucede que tengo un formulario para el registro de usuarios en el cual se tiene que especificar la localidad de la persona (país, departamento y ciudad), para esto conseguí y cargue una base de datos con ciudades en mi proyecto y mediante esta etiqueta intento traer los datos que están en la base de datos al formulario para que los usuarios simplemente elijan la ciudad donde viven.

El problema es que los paises se cargan desde la base de datos pero no habilita los otros select_tag, los de departamento y ciudad.

Siguiendo un ejemplo de listas enlazadas simples para kumbia, procedí a la creación de tres modelos: País, Departamento y Ciudad.

En el controlador usuario_controller.php, cargo los modelos:

Load::models('usuario','regiones','comunas','ciudades');

y creo estas funciones:

public function getDepartamento(){
$this -> set_response('view');
$departamento = new Departamento();
$this -> departamento = $departamento -> buscar($this -> post('pais_id'));
}

// Obtiene la lista de ciudades presentes en la BD
public function getCiudad(){
// similar a departamentos
}

y en la vista crear.phtml
...


<?= select_tag(array('pais_id',
$pais, 'option' => 'pais_nombre',
'include_blank' => 'Seleccione...')); ?>


...
esta función se encarga de habilitar el siguiente select_tag

$(document).ready(function() {
$("#pais").change(function() {
var pais_id = $('#pais').val();
$.ajax({
type: "POST",
url : "<?php echo PUBLIC_PATH . 'usuario/getDepartamento/'; ?>",
data: "pais_id=" + pais_id,
success: function(html) {
$("#departamento").html(html);
}
});
});
});

en getDepartamento.phtml

<?php
echo select_tag(array("departamento_id",
'Departamento',
'option' => 'departamento_nombre',
'include_blank'=> 'Seleccione...'));
?>

Se que me extendí mucho y que es tedioso de leer, pero pensé que así sería mas claro, me disculpo de antemano y
les agradezco cualquier ayuda.

Comentarios

  • edited 8:18
    yo me perdi.
    pero cual es el error ?
    por que no diagnosticas poco a poco y vas viendo que devuelve cada cosa ?
  • edited 8:18
    Hola gracias por contestar tan rápido.

    Bueno tienes razón leyendo otra vez me dí cuenta de que no dije cual era el problema, mil disculpas, ahora lo re-edito. Pero bueno, el select_tag de países se trae todos los países desde la base de datos, el problema es que no se activa el siguiente select_tag que carga los departamentos. Ahora bien, la función que se encarga de habilitar el segundo select_tag es esta ubicada en localidad.phtml (partial) y aquí surge otra pregunta, puedo tener mas de una función ajax en el mismo partial, sin que entren en conflicto.

    Nuevamente gracias por cualquier ayuda.
  • edited 8:18
    por que iban a entrar en conflicto ?
    has probado a hacerlo sin ajax evaluando si merece la pena, en velocidad, tiempo y esfuerzo ?
    yo antes hacia todo con una buena dosis de ajax, pero me di cuenta que era como 10 veces mas lento programando y la aplicacion no ganaba velocidad, incluso perdia estabilidad.
  • edited 8:18
    hola, gracias por tomarte el tiempo de contestar mis preguntas.

    estuve testeando la función ajax y lo que pasa es que captura el id del país seleccionado pero por alguna razón, no llega a getDepartamento.

    Y siguiendo tu consejo estoy mirando como hacer esto con javascript.
  • edited 8:18
    firebug o dragonfly son muy buenas herramientas para hacer debug al frontend
    considero que es un erro de paso de parámetros, habría que ver el debug de la vista
  • edited mayo 2011
    Hola, gracias por tu ayuda, me tome la tarea de mirar que pasaba con ayuda de firebug y termine dando con el problema el cual era un error en el nombre de la tabla de la base de datos, eso era lo que se tiraba todo.

    Bueno ahora tengo otro problema, ya conseguí que se cargue la información de las tablas de la BD a los select_tag, pero pasa que cuando el usuario llena el formulario y selecciona la localidad, cuando se envía el formulario la información de este no se guarda en la BD porque del select_tag no se envía el id seleccionado.

    Agradezco cualquier ayuda.

    Nota: El select_tag es cargado por medio de ajax, siendo asi el código se carga dinámicamente por lo tanto el el id de la ciudad no se selecciona en el formulario sino en la vista donde se implemente el seleleg_tag, mi pregunta es como enviar ese id al controlador cuando se envía el formulario.
  • edited mayo 2011
    .
Sign In or Register to comment.